Menu
CoddyTech

Tableau des scores

Leçon 34 sur 41 du cours Créer des jeux avec Pygame de Coddy.

Une balle qui sort par la droite rapporte un point au joueur de gauche, et inversement. Divise le test en deux, pour que chaque côté sache qui a marqué :

if ball.left > 600:
    left_score += 1
    ball.center = (300, 200)
    vx = -vx
if ball.right < 0:
    right_score += 1
    ball.center = (300, 200)
    vx = -vx

Affiche les deux scores sur une seule ligne en haut, centrés : f"{left_score} : {right_score}" affiche 2 : 1.

challenge icon

Défi

Facile

Conserve le score des deux joueurs.

  1. Avant la boucle, définis font = pygame.font.Font(None, 36), left_score = 0 et right_score = 0.
  2. Une balle qui sort à droite ajoute 1 à left_score, et une balle qui sort à gauche ajoute 1 à right_score ; dans les deux cas, la balle est quand même remise en jeu.
  3. Affiche f"{left_score} : {right_score}" en (240, 240, 240), centré en (300, 30).

Appuie sur « Jouer » et laisse passer la balle : le score affiche 1 : 0. Puis appuie sur « Vérifier ».

Essayez vous-même

import pygame

pygame.init()
screen = pygame.display.set_mode((600, 400))
pygame.display.set_caption("Pong")
clock = pygame.time.Clock()

ball = pygame.Rect(293, 193, 14, 14)
vx, vy = 5, 4
left = pygame.Rect(20, 160, 12, 80)
right = pygame.Rect(568, 160, 12, 80)

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_w]:
        left.y -= 6
    if keys[pygame.K_s]:
        left.y += 6
    if keys[pygame.K_UP]:
        right.y -= 6
    if keys[pygame.K_DOWN]:
        right.y += 6
    left.clamp_ip(screen.get_rect())
    right.clamp_ip(screen.get_rect())

    ball.x += vx
    ball.y += vy
    if ball.top <= 0 or ball.bottom >= 400:
        vy = -vy
    if ball.colliderect(left):
        vx = abs(vx)
    if ball.colliderect(right):
        vx = -abs(vx)
    if ball.right < 0 or ball.left > 600:
        ball.center = (300, 200)
        vx = -vx

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (80, 160, 255), left)
    pygame.draw.rect(screen, (235, 80, 80), right)
    pygame.draw.rect(screen, (255, 196, 0), ball)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Toutes les leçons de Créer des jeux avec Pygame

Entraînez-vous par vous-même : Playground Pygame