Gagner ou perdre
Leçon 15 sur 40 du cours Créez des jeux avec Pygame de Coddy.
Une partie se termine. Ici, tu perds quand le nombre de vies atteint 0 et tu gagnes quand le score atteint 10. Tant qu’aucun de ces événements ne s’est produit, la partie continue.
Place tout ce qui bouge sous une seule condition, afin que tout s’arrête à la fin de la partie :
if lives > 0 and score < 10:
# les touches, le panier, le bloc, les prises et les ratésLe dessin reste en dehors de ce if : l’écran affiche toujours la dernière image, avec le résultat par-dessus.
if lives == 0:
message = font.render("Game over", True, (240, 240, 240))
screen.blit(message, message.get_rect(center=(240, 160)))message.get_rect(center=(240, 160)) est le Rect de l’image du texte, positionné de sorte que son centre se trouve en (240, 160). L’affichage avec un Rect utilise son coin supérieur gauche, donc le texte est centré.
Défi
Moyen- Indente tout ce qui bouge (les touches, le panier, le bloc, les captures et les ratés) sous
if lives > 0 and score < 10:. - Après avoir affiché le score et les vies, affiche
Game overlorsquelives == 0, ouYou win!lorsquescore == 10, centré en(240, 160).
Essayez vous-même
import random
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Catch the Blocks")
clock = pygame.time.Clock()
font = pygame.font.Font(None, 32)
basket = pygame.Rect(200, 330, 80, 16)
block = pygame.Rect(220, 0, 20, 20)
score = 0
lives = 3
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]:
basket.x -= 8
if keys[pygame.K_RIGHT]:
basket.x += 8
basket.clamp_ip(screen.get_rect())
block.y += 3
if block.top > 360:
block.y = -20
block.x = random.randint(0, 460)
lives -= 1
if block.colliderect(basket):
block.y = -20
block.x = random.randint(0, 460)
score += 1
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (80, 160, 255), basket)
pygame.draw.rect(screen, (235, 80, 80), block)
score_text = font.render(f"Score: {score}", True, (240, 240, 240))
screen.blit(score_text, (10, 10))
lives_text = font.render(f"Lives: {lives}", True, (240, 240, 240))
screen.blit(lives_text, (370, 10))
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