Menu
CoddyTech

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, dibujar

A 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.

challenge icon

Desafío

Fácil

Deja caer un bloque desde arriba.

  1. Debajo de la cesta, crea block = pygame.Rect(220, 0, 20, 20).
  2. En el bucle, después de mover la cesta, suma 3 a block.y.
  3. 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