Frapper la raquette
Fait partie de la section Projets du Journey Pygame de Coddy. Leçon 14 sur 31.
Lorsque la balle touche une raquette, elle devrait repartir dans l’autre sens. ball.colliderect(right) vous indique si elles se touchent.
Inverser le signe, vx = -vx, comporte un piège. Si la balle se trouve encore à l’intérieur de la raquette à l’image suivante (elle a touché le bord de la raquette, ou la raquette s’est déplacée sur elle), le signe s’inverse encore et encore : la balle tremble à l’intérieur de la raquette.
Définissez la direction au lieu de l’inverser. abs(vx) est vx sans son signe, donc toujours positif :
if ball.colliderect(left):
vx = abs(vx)
if ball.colliderect(right):
vx = -abs(vx)Après avoir touché la raquette de gauche, la balle part toujours vers la droite, et après avoir touché celle de droite, toujours vers la gauche, quel que soit le nombre d’images pendant lesquelles elles se touchent.
Défi
MoyenAprès le rebond contre le mur, lorsque la balle entre en collision avec left, définis vx = abs(vx) ; lorsqu’elle entre en collision avec right, définis vx = -abs(vx).
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
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()
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Projets
Entraînez-vous par vous-même : Playground Pygame