Menu
CoddyTech

Retour au centre

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

Lorsqu’un joueur manque la balle, celle-ci sort de la fenêtre de son côté. Ramène-la au milieu et envoie-la vers l’autre côté.

if ball.right < 0 or ball.left > 600:
    ball.center = (300, 200)
    vx = -vx

ball.right < 0 signifie que la balle entière a dépassé le bord gauche, et ball.left > 600 que la balle entière a dépassé le bord droit. Définir ball.center déplace le Rect de sorte que son centre se trouve à ce point ; sa taille reste la même.

Ici, vx = -vx ne pose aucun problème : la balle est au milieu, loin de toute raquette.

challenge icon

Défi

Facile

Ramène au centre une balle manquée.

  1. Lorsque la balle entière dépasse le bord gauche ou droit, définis son center sur (300, 200).
  2. Inverse aussi vx à cet endroit.

Appuie sur « Jouer » et manque la balle : elle revient et repart dans l’autre sens. 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)

    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