Terminez votre jeu
Leçon 40 sur 40 du cours Créez des jeux avec Pygame de Coddy.
Passons maintenant aux étapes 3 à 5 : un défi, une fin et du texte. Rock Dodge utilise une idée que tu n’as pas encore vue, une liste de Rects : un nouveau rocher toutes les 400 ms, avec plusieurs rochers à l’écran en même temps.
rocks = []
# lors d'un événement du minuteur NEW_ROCK :
rocks.append(pygame.Rect(random.randint(0, 450), -30, 30, 30))
# à chaque image :
for rock in rocks:
rock.y += 5
if rock.colliderect(player):
state = "lost"
rocks = [rock for rock in rocks if rock.top < 360]La dernière ligne est une compréhension de liste : une nouvelle liste contenant uniquement les rochers encore à l’écran, afin que la liste ne grandisse pas indéfiniment.
Une chaîne state, "playing", "lost" ou "won", remplace plusieurs indicateurs. Et pygame.time.get_ticks() renvoie le nombre de millisecondes écoulées depuis le démarrage du jeu, ce qui permet de créer un chronomètre : survis 20 secondes pour gagner.
Personnalise ton jeu : change les couleurs, les vitesses, les règles. Puis joue. S’il est trop difficile de gagner ou trop facile de perdre, modifie les nombres jusqu’à ce que le jeu soit amusant.
Défi
FacileTermine ton jeu pour qu’il comporte :
- Quelque chose qui se déplace tout seul.
- Du texte à l’écran, comme un score ou un minuteur.
- Une fin : une façon de gagner, une façon de perdre, ou les deux.
Les vérifications recherchent du texte, un élément qui se déplace sans qu’aucune touche ne soit maintenue, un jeu qui fonctionne pendant 30 secondes sans erreur et une fenêtre qui se ferme. Tout le reste dépend de toi.
Essayez vous-même
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Rock Dodge")
clock = pygame.time.Clock()
player = pygame.Rect(220, 320, 40, 20)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
player.x -= 7
if keys[pygame.K_RIGHT]:
player.x += 7
player.clamp_ip(screen.get_rect())
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (80, 160, 255), player)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Créez des jeux avec Pygame
Entraînez-vous par vous-même : Playground Pygame