30 jeux Python. Je peux jouer à la pêche au travail pendant une journée.

Cinq paquets de spaghettis! 2021-10-29 03:44:57
jeux python. python je peux

Bonjour tout le monde,Je suis hottie..

Pour vous tous aujourd'hui30- Oui.pyPetits jeux,Assurez - vous de recueillir!

Table des matières

Avec les mains.

1、Manger des pièces d'or

2、Jouer au ping - pong

3、Ski

4、Et la bataille de l'avion du soir

5、Ground Mouse

Simple.

6、Petit dinosaure

7、Xiaoxiaole

8、Tetris

9、Avide de serpents

Vulgaris

10、24Un petit jeu.

11、Bois d'équilibre

12、Invasion extraterrestre

13、Oiseaux avides

14、Seiki888‘’

C'est un peu difficile.

15、Bombardier

16、Défendre la forêt

17、Cinq échecs

18、Manger des haricots

19、Bataille de chars

20、Super Mary

21、Fruit Ninja

Extrêmement difficile

22、La guerre des avions

23、2048

24、Pousse la boîte.

25、Tour de défense

26、Les plantes combattent les zombies

27、Déminage

Le défi ultime 

28、Puzzle

 29、Dans le labyrinthe.

30、Le jeu le plus fort


Avec les mains.

1、Manger des pièces d'or

【La série n'introduit pas le jeu+Source jointe】

Partage des sources:
 

import os
import cfg
import sys
import pygame
import random
from modules import *
'''Initialisation du jeu'''
def initGame():
    # Initialisationpygame, Définir la fenêtre d'affichage
    pygame.init()
    screen = pygame.display.set_mode(cfg.SCREENSIZE)
    pygame.display.set_caption('catch coins —— Neuf chansons')
    # Charger le matériel de jeu nécessaire
    game_images = {}
    for key, value in cfg.IMAGE_PATHS.items():
        if isinstance(value, list):
            images = []
            for item in value: images.append(pygame.image.load(item))
            game_images[key] = images
        else:
            game_images[key] = pygame.image.load(value)
    game_sounds = {}
    for key, value in cfg.AUDIO_PATHS.items():
        if key == 'bgm': continue
        game_sounds[key] = pygame.mixer.Sound(value)
    # Renvoie les données d'initialisation
    return screen, game_images, game_sounds
