Menu
CoddyTech

Alcanzar la meta

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

Un juego necesita un objetivo. Dibuja un cuadrado verde en la esquina inferior derecha y, cuando el cuadrado del jugador entre en él, el jugador ganará.

El objetivo está en (420, 300) y mide 60 por 60. El cuadrado del jugador está dentro cuando su lado izquierdo está en 420 o más y su parte superior en 300 o más. Ambas condiciones deben cumplirse, así que únelas con and.

La victoria debe mantenerse. Guárdala en una variable que empiece en False y que solo pueda convertirse en True:

won = False

while running:
    # mueve el cuadrado
    if x >= 420 and y >= 300:
        won = True
    if won:
        screen.fill((40, 110, 70))
    else:
        screen.fill((30, 30, 46))

Una vez que won es True, nada vuelve a asignarle otro valor, así que el fondo permanece verde incluso si el cuadrado sale del objetivo.

challenge icon

Desafío

Fácil
  1. Antes del bucle, establece won = False.
  2. Después de limitar x y y, establece won = True cuando x >= 420 y y >= 300.
  3. Rellena la pantalla con (40, 110, 70) cuando won sea verdadero, y con (30, 30, 46) en caso contrario.
  4. Antes del cuadrado del jugador, dibuja la meta: verde (60, 200, 120) en (420, 300, 60, 60).

Pruébalo tú mismo

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Move the Square")
clock = pygame.time.Clock()

x, y = 220, 160

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    keys = pygame.key.get_pressed()
    speed = 4
    if keys[pygame.K_SPACE]:
        speed = 8
    if keys[pygame.K_LEFT]:
        x -= speed
    if keys[pygame.K_RIGHT]:
        x += speed
    if keys[pygame.K_UP]:
        y -= speed
    if keys[pygame.K_DOWN]:
        y += speed

    x = max(0, min(x, 480 - 40))
    y = max(0, min(y, 360 - 40))

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (255, 196, 0), (x, y, 40, 40))
    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