Un bloque que cae
Parte de la sección El bucle del juego del Journey de Pygame de Coddy. Lección 24 de 32.
Algo que cae es algo cuya y aumenta en cada fotograma. Haz que el bloque también sea un Rect y suma un valor a su y en cada pasada del bucle:
block = pygame.Rect(220, 0, 20, 20)
while running:
# eventos y teclas
block.y += 3
# rellenar, dibujarA 60 fotogramas por segundo, 3 píxeles por fotograma equivalen a 180 píxeles por segundo. La ventana tiene 360 píxeles de alto, así que el bloque tarda dos segundos en llegar al fondo.
Este juego se mueve fotograma a fotograma, como Move a Square, no mediante dt. Un Rect solo conserva números enteros, así que un paso de, por ejemplo, 0.6 píxeles se truncaría a 0 y el Rect nunca se movería. Los juegos que mueven Rects en función del tiempo guardan la posición en un Vector2 y la copian en el Rect.
El bloque sigue cayendo después de salir de la ventana. Todavía nada lo detiene; la próxima lección lo traerá de vuelta.
Desafío
Fácil- Debajo de la cesta, crea
block = pygame.Rect(220, 0, 20, 20). - En el bucle, después de que se mueva la cesta, suma 3 a
block.y. - Dibuja el bloque en rojo
(235, 80, 80)después de la cesta.
Pruébalo tú mismo
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Catch the Blocks")
clock = pygame.time.Clock()
basket = pygame.Rect(200, 330, 80, 16)
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]:
basket.x -= 8
if keys[pygame.K_RIGHT]:
basket.x += 8
basket.clamp_ip(screen.get_rect())
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (80, 160, 255), basket)
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 pantalla2Formas y colores
Círculos, líneas y polígonosContornos y esquinasUna escena de formasColores que cambian5Atrapa los bloques
La cestaUn bloque que caePractica por tu cuenta: Playground de Pygame