Un ciel rempli
Fait partie de la section Python dans une fenêtre de jeu du Journey Pygame de Coddy. Leçon 32 sur 32.
Le jeu se termine lorsque le ciel compte vingt étoiles. Deux choses changent : les clics cessent d’ajouter des étoiles et un message l’indique. Les deux consultent la même liste :
if event.type == pygame.MOUSEBUTTONDOWN and len(stars) < 20:
stars.append(event.pos)if len(stars) == 20:
message = font.render("The sky is full!", True, (230, 230, 240))
screen.blit(message, message.get_rect(center=(320, 240)))message.get_rect(center=(320, 240)) est le rectangle de l’image du texte, positionné de sorte que son centre se trouve en (320, 240). L’afficher à cet emplacement centre le texte dans la fenêtre, quelle que soit sa longueur.
Teste == 20 ici, pas > 20 : la limite arrête la liste à 20, elle ne peut donc jamais en contenir davantage.
Une fois le ciel rempli, il ne reste plus qu’à le regarder. La section 2 montre comment recommencer une partie avec une touche, et comment terminer une partie par une victoire ou une défaite.
Défi
MoyenTermine le ciel nocturne :
- Ajoute une étoile lors d’un clic uniquement tant que
len(stars) < 20. - Lorsque
len(stars) == 20, afficheThe sky is full!en(230, 230, 240), centrée en (320, 240).
Essayez vous-même
import random
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# Préparez les éléments ici, avant la boucle de jeu.
stars = []
font = pygame.font.Font(None, 36)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.MOUSEBUTTONDOWN:
stars.append(event.pos)
# Modifiez les éléments ici, une fois par image.
screen.fill((20, 24, 48))
# Dessinez ici, après le remplissage.
pygame.draw.circle(screen, (240, 230, 160), (560, 80), 40)
pygame.draw.rect(screen, (14, 16, 30), (0, 430, 640, 50))
for star in stars:
colour = (255, 255, 255)
if random.randint(1, 30) == 1:
colour = (110, 120, 170)
pygame.draw.circle(screen, colour, star, 3)
text = font.render(f"Stars: {len(stars)}/20", True, (230, 230, 240))
screen.blit(text, (20, 20))
pygame.display.flip()
clock.tick(60)
pygame.quit()
Toutes les leçons de Python dans une fenêtre de jeu
1Votre première fenêtre
Votre premier programmeAfficher un messageLes couleurs en nombresDessiner la LuneEntraînez-vous par vous-même : Playground Pygame