Menu
CoddyTech

Marcador

Lección 34 de 41 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

Lleva la puntuación de ambos jugadores.

  1. Antes del bucle, crea font = pygame.font.Font(None, 36), left_score = 0 y right_score = 0.
  2. Si la pelota sale por la derecha, suma 1 a left_score; si sale por la izquierda, suma 1 a right_score; en ambos casos, reiníciala.
  3. Representa f"{left_score} : {right_score}" en (240, 240, 240), centrado en (300, 30).

Pulsa «Jugar» y deja pasar la pelota: la puntuación indica 1 : 0. Después, pulsa «Comprobar».

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()

Todas las lecciones de Crea juegos con Pygame

Practica por tu cuenta: Playground de Pygame