'''Fonction principale'''
def main():
    # Initialisation
    screen, game_images, game_sounds = initGame()
    # Jouer de la musique de fond
    pygame.mixer.music.load(cfg.AUDIO_PATHS['bgm'])
    pygame.mixer.music.play(-1, 0.0)
    # Chargement des polices
    font = pygame.font.Font(cfg.FONT_PATH, 40)
    # Définitionhero
    hero = Hero(game_images['hero'], position=(375, 520))
    # Définir les groupes alimentaires
    food_sprites_group = pygame.sprite.Group()
    generate_food_freq = random.randint(10, 20)
    generate_food_count = 0
    # Score actuel/La plus haute note de l'histoire
    score = 0
    highest_score = 0 if not os.path.exists(cfg.HIGHEST_SCORE_RECORD_FILEPATH) else int(open(cfg.HIGHEST_SCORE_RECORD_FILEPATH).read())
    # La boucle principale du jeu
    clock = pygame.time.Clock()
    while True:
        # --Remplir l'arrière - plan
        screen.fill(0)
        screen.blit(game_images['background'], (0, 0))
        # --Compte à rebours
        countdown_text = 'Count down: ' + str((90000 - pygame.time.get_ticks()) // 60000) + ":" + str((90000 - pygame.time.get_ticks()) // 1000 % 60).zfill(2)
        countdown_text = font.render(countdown_text, True, (0, 0, 0))
        countdown_rect = countdown_text.get_rect()
        countdown_rect.topright = [cfg.SCREENSIZE[0]-30, 5]
        screen.blit(countdown_text, countdown_rect)
        # --Détection des touches
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
        key_pressed = pygame.key.get_pressed()
        if key_pressed[pygame.K_a] or key_pressed[pygame.K_LEFT]:
            hero.move(cfg.SCREENSIZE, 'left')
        if key_pressed[pygame.K_d] or key_pressed[pygame.K_RIGHT]:
            hero.move(cfg.SCREENSIZE, 'right')
        # --Produire des aliments au hasard
        generate_food_count += 1
        if generate_food_count > generate_food_freq:
            generate_food_freq = random.randint(10, 20)
            generate_food_count = 0
            food = Food(game_images, random.choice(['gold',] * 10 + ['apple']), cfg.SCREENSIZE)
            food_sprites_group.add(food)
        # --Mise à jour de la nourriture
        for food in food_sprites_group:
            if food.update(): food_sprites_group.remove(food)
        # --Détection des collisions
        for food in food_sprites_group:
            if pygame.sprite.collide_mask(food, hero):
                game_sounds['get'].play()
                food_sprites_group.remove(food)
                score += food.score
                if score > highest_score: highest_score = score
        # --La peinturehero
        hero.draw(screen)
        # --Dessiner de la nourriture
        food_sprites_group.draw(screen)
        # --Afficher les scores
        score_text = f'Score: {score}, Highest: {highest_score}'
        score_text = font.render(score_text, True, (0, 0, 0))
        score_rect = score_text.get_rect()
        score_rect.topleft = [5, 5]
        screen.blit(score_text, score_rect)
        # --Déterminer si le jeu est terminé
        if pygame.time.get_ticks() >= 90000:
            break
        # --Mise à jour de l'écran
        pygame.display.flip()
        clock.tick(cfg.FPS)
    # Fin du jeu, Enregistrer le score maximum et afficher l'écran de fin de jeu
    fp = open(cfg.HIGHEST_SCORE_RECORD_FILEPATH, 'w')
    fp.write(str(highest_score))
    fp.close()
    return showEndGameInterface(screen, cfg, score, highest_score)
'''run'''
if __name__ == '__main__':
    while main():
        pass

2、Jouer au ping - pong

Partage des sources:


import sys
import cfg
import pygame
from modules import *
'''Définir le bouton'''
def Button(screen, position, text, button_size=(200, 50)):
left, top = position
bwidth, bheight = button_size
pygame.draw.line(screen, (150, 150, 150), (left, top), (left+bwidth, top), 5)
pygame.draw.line(screen, (150, 150, 150), (left, top-2), (left, top+bheight), 5)
pygame.draw.line(screen, (50, 50, 50), (left, top+bheight), (left+bwidth, top+bheight), 5)
pygame.draw.line(screen, (50, 50, 50), (left+bwidth, top+bheight), (left+bwidth, top), 5)
pygame.draw.rect(screen, (100, 100, 100), (left, top, bwidth, bheight))
font = pygame.font.Font(cfg.FONTPATH, 30)
text_render = font.render(text, 1, (255, 235, 205))
return screen.blit(text_render, (left+50, top+10))
'''
Function:
Démarrer l'interface
Input:
--screen: Interface de jeu
Return:
--game_mode: 1(Mode simple)/2(Mode double)
'''
def startInterface(screen):
clock = pygame.time.Clock()
while True:
screen.fill((41, 36, 33))
button_1 = Button(screen, (150, 175), '1 Player')
button_2 = Button(screen, (150, 275), '2 Player')
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.MOUSEBUTTONDOWN:
if button_1.collidepoint(pygame.mouse.get_pos()):
return 1
elif button_2.collidepoint(pygame.mouse.get_pos()):
return 2
clock.tick(10)
pygame.display.update()
'''Fin de l'interface'''
def endInterface(screen, score_left, score_right):
clock = pygame.time.Clock()
font1 = pygame.font.Font(cfg.FONTPATH, 30)
font2 = pygame.font.Font(cfg.FONTPATH, 20)
msg = 'Player on left won!' if score_left > score_right else 'Player on right won!'
texts = [font1.render(msg, True, cfg.WHITE),
font2.render('Press ESCAPE to quit.', True, cfg.WHITE),
font2.render('Press ENTER to continue or play again.', True, cfg.WHITE)]
positions = [[120, 200], [155, 270], [80, 300]]
while True:
screen.fill((41, 36, 33))
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RETURN:
return
elif event.key == pygame.K_ESCAPE:
sys.exit()
pygame.quit()
for text, pos in zip(texts, positions):
screen.blit(text, pos)
clock.tick(10)
pygame.display.update()
'''Lancez le jeuDemo'''
def runDemo(screen):
# Charger le matériel de jeu
hit_sound = pygame.mixer.Sound(cfg.HITSOUNDPATH)
goal_sound = pygame.mixer.Sound(cfg.GOALSOUNDPATH)
pygame.mixer.music.load(cfg.BGMPATH)
pygame.mixer.music.play(-1, 0.0)
font = pygame.font.Font(cfg.FONTPATH, 50)
# Démarrer l'interface
game_mode = startInterface(screen)
# La boucle principale du jeu
# --Raquette gauche(wsContrôle, Contrôle uniquement en mode double)
score_left = 0
racket_left = Racket(cfg.RACKETPICPATH, 'LEFT', cfg)
# --Raquette droite(↑↓Contrôle)
score_right = 0
racket_right = Racket(cfg.RACKETPICPATH, 'RIGHT', cfg)
# --La balle.
ball = Ball(cfg.BALLPICPATH, cfg)
clock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit(-1)
screen.fill((41, 36, 33))
# Action du joueur
pressed_keys = pygame.key.get_pressed()
if pressed_keys[pygame.K_UP]:
racket_right.move('UP')
elif pressed_keys[pygame.K_DOWN]:
racket_right.move('DOWN')
if game_mode == 2:
if pressed_keys[pygame.K_w]:
racket_left.move('UP')
elif pressed_keys[pygame.K_s]:
racket_left.move('DOWN')
else:
racket_left.automove(ball)
# Sport de balle
scores = ball.move(ball, racket_left, racket_right, hit_sound, goal_sound)
score_left += scores[0]
score_right += scores[1]
# Afficher
# --Ligne de séparation
pygame.draw.rect(screen, cfg.WHITE, (247, 0, 6, 500))
# --La balle.
ball.draw(screen)
# --Filme.
racket_left.draw(screen)
racket_right.draw(screen)
# --Score
screen.blit(font.render(str(score_left), False, cfg.WHITE), (150, 10))
screen.blit(font.render(str(score_right), False, cfg.WHITE), (300, 10))
if score_left == 11 or score_right == 11:
return score_left, score_right
clock.tick(100)
pygame.display.update()
'''Fonction principale'''
def main():
# Initialisation
pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((cfg.WIDTH, cfg.HEIGHT))
pygame.display.set_caption('pingpong —— Neuf chansons')
# Commencez le jeu
while True:
score_left, score_right = runDemo(screen)
endInterface(screen, score_left, score_right)
'''run'''
if __name__ == '__main__':
main()

3、Ski

Partage des sources:


import sys
import cfg
import pygame
import random
'''Les skieurs'''
class SkierClass(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
# Orientation du skieur(-2À2)
self.direction = 0
self.imagepaths = cfg.SKIER_IMAGE_PATHS[:-1]
self.image = pygame.image.load(self.imagepaths[self.direction])
self.rect = self.image.get_rect()
self.rect.center = [320, 100]
self.speed = [self.direction, 6-abs(self.direction)*2]
'''Changer l'orientation du skieur. Négatif à gauche,Le nombre positif est à droite,0Pour aller de l'avant'''
def turn(self, num):
self.direction += num
self.direction = max(-2, self.direction)
self.direction = min(2, self.direction)
center = self.rect.center
self.image = pygame.image.load(self.imagepaths[self.direction])
self.rect = self.image.get_rect()
self.rect.center = center
self.speed = [self.direction, 6-abs(self.direction)*2]
return self.speed
'''Skieur mobile'''
def move(self):
self.rect.centerx += self.speed[0]
self.rect.centerx = max(20, self.rect.centerx)
self.rect.centerx = min(620, self.rect.centerx)
'''Régler à l'état de chute'''
def setFall(self):
self.image = pygame.image.load(cfg.SKIER_IMAGE_PATHS[-1])
'''Régler à l'état debout'''
def setForward(self):
self.direction = 0
self.image = pygame.image.load(self.imagepaths[self.direction])
'''
Function:
Classe d'obstacles
Input:
img_path: Chemin de l'image de l'obstacle
location: Emplacement des obstacles
attribute: Propriétés de la catégorie d'obstacles
'''
class ObstacleClass(pygame.sprite.Sprite):
def __init__(self, img_path, location, attribute):
pygame.sprite.Sprite.__init__(self)
self.img_path = img_path
self.image = pygame.image.load(self.img_path)
self.location = location
self.rect = self.image.get_rect()
self.rect.center = self.location
self.attribute = attribute
self.passed = False
'''Bouge'''
def move(self, num):
self.rect.centery = self.location[1] - num
'''Créer un obstacle'''
def createObstacles(s, e, num=10):
obstacles = pygame.sprite.Group()
locations = []
for i in range(num):
row = random.randint(s, e)
col = random.randint(0, 9)
location = [col*64+20, row*64+20]
if location not in locations:
locations.append(location)
attribute = random.choice(list(cfg.OBSTACLE_PATHS.keys()))
img_path = cfg.OBSTACLE_PATHS[attribute]
obstacle = ObstacleClass(img_path, location, attribute)
obstacles.add(obstacle)
return obstacles
'''Fusionner les obstacles'''
def AddObstacles(obstacles0, obstacles1):
obstacles = pygame.sprite.Group()
for obstacle in obstacles0:
obstacles.add(obstacle)
for obstacle in obstacles1:
obstacles.add(obstacle)
return obstacles
'''Afficher l'interface de démarrage du jeu'''
def ShowStartInterface(screen, screensize):
screen.fill((255, 255, 255))
tfont = pygame.font.Font(cfg.FONTPATH, screensize[0]//5)
cfont = pygame.font.Font(cfg.FONTPATH, screensize[0]//20)
title = tfont.render(u'Jeux de ski', True, (255, 0, 0))
content = cfont.render(u'Appuyez sur n'importe quelle touche pour démarrer le jeu', True, (0, 0, 255))
trect = title.get_rect()
trect.midtop = (screensize[0]/2, screensize[1]/5)
crect = content.get_rect()
crect.midtop = (screensize[0]/2, screensize[1]/2)
screen.blit(title, trect)
screen.blit(content, crect)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
return
pygame.display.update()
'''Afficher les scores'''
def showScore(screen, score, pos=(10, 10)):
font = pygame.font.Font(cfg.FONTPATH, 30)
score_text = font.render("Score: %s" % score, True, (0, 0, 0))
screen.blit(score_text, pos)
'''Mise à jour de l'écran de jeu pour le cadre actuel'''
def updateFrame(screen, obstacles, skier, score):
screen.fill((255, 255, 255))
obstacles.draw(screen)
screen.blit(skier.image, skier.rect)
showScore(screen, score)
pygame.display.update()
'''Procédure principale'''
def main():
# Initialisation du jeu
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(cfg.BGMPATH)
pygame.mixer.music.set_volume(0.4)
pygame.mixer.music.play(-1)
# Écran de configuration
screen = pygame.display.set_mode(cfg.SCREENSIZE)
pygame.display.set_caption('Jeux de ski —— Neuf chansons')
# Interface de démarrage du jeu
ShowStartInterface(screen, cfg.SCREENSIZE)
# Instancier Game genie
# --Skieur
skier = SkierClass()
# --Créer un obstacle
obstacles0 = createObstacles(20, 29)
obstacles1 = createObstacles(10, 19)
obstaclesflag = 0
obstacles = AddObstacles(obstacles0, obstacles1)
# Le jeuclock
clock = pygame.time.Clock()
# Noter la distance de ski
distance = 0
# Noter la note actuelle
score = 0
# Enregistrer la vitesse actuelle
speed = [0, 6]
# La boucle principale du jeu
while True:
# --Capture d'événements
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT or event.key == pygame.K_a:
speed = skier.turn(-1)
elif event.key == pygame.K_RIGHT or event.key == pygame.K_d:
speed = skier.turn(1)
# --Mettre à jour les données du cadre de jeu actuel
skier.move()
distance += speed[1]
if distance >= 640 and obstaclesflag == 0:
obstaclesflag = 1
obstacles0 = createObstacles(20, 29)
obstacles = AddObstacles(obstacles0, obstacles1)
if distance >= 1280 and obstaclesflag == 1:
obstaclesflag = 0
distance -= 1280
for obstacle in obstacles0:
obstacle.location[1] = obstacle.location[1] - 1280
obstacles1 = createObstacles(10, 19)
obstacles = AddObstacles(obstacles0, obstacles1)
for obstacle in obstacles:
obstacle.move(distance)
# --Détection des collisions
hitted_obstacles = pygame.sprite.spritecollide(skier, obstacles, False)
if hitted_obstacles:
if hitted_obstacles[0].attribute == "tree" and not hitted_obstacles[0].passed:
score -= 50
skier.setFall()
updateFrame(screen, obstacles, skier, score)
pygame.time.delay(1000)
skier.setForward()
speed = [0, 6]
hitted_obstacles[0].passed = True
elif hitted_obstacles[0].attribute == "flag" and not hitted_obstacles[0].passed:
score += 10
obstacles.remove(hitted_obstacles[0])
# --Mise à jour de l'écran
updateFrame(screen, obstacles, skier, score)
clock.tick(cfg.FPS)
'''run'''
if __name__ == '__main__':
main();

4、Et la bataille de l'avion du soir

Partage des sources:


import sys
import cfg
import pygame
from modules import *
'''Interface de jeu'''
def GamingInterface(num_player, screen):
# Initialisation
pygame.mixer.music.load(cfg.SOUNDPATHS['Cool Space Music'])
pygame.mixer.music.set_volume(0.4)
pygame.mixer.music.play(-1)
explosion_sound = pygame.mixer.Sound(cfg.SOUNDPATHS['boom'])
fire_sound = pygame.mixer.Sound(cfg.SOUNDPATHS['shot'])
font = pygame.font.Font(cfg.FONTPATH, 20)
# Carte de fond du jeu
bg_imgs = [cfg.IMAGEPATHS['bg_big'], cfg.IMAGEPATHS['seamless_space'], cfg.IMAGEPATHS['space3']]
bg_move_dis = 0
bg_1 = pygame.image.load(bg_imgs[0]).convert()
bg_2 = pygame.image.load(bg_imgs[1]).convert()
bg_3 = pygame.image.load(bg_imgs[2]).convert()
# Les joueurs, Les balles et les astéroïdes elfes
player_group = pygame.sprite.Group()
bullet_group = pygame.sprite.Group()
asteroid_group = pygame.sprite.Group()
# L'intervalle de temps entre les astéroïdes
asteroid_ticks = 90
for i in range(num_player):
player_group.add(Ship(i+1, cfg))
clock = pygame.time.Clock()
# Points
score_1, score_2 = 0, 0
# La boucle principale du jeu
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# --Joueur un: ↑↓←→Contrôle, jTirez!; Joueur 2: wsadContrôle, Tir à blanc
pressed_keys = pygame.key.get_pressed()
for idx, player in enumerate(player_group):
direction = None
if idx == 0:
if pressed_keys[pygame.K_UP]:
direction = 'up'
elif pressed_keys[pygame.K_DOWN]:
direction = 'down'
elif pressed_keys[pygame.K_LEFT]:
direction = 'left'
elif pressed_keys[pygame.K_RIGHT]:
direction = 'right'
if direction:
player.move(direction)
if pressed_keys[pygame.K_j]:
if player.cooling_time == 0:
fire_sound.play()
bullet_group.add(player.shot())
player.cooling_time = 20
elif idx == 1:
if pressed_keys[pygame.K_w]:
direction = 'up'
elif pressed_keys[pygame.K_s]:
direction = 'down'
elif pressed_keys[pygame.K_a]:
direction = 'left'
elif pressed_keys[pygame.K_d]:
direction = 'right'
if direction:
player.move(direction)
if pressed_keys[pygame.K_SPACE]:
if player.cooling_time == 0:
fire_sound.play()
bullet_group.add(player.shot())
player.cooling_time = 20
if player.cooling_time > 0:
player.cooling_time -= 1
if (score_1 + score_2) < 500:
background = bg_1
elif (score_1 + score_2) < 1500:
background = bg_2
else:
background = bg_3
# --Déplacer l'arrière - plan vers le bas pour obtenir l'effet de déplacer le vaisseau vers le haut
screen.blit(background, (0, -background.get_rect().height + bg_move_dis))
screen.blit(background, (0, bg_move_dis))
bg_move_dis = (bg_move_dis + 2) % background.get_rect().height
# --Générer des astéroïdes
if asteroid_ticks == 0:
asteroid_ticks = 90
asteroid_group.add(Asteroid(cfg))
else:
asteroid_ticks -= 1
# --Dessiner un vaisseau spatial
for player in player_group:
if pygame.sprite.spritecollide(player, asteroid_group, True, None):
player.explode_step = 1
explosion_sound.play()
elif player.explode_step > 0:
if player.explode_step > 3:
player_group.remove(player)
if len(player_group) == 0:
return
else:
player.explode(screen)
else:
player.draw(screen)
# --Dessiner des balles
for bullet in bullet_group:
bullet.move()
if pygame.sprite.spritecollide(bullet, asteroid_group, True, None):
bullet_group.remove(bullet)
if bullet.player_idx == 1:
score_1 += 1
else:
score_2 += 1
else:
bullet.draw(screen)
# --Dessiner un astéroïde
for asteroid in asteroid_group:
asteroid.move()
asteroid.rotate()
asteroid.draw(screen)
# --Afficher les scores
score_1_text = 'Une fois que le joueur a marqué: %s' % score_1
score_2_text = 'Le joueur 2 marque: %s' % score_2
text_1 = font.render(score_1_text, True, (0, 0, 255))
text_2 = font.render(score_2_text, True, (255, 0, 0))
screen.blit(text_1, (2, 5))
screen.blit(text_2, (2, 35))
# --Rafraîchissement de l'écran
pygame.display.update()
clock.tick(60)
'''Fonction principale'''
def main():
pygame.init()
pygame.font.init()
pygame.mixer.init()
screen = pygame.display.set_mode(cfg.SCREENSIZE)
pygame.display.set_caption('La guerre des avions —— Neuf chansons')
num_player = StartInterface(screen, cfg)
if num_player == 1:
while True:
GamingInterface(num_player=1, screen=screen)
EndInterface(screen, cfg)
else:
while True:
GamingInterface(num_player=2, screen=screen)
EndInterface(screen, cfg)
'''run'''
if __name__ == '__main__':
main()

5、Ground Mouse

Partage des sources:


import cfg
import sys
import pygame
import random
from modules import *
'''Initialisation du jeu'''
def initGame():
pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode(cfg.SCREENSIZE)
pygame.display.set_caption('Ground Mouse —— Neuf chansons')
return screen
'''Fonction principale'''
def main():
# Initialisation
screen = initGame()
# Charger la musique de fond et d'autres effets sonores
pygame.mixer.music.load(cfg.BGM_PATH)
pygame.mixer.music.play(-1)
audios = {
'count_down': pygame.mixer.Sound(cfg.COUNT_DOWN_SOUND_PATH),
'hammering': pygame.mixer.Sound(cfg.HAMMERING_SOUND_PATH)
}
# Charger les polices
font = pygame.font.Font(cfg.FONT_PATH, 40)
# Charger l'image de fond
bg_img = pygame.image.load(cfg.GAME_BG_IMAGEPATH)
# Démarrer l'interface
startInterface(screen, cfg.GAME_BEGIN_IMAGEPATHS)
# Le timing du changement de position du gopher
hole_pos = random.choice(cfg.HOLE_POSITIONS)
change_hole_event = pygame.USEREVENT
pygame.time.set_timer(change_hole_event, 800)
# Gopher
mole = Mole(cfg.MOLE_IMAGEPATHS, hole_pos)
# Marteau
hammer = Hammer(cfg.HAMMER_IMAGEPATHS, (500, 250))
# Horloge
clock = pygame.time.Clock()
# Points
your_score = 0
flag = False
# Heure initiale
init_time = pygame.time.get_ticks()
# La boucle principale du jeu
while True:
# --Le temps de jeu est60s
time_remain = round((61000 - (pygame.time.get_ticks() - init_time)) / 1000.)
# --Réduction du temps de jeu, Les gophers changent de position et de vitesse
if time_remain == 40 and not flag:
hole_pos = random.choice(cfg.HOLE_POSITIONS)
mole.reset()
mole.setPosition(hole_pos)
pygame.time.set_timer(change_hole_event, 650)
flag = True
elif time_remain == 20 and flag:
hole_pos = random.choice(cfg.HOLE_POSITIONS)
mole.reset()
mole.setPosition(hole_pos)
pygame.time.set_timer(change_hole_event, 500)
flag = False
# --Compte à rebours des effets sonores
if time_remain == 10:
audios['count_down'].play()
# --Fin du jeu
if time_remain < 0: break
count_down_text = font.render('Time: '+str(time_remain), True, cfg.WHITE)
# --Détection des touches
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.MOUSEMOTION:
hammer.setPosition(pygame.mouse.get_pos())
elif event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 1:
hammer.setHammering()
elif event.type == change_hole_event:
hole_pos = random.choice(cfg.HOLE_POSITIONS)
mole.reset()
mole.setPosition(hole_pos)
# --Détection des collisions
if hammer.is_hammering and not mole.is_hammer:
is_hammer = pygame.sprite.collide_mask(hammer, mole)
if is_hammer:
audios['hammering'].play()
mole.setBeHammered()
your_score += 10
# --Points
your_score_text = font.render('Score: '+str(your_score), True, cfg.BROWN)
# --Lier les éléments de jeu nécessaires à l'écran(Attention à l'ordre.)
screen.blit(bg_img, (0, 0))
screen.blit(count_down_text, (875, 8))
screen.blit(your_score_text, (800, 430))
mole.draw(screen)
hammer.draw(screen)
# --Mise à jour
pygame.display.flip()
clock.tick(60)
# Lire le meilleur score(tryBloc pour éviter le premier jeu aucun.recDocumentation)
try:
best_score = int(open(cfg.RECORD_PATH).read())
except:
best_score = 0
# Si la note actuelle est supérieure à la meilleure note, mettre à jour la meilleure note
if your_score > best_score:
f = open(cfg.RECORD_PATH, 'w')
f.write(str(your_score))
f.close()
# Fin de l'interface
score_info = {'your_score': your_score, 'best_score': best_score}
is_restart = endInterface(screen, cfg.GAME_END_IMAGEPATH, cfg.GAME_AGAIN_IMAGEPATHS, score_info, cfg.FONT_PATH, [cfg.WHITE, cfg.RED], cfg.SCREENSIZE)
return is_restart
'''run'''
if __name__ == '__main__':
while True:
is_restart = main()
if not is_restart:
break

Simple.

【Une brève introduction au jeu+Source jointe】

6、Petit dinosaure

Méthode de jeu:Contrôle du décollage et de l'évasion

Partage des sources:


import cfg
import sys
import random
import pygame
from modules import *
'''main'''
def main(highest_score):
# Initialisation du jeu
pygame.init()
screen = pygame.display.set_mode(cfg.SCREENSIZE)
pygame.display.set_caption('Neuf chansons')
# Importer tous les fichiers son
sounds = {}
for key, value in cfg.AUDIO_PATHS.items():
sounds[key] = pygame.mixer.Sound(value)
# Interface de démarrage du jeu
GameStartInterface(screen, sounds, cfg)
# Définir certains éléments et variables nécessaires dans le jeu
score = 0
score_board = Scoreboard(cfg.IMAGE_PATHS['numbers'], position=(534, 15), bg_color=cfg.BACKGROUND_COLOR)
highest_score = highest_score
highest_score_board = Scoreboard(cfg.IMAGE_PATHS['numbers'], position=(435, 15), bg_color=cfg.BACKGROUND_COLOR, is_highest=True)
dino = Dinosaur(cfg.IMAGE_PATHS['dino'])
ground = Ground(cfg.IMAGE_PATHS['ground'], position=(0, cfg.SCREENSIZE[1]))
cloud_sprites_group = pygame.sprite.Group()
cactus_sprites_group = pygame.sprite.Group()
ptera_sprites_group = pygame.sprite.Group()
add_obstacle_timer = 0
score_timer = 0
# La boucle principale du jeu
clock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE or event.key == pygame.K_UP:
dino.jump(sounds)
elif event.key == pygame.K_DOWN:
dino.duck()
elif event.type == pygame.KEYUP and event.key == pygame.K_DOWN:
dino.unduck()
screen.fill(cfg.BACKGROUND_COLOR)
# --Ajouter des nuages au hasard
if len(cloud_sprites_group) < 5 and random.randrange(0, 300) == 10:
cloud_sprites_group.add(Cloud(cfg.IMAGE_PATHS['cloud'], position=(cfg.SCREENSIZE[0], random.randrange(30, 75))))
# --Ajouter des cactus au hasard/Dragon volant
add_obstacle_timer += 1
if add_obstacle_timer > random.randrange(50, 150):
add_obstacle_timer = 0
random_value = random.randrange(0, 10)
if random_value >= 5 and random_value <= 7:
cactus_sprites_group.add(Cactus(cfg.IMAGE_PATHS['cacti']))
else:
position_ys = [cfg.SCREENSIZE[1]*0.82, cfg.SCREENSIZE[1]*0.75, cfg.SCREENSIZE[1]*0.60, cfg.SCREENSIZE[1]*0.20]
ptera_sprites_group.add(Ptera(cfg.IMAGE_PATHS['ptera'], position=(600, random.choice(position_ys))))
# --Mettre à jour les éléments du jeu
dino.update()
ground.update()
cloud_sprites_group.update()
cactus_sprites_group.update()
ptera_sprites_group.update()
score_timer += 1
if score_timer > (cfg.FPS//12):
score_timer = 0
score += 1
score = min(score, 99999)
if score > highest_score:
highest_score = score
if score % 100 == 0:
sounds['point'].play()
if score % 1000 == 0:
ground.speed -= 1
for item in cloud_sprites_group:
item.speed -= 1
for item in cactus_sprites_group:
item.speed -= 1
for item in ptera_sprites_group:
item.speed -= 1
# --Détection des collisions
for item in cactus_sprites_group:
if pygame.sprite.collide_mask(dino, item):
dino.die(sounds)
for item in ptera_sprites_group:
if pygame.sprite.collide_mask(dino, item):
dino.die(sounds)
# --Dessinez les éléments du jeu à l'écran
dino.draw(screen)
ground.draw(screen)
cloud_sprites_group.draw(screen)
cactus_sprites_group.draw(screen)
ptera_sprites_group.draw(screen)
score_board.set(score)
highest_score_board.set(highest_score)
score_board.draw(screen)
highest_score_board.draw(screen)
# --Mise à jour de l'écran
pygame.display.update()
clock.tick(cfg.FPS)
# --Si le jeu est terminé
if dino.is_dead:
break
# Interface de fin de jeu
return GameEndInterface(screen, cfg), highest_score
'''run'''
if __name__ == '__main__':
highest_score = 0
while True:
flag, highest_score = main(highest_score)
if not flag: break

7、Xiaoxiaole

Méthode de jeu:Trois connexions éliminent

Partage des sources:


import os
import sys
import cfg
import pygame
from modules import *
'''Programme principal du jeu'''
def main():
pygame.init()
screen = pygame.display.set_mode(cfg.SCREENSIZE)
pygame.display.set_caption('Gemgem —— Neuf chansons')
# Charger la musique de fond
pygame.mixer.init()
pygame.mixer.music.load(os.path.join(cfg.ROOTDIR, "resources/audios/bg.mp3"))
pygame.mixer.music.set_volume(0.6)
pygame.mixer.music.play(-1)
# Chargement des effets sonores
sounds = {}
sounds['mismatch'] = pygame.mixer.Sound(os.path.join(cfg.ROOTDIR, 'resources/audios/badswap.wav'))
sounds['match'] = []
for i in range(6):
sounds['match'].append(pygame.mixer.Sound(os.path.join(cfg.ROOTDIR, 'resources/audios/match%s.wav' % i)))
# Charger les polices
font = pygame.font.Font(os.path.join(cfg.ROOTDIR, 'resources/font/font.TTF'), 25)
# Chargement de l'image
gem_imgs = []
for i in range(1, 8):
gem_imgs.append(os.path.join(cfg.ROOTDIR, 'resources/images/gem%s.png' % i))
# Cycle principal
game = gemGame(screen, sounds, font, gem_imgs, cfg)
while True:
score = game.start()
flag = False
# Après un tour de jeu, le joueur choisit de jouer à nouveau ou de quitter
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT or (event.type == pygame.KEYUP and event.key == pygame.K_ESCAPE):
pygame.quit()
sys.exit()
elif event.type == pygame.KEYUP and event.key == pygame.K_r:
flag = True
if flag:
break
screen.fill((135, 206, 235))
text0 = 'Final score: %s' % score
text1 = 'Press <R> to restart the game.'
text2 = 'Press <Esc> to quit the game.'
y = 150
for idx, text in enumerate([text0, text1, text2]):
text_render = font.render(text, 1, (85, 65, 0))
rect = text_render.get_rect()
if idx == 0:
rect.left, rect.top = (212, y)
elif idx == 1:
rect.left, rect.top = (122.5, y)
else:
rect.left, rect.top = (126.5, y)
y += 100
screen.blit(text_render, rect)
pygame.display.update()
game.reset()
'''run'''
if __name__ == '__main__':
main()

8、Tetris

Méthode de jeu:Les classiques de l'enfance,Le mode normal n'est pas intéressant,Quand on était enfants, on jouait à l'accélération..

Partage des sources:


import os
import sys
import random
from modules import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
'''Définir la classe de jeu Tetris'''
class TetrisGame(QMainWindow):
def __init__(self, parent=None):
super(TetrisGame, self).__init__(parent)
# Pause ou noning
self.is_paused = False
# Est - ce que ça commenceing
self.is_started = False
self.initUI()
'''Initialisation de l'interface'''
def initUI(self):
# icon
self.setWindowIcon(QIcon(os.path.join(os.getcwd(), 'resources/icon.jpg')))
# Taille du bloc
self.grid_size = 22
# Taux de trame du jeu
self.fps = 200
self.timer = QBasicTimer()
# Focus
self.setFocusPolicy(Qt.StrongFocus)
# Disposition horizontale
layout_horizontal = QHBoxLayout()
self.inner_board = InnerBoard()
self.external_board = ExternalBoard(self, self.grid_size, self.inner_board)
layout_horizontal.addWidget(self.external_board)
self.side_panel = SidePanel(self, self.grid_size, self.inner_board)
layout_horizontal.addWidget(self.side_panel)
self.status_bar = self.statusBar()
self.external_board.score_signal[str].connect(self.status_bar.showMessage)
self.start()
self.center()
self.setWindowTitle('Tetris —— Neuf chansons')
self.show()
self.setFixedSize(self.external_board.width() + self.side_panel.width(), self.side_panel.height() + self.status_bar.height())
'''L'interface de jeu passe au milieu de l'écran'''
def center(self):
screen = QDesktopWidget().screenGeometry()
size = self.geometry()
self.move((screen.width() - size.width()) // 2, (screen.height() - size.height()) // 2)
'''Mettre à jour l'interface'''
def updateWindow(self):
self.external_board.updateData()
self.side_panel.updateData()
self.update()
'''C'est parti.'''
def start(self):
if self.is_started:
return
self.is_started = True
self.inner_board.createNewTetris()
self.timer.start(self.fps, self)
'''Pause/Pas de pause'''
def pause(self):
if not self.is_started:
return
self.is_paused = not self.is_paused
if self.is_paused:
self.timer.stop()
self.external_board.score_signal.emit('Paused')
else:
self.timer.start(self.fps, self)
self.updateWindow()
'''Événements de minuterie'''
def timerEvent(self, event):
if event.timerId() == self.timer.timerId():
removed_lines = self.inner_board.moveDown()
self.external_board.score += removed_lines
self.updateWindow()
else:
super(TetrisGame, self).timerEvent(event)
'''Événements clés'''
def keyPressEvent(self, event):
if not self.is_started or self.inner_board.current_tetris == tetrisShape().shape_empty:
super(TetrisGame, self).keyPressEvent(event)
return
key = event.key()
# PPause clé
if key == Qt.Key_P:
self.pause()
return
if self.is_paused:
return
# À gauche.
elif key == Qt.Key_Left:
self.inner_board.moveLeft()
# À droite.
elif key == Qt.Key_Right:
self.inner_board.moveRight()
# Rotation
elif key == Qt.Key_Up:
self.inner_board.rotateAnticlockwise()
# Chute rapide
elif key == Qt.Key_Space:
self.external_board.score += self.inner_board.dropDown()
else:
super(TetrisGame, self).keyPressEvent(event)
self.updateWindow()
'''run'''
if __name__ == '__main__':
app = QApplication([])
tetris = TetrisGame()
sys.exit(app.exec_())

9、Avide de serpents

Méthode de jeu:Les classiques de l'enfance,La magie ordinaire n'a pas de sens,Quand j'étais enfant, je jouais aussi plus vite.

Partage des sources:


import cfg
import sys
import pygame
from modules import *
'''Fonction principale'''
def main(cfg):
# Initialisation du jeu
pygame.init()
screen = pygame.display.set_mode(cfg.SCREENSIZE)
pygame.display.set_caption('Greedy Snake —— Neuf chansons')
clock = pygame.time.Clock()
# Jouer de la musique de fond
pygame.mixer.music.load(cfg.BGMPATH)
pygame.mixer.music.play(-1)
# La boucle principale du jeu
snake = Snake(cfg)
apple = Apple(cfg, snake.coords)
score = 0
while True:
screen.fill(cfg.BLACK)
# --Détection des touches
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key in [pygame.K_UP, pygame.K_DOWN, pygame.K_LEFT, pygame.K_RIGHT]:
snake.setDirection({pygame.K_UP: 'up', pygame.K_DOWN: 'down', pygame.K_LEFT: 'left', pygame.K_RIGHT: 'right'}[event.key])
# --Renouveler la soif de serpents et de nourriture
if snake.update(apple):
apple = Apple(cfg, snake.coords)
score += 1
# --Déterminer si le jeu est terminé
if snake.isgameover: break
# --Afficher les éléments nécessaires dans le jeu
drawGameGrid(cfg, screen)
snake.draw(screen)
apple.draw(screen)
showScore(cfg, score, screen)
# --Mise à jour de l'écran
pygame.display.update()
clock.tick(cfg.FPS)
return endInterface(screen, cfg)
'''run'''
if __name__ == '__main__':
while True:
if not main(cfg):
break

Vulgaris

【Détails du jeu+Code source】

10、24Un petit jeu.

Méthode de jeu:Par addition, soustraction, multiplication et Division,Les élèves vont bien.

Partage des sources:


import os
import sys
import pygame
from cfg import *
from modules import *
from fractions import Fraction
'''Vérifiez si le contrôle est cliqué'''
def checkClicked(group, mouse_pos, group_type='NUMBER'):
selected = []
# Carte numérique/Carte opérateur
if group_type == GROUPTYPES[0] or group_type == GROUPTYPES[1]:
max_selected = 2 if group_type == GROUPTYPES[0] else 1
num_selected = 0
for each in group:
num_selected += int(each.is_selected)
for each in group:
if each.rect.collidepoint(mouse_pos):
if each.is_selected:
each.is_selected = not each.is_selected
num_selected -= 1
each.select_order = None
else:
if num_selected < max_selected:
each.is_selected = not each.is_selected
num_selected += 1
each.select_order = str(num_selected)
if each.is_selected:
selected.append(each.attribute)
# Carte bouton
elif group_type == GROUPTYPES[2]:
for each in group:
if each.rect.collidepoint(mouse_pos):
each.is_selected = True
selected.append(each.attribute)
# Lancer une exception
else:
raise ValueError('checkClicked.group_type unsupport %s, expect %s, %s or %s...' % (group_type, *GROUPTYPES))
return selected
'''Get Digital genie Group'''
def getNumberSpritesGroup(numbers):
number_sprites_group = pygame.sprite.Group()
for idx, number in enumerate(numbers):
args = (*NUMBERCARD_POSITIONS[idx], str(number), NUMBERFONT, NUMBERFONT_COLORS, NUMBERCARD_COLORS, str(number))
number_sprites_group.add(Card(*args))
return number_sprites_group
'''Get operator genie Group'''
def getOperatorSpritesGroup(operators):
operator_sprites_group = pygame.sprite.Group()
for idx, operator in enumerate(operators):
args = (*OPERATORCARD_POSITIONS[idx], str(operator), OPERATORFONT, OPREATORFONT_COLORS, OPERATORCARD_COLORS, str(operator))
operator_sprites_group.add(Card(*args))
return operator_sprites_group
'''Get button genie Group'''
def getButtonSpritesGroup(buttons):
button_sprites_group = pygame.sprite.Group()
for idx, button in enumerate(buttons):
args = (*BUTTONCARD_POSITIONS[idx], str(button), BUTTONFONT, BUTTONFONT_COLORS, BUTTONCARD_COLORS, str(button))
button_sprites_group.add(Button(*args))
return button_sprites_group
'''Calcul'''
def calculate(number1, number2, operator):
operator_map = {'+': '+', '-': '-', '×': '*', '÷': '/'}
try:
result = str(eval(number1+operator_map[operator]+number2))
return result if '.' not in result else str(Fraction(number1+operator_map[operator]+number2))
except:
return None
'''Afficher le message à l'écran'''
def showInfo(text, screen):
rect = pygame.Rect(200, 180, 400, 200)
pygame.draw.rect(screen, PAPAYAWHIP, rect)
font = pygame.font.Font(FONTPATH, 40)
text_render = font.render(text, True, BLACK)
font_size = font.size(text)
screen.blit(text_render, (rect.x+(rect.width-font_size[0])/2, rect.y+(rect.height-font_size[1])/2))
'''Fonction principale'''
def main():
# Initialisation, Importer le matériel de jeu nécessaire
pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode(SCREENSIZE)
pygame.display.set_caption('24 point —— Neuf chansons')
win_sound = pygame.mixer.Sound(AUDIOWINPATH)
lose_sound = pygame.mixer.Sound(AUDIOLOSEPATH)
warn_sound = pygame.mixer.Sound(AUDIOWARNPATH)
pygame.mixer.music.load(BGMPATH)
pygame.mixer.music.play(-1, 0.0)
# 24Point Game Builder
game24_gen = game24Generator()
game24_gen.generate()
# Le Groupe des Elfes
# --Nombre
number_sprites_group = getNumberSpritesGroup(game24_gen.numbers_now)
# --Opérateur
operator_sprites_group = getOperatorSpritesGroup(OPREATORS)
# --Boutons
button_sprites_group = getButtonSpritesGroup(BUTTONS)
# La boucle principale du jeu
clock = pygame.time.Clock()
selected_numbers = []
selected_operators = []
selected_buttons = []
is_win = False
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit(-1)
elif event.type == pygame.MOUSEBUTTONUP:
mouse_pos = pygame.mouse.get_pos()
selected_numbers = checkClicked(number_sprites_group, mouse_pos, 'NUMBER')
selected_operators = checkClicked(operator_sprites_group, mouse_pos, 'OPREATOR')
selected_buttons = checkClicked(button_sprites_group, mouse_pos, 'BUTTON')
screen.fill(AZURE)
# Mise à jour des chiffres
if len(selected_numbers) == 2 and len(selected_operators) == 1:
noselected_numbers = []
for each in number_sprites_group:
if each.is_selected:
if each.select_order == '1':
selected_number1 = each.attribute
elif each.select_order == '2':
selected_number2 = each.attribute
else:
raise ValueError('Unknow select_order %s, expect 1 or 2...' % each.select_order)
else:
noselected_numbers.append(each.attribute)
each.is_selected = False
for each in operator_sprites_group:
each.is_selected = False
result = calculate(selected_number1, selected_number2, *selected_operators)
if result is not None:
game24_gen.numbers_now = noselected_numbers + [result]
is_win = game24_gen.check()
if is_win:
win_sound.play()
if not is_win and len(game24_gen.numbers_now) == 1:
lose_sound.play()
else:
warn_sound.play()
selected_numbers = []
selected_operators = []
number_sprites_group = getNumberSpritesGroup(game24_gen.numbers_now)
# Les elfes ont peintscreenAllez.
for each in number_sprites_group:
each.draw(screen, pygame.mouse.get_pos())
for each in operator_sprites_group:
each.draw(screen, pygame.mouse.get_pos())
for each in button_sprites_group:
if selected_buttons and selected_buttons[0] in ['RESET', 'NEXT']:
is_win = False
if selected_buttons and each.attribute == selected_buttons[0]:
each.is_selected = False
number_sprites_group = each.do(game24_gen, getNumberSpritesGroup, number_sprites_group, button_sprites_group)
selected_buttons = []
each.draw(screen, pygame.mouse.get_pos())
# Victoire du jeu
if is_win:
showInfo('Congratulations', screen)
# Le jeu a échoué
if not is_win and len(game24_gen.numbers_now) == 1:
showInfo('Game Over', screen)
pygame.display.flip()
clock.tick(30)
'''run'''
if __name__ == '__main__':
main()

11、Bois d'équilibre

Méthode de jeu:C'est aussi un jeu classique d'enfance,Contrôle à gauche et à droite,C'est un peu plus difficile à l'arrière.

Partage des sources:


import cfg
from modules import breakoutClone
'''Fonction principale'''
def main():
game = breakoutClone(cfg)
game.run()
'''run'''
if __name__ == '__main__':
main()

Et le profil

12、Invasion extraterrestre

Méthode de jeu:Ça me rappelle les niveaux de Soul Douroboss,Un peu comme,Mais le combat de l'âme doit être un peu plus difficile.

Partage des sources:


import os
import sys
import cfg
import random
import pygame
from modules import *
'''Commencez le jeu'''
def startGame(screen):
clock = pygame.time.Clock()
# Charger les polices
font = pygame.font.SysFont('arial', 18)
if not os.path.isfile('score'):
f = open('score', 'w')
f.write('0')
f.close()
with open('score', 'r') as f:
highest_score = int(f.read().strip())
# L'ennemi
enemies_group = pygame.sprite.Group()
for i in range(55):
if i < 11:
enemy = enemySprite('small', i, cfg.WHITE, cfg.WHITE)
elif i < 33:
enemy = enemySprite('medium', i, cfg.WHITE, cfg.WHITE)
else:
enemy = enemySprite('large', i, cfg.WHITE, cfg.WHITE)
enemy.rect.x = 85 + (i % 11) * 50
enemy.rect.y = 120 + (i // 11) * 45
enemies_group.add(enemy)
boomed_enemies_group = pygame.sprite.Group()
en_bullets_group = pygame.sprite.Group()
ufo = ufoSprite(color=cfg.RED)
# Notre
myaircraft = aircraftSprite(color=cfg.GREEN, bullet_color=cfg.WHITE)
my_bullets_group = pygame.sprite.Group()
# Utilisé pour contrôler les mises à jour de position ennemies
# --Déplacer une ligne
enemy_move_count = 24
enemy_move_interval = 24
enemy_move_flag = False
# --Changer la direction du Mouvement(Une descente collective en même temps que le changement de direction)
enemy_change_direction_count = 0
enemy_change_direction_interval = 60
enemy_need_down = False
enemy_move_right = True
enemy_need_move_row = 6
enemy_max_row = 5
# Utilisé pour contrôler les tirs ennemis
enemy_shot_interval = 100
enemy_shot_count = 0
enemy_shot_flag = False
# Le jeu est en cours
running = True
is_win = False
# Cycle principal
while running:
screen.fill(cfg.BLACK)
for event in pygame.event.get():
# --En haut à droiteXOu appuyez surEscClé pour quitter le jeu
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
pygame.quit()
sys.exit()
# --Tirez!
if event.type == pygame.MOUSEBUTTONDOWN:
my_bullet = myaircraft.shot()
if my_bullet:
my_bullets_group.add(my_bullet)
# --Nos balles contre l'ennemi/UFODétection des collisions
for enemy in enemies_group:
if pygame.sprite.spritecollide(enemy, my_bullets_group, True, None):
boomed_enemies_group.add(enemy)
enemies_group.remove(enemy)
myaircraft.score += enemy.reward
if pygame.sprite.spritecollide(ufo, my_bullets_group, True, None):
ufo.is_dead = True
myaircraft.score += ufo.reward
# --Mettre à jour et dessiner l'ennemi
# ----Balles ennemies
enemy_shot_count += 1
if enemy_shot_count > enemy_shot_interval:
enemy_shot_flag = True
enemies_survive_list = [enemy.number for enemy in enemies_group]
shot_number = random.choice(enemies_survive_list)
enemy_shot_count = 0
# ----Mouvement ennemi
enemy_move_count += 1
if enemy_move_count > enemy_move_interval:
enemy_move_count = 0
enemy_move_flag = True
enemy_need_move_row -= 1
if enemy_need_move_row == 0:
enemy_need_move_row = enemy_max_row
enemy_change_direction_count += 1
if enemy_change_direction_count > enemy_change_direction_interval:
enemy_change_direction_count = 1
enemy_move_right = not enemy_move_right
enemy_need_down = True
# ----Chaque descente augmente la vitesse de déplacement et de tir
enemy_move_interval = max(15, enemy_move_interval-3)
enemy_shot_interval = max(50, enemy_move_interval-10)
# ----Traverser les mises à jour
for enemy in enemies_group:
if enemy_shot_flag:
if enemy.number == shot_number:
en_bullet = enemy.shot()
en_bullets_group.add(en_bullet)
if enemy_move_flag:
if enemy.number in range((enemy_need_move_row-1)*11, enemy_need_move_row*11):
if enemy_move_right:
enemy.update('right', cfg.SCREENSIZE[1])
else:
enemy.update('left', cfg.SCREENSIZE[1])
else:
enemy.update(None, cfg.SCREENSIZE[1])
if enemy_need_down:
if enemy.update('down', cfg.SCREENSIZE[1]):
running = False
is_win = False
enemy.change_count -= 1
enemy.draw(screen)
enemy_move_flag = False
enemy_need_down = False
enemy_shot_flag = False
# ----Effets d'explosion ennemis
for boomed_enemy in boomed_enemies_group:
if boomed_enemy.boom(screen):
boomed_enemies_group.remove(boomed_enemy)
del boomed_enemy
# --Détection d'une collision entre une balle ennemie et notre vaisseau
if not myaircraft.one_dead:
if pygame.sprite.spritecollide(myaircraft, en_bullets_group, True, None):
myaircraft.one_dead = True
if myaircraft.one_dead:
if myaircraft.boom(screen):
myaircraft.resetBoom()
myaircraft.num_life -= 1
if myaircraft.num_life < 1:
running = False
is_win = False
else:
# ----Renouveler le vaisseau
myaircraft.update(cfg.SCREENSIZE[0])
# ----Dessiner un vaisseau spatial
myaircraft.draw(screen)
if (not ufo.has_boomed) and (ufo.is_dead):
if ufo.boom(screen):
ufo.has_boomed = True
else:
# ----Mise à jourUFO
ufo.update(cfg.SCREENSIZE[0])
# ----La peintureUFO
ufo.draw(screen)
# --Dessinez les balles de notre vaisseau
for bullet in my_bullets_group:
if bullet.update():
my_bullets_group.remove(bullet)
del bullet
else:
bullet.draw(screen)
# --Dessinez les balles ennemies
for bullet in en_bullets_group:
if bullet.update(cfg.SCREENSIZE[1]):
en_bullets_group.remove(bullet)
del bullet
else:
bullet.draw(screen)
if myaircraft.score > highest_score:
highest_score = myaircraft.score
# --Chaque augmentation du score2000Notre vaisseau ajoute une vie
if (myaircraft.score % 2000 == 0) and (myaircraft.score > 0) and (myaircraft.score != myaircraft.old_score):
myaircraft.old_score = myaircraft.score
myaircraft.num_life = min(myaircraft.num_life + 1, myaircraft.max_num_life)
# --Si l'ennemi est mort, il gagne
if len(enemies_group) < 1:
is_win = True
running = False
# --Afficher le texte
# ----Score actuel
showText(screen, 'SCORE: ', cfg.WHITE, font, 200, 8)
showText(screen, str(myaircraft.score), cfg.WHITE, font, 200, 24)
# ----Nombre d'ennemis
showText(screen, 'ENEMY: ', cfg.WHITE, font, 370, 8)
showText(screen, str(len(enemies_group)), cfg.WHITE, font, 370, 24)
# ----La plus haute note de l'histoire
showText(screen, 'HIGHEST: ', cfg.WHITE, font, 540, 8)
showText(screen, str(highest_score), cfg.WHITE, font, 540, 24)
# ----FPS
showText(screen, 'FPS: ' + str(int(clock.get_fps())), cfg.RED, font, 8, 8)
# --Afficher la durée de vie restante
showLife(screen, myaircraft.num_life, cfg.GREEN)
pygame.display.update()
clock.tick(cfg.FPS)
with open('score', 'w') as f:
f.write(str(highest_score))
return is_win
'''Fonction principale'''
def main():
# Initialisation
pygame.init()
pygame.display.set_caption('Invasion extraterrestre —— Neuf chansons')
screen = pygame.display.set_mode(cfg.SCREENSIZE)
pygame.mixer.init()
pygame.mixer.music.load(cfg.BGMPATH)
pygame.mixer.music.set_volume(0.4)
pygame.mixer.music.play(-1)
while True:
is_win = startGame(screen)
endInterface(screen, cfg.BLACK, is_win)
'''run'''
if __name__ == '__main__':
main()

13、Oiseaux avides

Méthode de jeu:Un peu comme le poseur de bombe.,Il n'y a pas de problème à contrôler le déplacement.

14、Seiki888‘’

Méthode de jeu:Je parie que tout le monde a joué à ça en classe,Pensez à jouer avec vos camarades de table à l'époque avec des livres usagés.

Partage des sources

from tkinter import *
import tkinter.messagebox as msg
root = Tk()
root.title('TIC-TAC-TOE---Project Gurukul')
# labels
Label(root, text="player1 : X", font="times 15").grid(row=0, column=1)
Label(root, text="player2 : O", font="times 15").grid(row=0, column=2)
digits = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# for player1 sign = X and for player2 sign= Y
mark = ''
# counting the no. of click
count = 0
panels = ["panel"] * 10
def win(panels, sign):
return ((panels[1] == panels[2] == panels[3] == sign)
or (panels[1] == panels[4] == panels[7] == sign)
or (panels[1] == panels[5] == panels[9] == sign)
or (panels[2] == panels[5] == panels[8] == sign)
or (panels[3] == panels[6] == panels[9] == sign)
or (panels[3] == panels[5] == panels[7] == sign)
or (panels[4] == panels[5] == panels[6] == sign)
or (panels[7] == panels[8] == panels[9] == sign))
def checker(digit):
global count, mark, digits
# Check which button clicked
if digit == 1 and digit in digits:
digits.remove(digit)
##player1 will play if the value of count is even and for odd player2 will play
if count % 2 == 0:
mark = 'X'
panels[digit] = mark
elif count % 2 != 0:
mark = 'O'
panels[digit] = mark
button1.config(text=mark)
count = count + 1
sign = mark
if (win(panels, sign) and sign == 'X'):
msg.showinfo("Result", "Player1 wins")
root.destroy()
elif (win(panels, sign) and sign == 'O'):
msg.showinfo("Result", "Player2 wins")
root.destroy()
if digit == 2 and digit in digits:
digits.remove(digit)
if count % 2 == 0:
mark = 'X'
panels[digit] = mark
elif count % 2 != 0:
mark = 'O'
panels[digit] = mark
button2.config(text=mark)
count = count + 1
sign = mark
if (win(panels, sign) and sign == 'X'):
msg.showinfo("Result", "Player1 wins")
root.destroy()
elif (win(panels, sign) and sign == 'O'):
msg.showinfo("Result", "Player2 wins")
root.destroy()
if digit == 3 and digit in digits:
digits.remove(digit)
if count % 2 == 0:
mark = 'X'
panels[digit] = mark
elif count % 2 != 0:
mark = 'O'
panels[digit] = mark
button3.config(text=mark)
count = count + 1
sign = mark
if (win(panels, sign) and sign == 'X'):
msg.showinfo("Result", "Player1 wins")
root.destroy()
elif (win(panels, sign) and sign == 'O'):
msg.showinfo("Result", "Player2 wins")
root.destroy()
if digit == 4 and digit in digits:
digits.remove(digit)
if count % 2 == 0:
mark = 'X'
panels[digit] = mark
elif count % 2 != 0:
mark = 'O'
panels[digit] = mark
button4.config(text=mark)
count = count + 1
sign = mark
if (win(panels, sign) and sign == 'X'):
msg.showinfo("Result", "Player1 wins")
root.destroy()
elif (win(panels, sign) and sign == 'O'):
msg.showinfo("Result", "Player2 wins")
root.destroy()
if digit == 5 and digit in digits:
digits.remove(digit)
if count % 2 == 0:
mark = 'X'
panels[digit] = mark
elif count % 2 != 0:
mark = 'O'
panels[digit] = mark
button5.config(text=mark)
count = count + 1
sign = mark
if (win(panels, sign) and sign == 'X'):
msg.showinfo("Result", "Player1 wins")
root.destroy()
elif (win(panels, sign) and sign == 'O'):
msg.showinfo("Result", "Player2 wins")
root.destroy()
if digit == 6 and digit in digits:
digits.remove(digit)
if count % 2 == 0:
mark = 'X'
panels[digit] = mark
elif count % 2 != 0:
mark = 'O'
panels[digit] = mark
button6.config(text=mark)
count = count + 1
sign = mark
if (win(panels, sign) and sign == 'X'):
msg.showinfo("Result", "Player1 wins")
root.destroy()
elif (win(panels, sign) and sign == 'O'):
msg.showinfo("Result", "Player2 wins")
root.destroy()
if digit == 7 and digit in digits:
digits.remove(digit)
if count % 2 == 0:
mark = 'X'
panels[digit] = mark
elif count % 2 != 0:
mark = 'O'
panels[digit] = mark
button7.config(text=mark)
count = count + 1
sign = mark
if (win(panels, sign) and sign == 'X'):
msg.showinfo("Result", "Player1 wins")
root.destroy()
elif (win(panels, sign) and sign == 'O'):
msg.showinfo("Result", "Player2 wins")
root.destroy()
if digit == 8 and digit in digits:
digits.remove(digit)
if count % 2 == 0:
mark = 'X'
panels[digit] = mark
elif count % 2 != 0:
mark = 'O'
panels[digit] = mark
button8.config(text=mark)
count = count + 1
sign = mark
if (win(panels, sign) and sign == 'X'):
msg.showinfo("Result", "Player1 wins")
root.destroy()
elif (win(panels, sign) and sign == 'O'):
msg.showinfo("Result", "Player2 wins")
root.destroy()
if digit == 9 and digit in digits:
digits.remove(digit)
if count % 2 == 0:
mark = 'X'
panels[digit] = mark
elif count % 2 != 0:
mark = 'O'
panels[digit] = mark
button9.config(text=mark)
count = count + 1
sign = mark
if (win(panels, sign) and sign == 'X'):
msg.showinfo("Result", "Player1 wins")
root.destroy()
elif (win(panels, sign) and sign == 'O'):
msg.showinfo("Result", "Player2 wins")
root.destroy()
###if count is greater then 8 then the match has been tied
if (count > 8 and win(panels, 'X') == False and win(panels, 'O') == False):
msg.showinfo("Result", "Match Tied")
root.destroy()
####define buttons
button1 = Button(root, width=15, font=('Times 16 bold'), height=7, command=lambda: checker(1))
button1.grid(row=1, column=1)
button2 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(2))
button2.grid(row=1, column=2)
button3 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(3))
button3.grid(row=1, column=3)
button4 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(4))
button4.grid(row=2, column=1)
button5 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(5))
button5.grid(row=2, column=2)
button6 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(6))
button6.grid(row=2, column=3)
button7 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(7))
button7.grid(row=3, column=1)
button8 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(8))
button8.grid(row=3, column=2)
button9 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(9))
button9.grid(row=3, column=3)
root.mainloop()

