Permanece en pantalla
Parte de la sección El bucle del juego del Journey de Pygame de Coddy. Lección 7 de 32.
Mantén pulsada la tecla Derecha el tiempo suficiente y el cuadrado saldrá de la ventana. Para mantenerlo dentro, limita x y y después de moverlos.
min(a, b) devuelve el número menor y max(a, b) el mayor. Juntas, mantienen un número entre dos límites:
x = max(0, min(x, 480 - 40))min(x, 440) impide que x supere 440, y max(0, ...) impide que baje de 0. ¿Por qué 440 y no 480? x es el lado izquierdo del cuadrado, así que el lado derecho está en x + 40. En 440, el lado derecho toca el borde de la ventana.
Lo mismo ocurre con y, usando la altura de la ventana.
Desafío
FácilDespués de las cuatro comprobaciones de las flechas y antes del relleno, mantén el cuadrado dentro de la ventana de 480 por 360: limita x de 0 a 440 y y de 0 a 320.
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
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (255, 196, 0), (x, y, 40, 40))
pygame.display.flip()
clock.tick(60)
pygame.quit()
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