Un bloque que cae
Lección 10 de 41 del curso Crea juegos con Pygame de Coddy.
Algo que cae es algo cuya y aumenta en cada fotograma. Haz que el bloque también sea un Rect y aumenta 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 por fotogramas, como Move a Square, no por 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 según el tiempo guardan la posición en un Vector2 y la copian al Rect.
El bloque sigue cayendo después de salir de la ventana. Nada lo detiene todavía; la próxima lección hará que vuelva.
Desafío
FácilDeja caer un bloque desde arriba.
- Debajo de la cesta, crea
block = pygame.Rect(220, 0, 20, 20). - En el bucle, después de mover la cesta, suma 3 a
block.y. - Dibuja el bloque en rojo
(235, 80, 80)después de la cesta.
Pulsa «Jugar»: un bloque rojo cae desde arriba. Después, pulsa «Comprobar».
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 Crea juegos con Pygame
Practica por tu cuenta: Playground de Pygame