C'est un peu difficile.

【Détails du jeu+Voir le bas pour obtenir le code source】

15、Bombardier

Détails du jeu:Un autre jeu classique d'enfance,Il s'est fait exploser plusieurs fois quand il était petit.

16、Défendre la forêt

Détails du jeu:Comme défendre le radis,Petits jeux de défense de tour,La disposition doit être raisonnable,Considérez les attributs de portée, etc

17、Cinq échecs

Détails du jeu:J'adorais jouer quand j'étais enfant,Il y a un moyen de gagner le premier sorti,Je savais qu'il y aurait une règle d'interdiction des mains,C'est plus compliqué,Tout le monde peut apprendre le premier départ gagnant,Il y a puyue、Les météorites、Chu Yue、Les étoiles、Comète, attends.

18、Manger des haricots

Détails du jeu:Tester la vitesse et le fonctionnement de la main et le déplacement,Je n'aime pas courir comme ça.

19、Bataille de chars

Détails du jeu:C'est un classique,J'aime jouer en mode double,Il y a quelques modèles modifiés,C'est l'un des rares jeux que j'ai l'impression de ne pas être démodé en ce moment.

20、Super Mary

Détails du jeu:Classique dans le classique,C'était dur de jouer quand j'étais enfant,L'opération n'a pas besoin d'être introduite.

