Menu
CoddyTech

Marcador

Lección 34 de 40 del curso Crea juegos con Pygame de Coddy.

Si la pelota sale por la derecha, es un punto para el jugador de la izquierda, y viceversa. Divide la prueba en dos para que cada lado sepa quién anotó:

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

Muestra ambas puntuaciones en una sola línea en la parte superior, centradas: f"{left_score} : {right_score}" se lee 2 : 1.

challenge icon

Desafío

Fácil
  1. Antes del bucle, crea font = pygame.font.Font(None, 36), left_score = 0 y right_score = 0.
  2. Divide el reinicio en dos: una pelota que pasa el borde derecho suma 1 a left_score, y una pelota que pasa el borde izquierdo suma 1 a right_score. En ambos casos, la pelota vuelve al centro y se invierte vx.
  3. Representa f"{left_score} : {right_score}" en (240, 240, 240), centrado en (300, 30).

Pruébalo tú mismo

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()
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Crea juegos con Pygame

Practica por tu cuenta: Playground de Pygame