Alcanza la meta
Parte de la sección El bucle del juego del Journey de Pygame de Coddy. Lección 8 de 32.
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 cambiarlo, así que el fondo permanece verde aunque el cuadrado salga del objetivo.
Desafío
Fácil- Antes del bucle, establece
won = False. - Después de limitar
xey, establecewon = Truecuandox >= 420ey >= 300. - Rellena la pantalla con
(40, 110, 70)cuandowonsea verdadero y con(30, 30, 46)en caso contrario. - Antes del cuadrado del jugador, dibuja la meta: en 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()
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de El bucle del juego
1Mueve un cuadrado
Abre una ventanaRellena el fondo4Movimiento basado en el tiempo
Tiempo deltaPíxeles por segundoVector2Aceleración y fricciónReaparecer al otro lado de la pantallaPractica por tu cuenta: Playground de Pygame