21、Fruit Ninja

Détails du jeu:La coupe de fruits est un jeu populaire,Je ne sais pas pourquoi le couteau explose toujours,Un jeu très relaxant.

Extrêmement difficile

【Stratégie globale+Voir le bas pour obtenir le code source】

22、La guerre des avions

Stratégie globale:Le jeu commence ici,C'est vraiment difficile à calculer,Ce combat d'avion est un peu pire que celui de l'enfance.

23、2048

Stratégie globale:C'est aussi ce qui a fait rage,Plus c'est dur d'aller à l'arrière,Assurez - vous d'avoir un grand nombre dans le coin lors de la synthèse.

24、Pousse la boîte.

Stratégie globale:Les jeux que j'avais sur ce téléphone avant,Plus il est difficile de pousser à l'arrière du niveau,J'ai l'impression de ne pas pouvoir jouer jusqu'à 20 ans.

25、Tour de défense

Stratégie globale:Encore un jeu de défense de tour,C'est intéressant,C'est juste que la vitesse est trop rapide,Je ne peux pas réagir.

26、Les plantes combattent les zombies

Stratégie globale:Les plantes les plus classiques contre les zombies,L'opération n'a pas besoin d'être décrite,Mais tu peux jouer tout seul.

27、Déminage

Détails du jeu:Le déminage est toujours intéressant,Les compétences jouent et testent le raisonnement

