Menu
CoddyTech

Termina tu juego

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

Ahora, los pasos 3 a 5: un desafío, un final y texto. Rock Dodge mantiene sus rocas en una lista de Rects: una roca nueva cada 400 ms, muchas en la pantalla a la vez.

rocks = []

# en un evento del temporizador NEW_ROCK:
rocks.append(pygame.Rect(random.randint(0, 450), -30, 30, 30))

# en cada fotograma:
for rock in rocks:
    rock.y += 5
    if rock.colliderect(player):
        state = "lost"
rocks = [rock for rock in rocks if rock.top < 360]

La última línea es una comprensión de listas: una lista nueva que contiene solo las rocas que siguen en pantalla, para que la lista no crezca sin límite.

Una cadena state, "playing", "lost" o "won", decide qué hace cada fotograma, como en Sky Runner. Y pygame.time.get_ticks() devuelve los milisegundos transcurridos desde que empezó el juego, lo que permite usar un temporizador: sobrevive 20 segundos para ganar.

Tu juego puede usar todo lo aprendido en este curso, y el recorrido por Pygame muestra mucho más: sprites, imágenes, sonido, menús, puntuaciones máximas y mapas.

Haz que tu juego sea único: cambia los colores, las velocidades y las reglas. Después, juégalo. Si es demasiado difícil ganar o demasiado fácil perder, cambia los números hasta que sea divertido.

challenge icon

Desafío

Fácil

Termina tu juego.

  1. Añade algo que se mueva por sí solo.
  2. Muestra texto en la pantalla, como una puntuación o un temporizador.
  3. Incluye un final: una forma de ganar, una forma de perder o ambas.

Pulsa «Jugar»: algo se mueve por sí solo y se muestra tu texto. Después, pulsa «Comprobar».

Pruébalo tú mismo

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Rock Dodge")
clock = pygame.time.Clock()

player = pygame.Rect(220, 320, 40, 20)

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_LEFT]:
        player.x -= 7
    if keys[pygame.K_RIGHT]:
        player.x += 7
    player.clamp_ip(screen.get_rect())

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (80, 160, 255), player)
    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