Le défi ultime 

【C'est trop dur...Le code source reçoit voir le bas de l'article】

28、Puzzle

Expérience de jeu:Trois défis ultimes,Même si tu es bon,Le puzzle est mon plus gros problème,C'est trop dur..

 29、Dans le labyrinthe.

Expérience de jeu:Je ne suis pas sorti de toute façon,Tout le monde peut sortir

30、Le jeu le plus fort

Expérience de jeu:C'est trop dur à contrôler..


Informations sur l'industrie:Ajouter et recevoirPPTModèle、Modèle de CV、Livres Classiques de l'industriePDF.
Questionnaire d'entrevue:Un classique.,Le vrai problème de l'entretien d'usine chaud,Mise à jour continue,Ajouter obtenir.
Matériel d'apprentissage:Y comprisPython、Crawler、Analyse des données、Algorithmes et autres vidéos et documents d'apprentissage,Ajouter obtenir
AC plus Groupe:Big Boss dirige le labyrinthe,Vos problèmes sont souvent rencontrés par quelqu'un,Échange d'assistance technique mutuelle.
 

Autres sources de revenus

版权声明
本文为[Cinq paquets de spaghettis!]所创,转载请带上原文链接,感谢
https://pythonmana.com/2021/10/20211028191003256s.html

  1. 怎么用Python打印数字三角
  2. 怎麼用Python打印數字三角
  3. Comment imprimer un triangle numérique en python
  4. Tester la fonctionnalité de base du tableau de développement microspython mm32f3277 Flying - by - flying
  5. Python extrait plusieurs champs de plusieurs chaînes
  6. Pandas核心用法
  7. Utilisation centrale de pandas
  8. Python, problème de fonctionnement du fichier de données, Code désiré
  9. 【78技术人社群~Python分部】,就在今天成立 →
  10. 社区共读《Python编程从入门到实践》第一天阅读建议
  11. La communauté lit les recommandations de lecture pour la première journée de la programmation Python de l'introduction à la pratique
  12. [78 Communauté des technologues ~ Division Python], fondée aujourd'hui →
  13. Pandas核心用法
  14. 您好,请问您的python按钮开了线程处理还卡ui的问题解决了吗
  15. Python: résolution d'exemples, je ne sais pas comment attendre que tous les chiffres soient entrés avant de sortir
  16. Bonjour, puis - je vous demander si votre bouton Python est activé pour le traitement du thread et le retour de l'interface utilisateur de la carte a été résolu?
  17. Utilisation centrale de pandas
  18. Python technique 2: advanced usage of function parameters
  19. OpenCV-Python实战(14)——人脸检测详解(仅需6行代码学会4种人脸检测方法)
  20. OpenCV-Python實戰(14)——人臉檢測詳解(僅需6行代碼學會4種人臉檢測方法)
  21. OpenCV - Python Real play (14) - face detection details (six lignes de code seulement pour apprendre 4 méthodes de détection de visage)
  22. 你好,python开发mes系统,能分享下吗,我最近也想搞这方面的
  23. 你好,python開發mes系統,能分享下嗎,我最近也想搞這方面的
  24. Bonjour, Python a développé mon système, pouvez - vous le partager?
  25. Introduction to tuples in Python
  26. Introduction to strings in python (Part 2)
  27. Introduction to strings in python (Part 1)
  28. python关于 if 的简单操作时,输出结果不是预期所要的结果 的问题
  29. python關於 if 的簡單操作時,輸出結果不是預期所要的結果 的問題
  30. Lorsque Python fonctionne simplement sur if, la sortie n'est pas le résultat attendu
  31. Python中字典问题请求解惑
  32. Python中字典問題請求解惑
  33. Demande de résolution de problèmes de dictionnaire en python
  34. Python中字典问题请求解惑
  35. Python technique 2: advanced usage of function parameters
  36. Demande de résolution de problèmes de dictionnaire en python
  37. Preliminary Knowledge - Python Core use Common Data Analysis Library (ⅱ)
  38. 关于python的代码问题,终端打印为什么会起飞
  39. En ce qui concerne les problèmes de code Python, pourquoi l'impression du terminal décolle - t - elle?
  40. Python中种子seed的运用问题
  41. L'application de Seed en python
  42. Python functional programming series 008: Testability
  43. [must see for getting started with Python] the difference and connection between cookie and session in Python!
  44. Python Xiaobai from scratch pyqt5 project actual combat (4) basic controls
  45. Python Xiaobai starts the pyqt5 project from scratch (3) connection between signal and slot
  46. Echarts ne peut pas afficher le HTML en PDF en utilisant le pdfkit de Python
  47. 一只Python 小white 的日常提问(づ ●─● )づ
  48. 2021 tutoriel complet d'automatisation des tests d'interface python [matériel d'apprentissage joint]
  49. Décrivez ce que les connaissances pertinentes jouent dans votre travail en utilisant arduino ou Python, y compris les bibliothèques pertinentes, en conjonction avec votre travail quotidien.
  50. Une question quotidienne d'un petit morceau de Python (づ● - ●)
  51. Python中字典问题请求解惑
  52. 一只Python 小white 的日常提問(づ ●─● )づ
  53. 在python中的问题,请问如何解决
  54. Only 10 questions are needed to easily master Matplotlib graphics processing | Python skill tree
  55. 在python中的問題,請問如何解决
  56. Comment résoudre le problème en python
  57. Demande de résolution de problèmes de dictionnaire en python
  58. 使用python,在一个命名为.txt文本文档写入n m乘法表。
  59. En utilisant Python, écrivez une table de multiplication n m dans un document texte nommé.txt.
  60. 使用python,在一個命名為.txt文本文檔寫入n m乘法錶。