Caídas aleatorias
Lección 11 de 41 del curso Crea juegos con Pygame de Coddy.
Cuando el bloque cae más allá del borde inferior, colócalo de nuevo por encima del borde superior para que vuelva a caer. Su parte superior ha pasado el borde inferior cuando block.top > 360.
Para que el juego sea menos predecible, haz que aparezca en un lugar aleatorio. El módulo random de Python elige números: random.randint(0, 460) es un número entero de 0 a 460, ambos incluidos.
import random
if block.top > 360:
block.y = -20
block.x = random.randint(0, 460)¿Por qué 460? El bloque mide 20 de ancho, así que un x de 460 coloca su lado derecho en el borde de la ventana. Y y = -20 lo coloca justo por encima de la ventana, de modo que entra deslizándose desde arriba.
Desafío
FácilDeja caer un bloque en un lugar aleatorio después de cada caída.
- Añade
import randomal principio. - Después de que caiga el bloque, cuando
block.top > 360, estableceblock.y = -20y asignarandom.randint(0, 460)ablock.x.
Pulsa «Jugar»: los bloques siguen cayendo en lugares aleatorios. 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)
block = pygame.Rect(220, 0, 20, 20)
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())
block.y += 3
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (80, 160, 255), basket)
pygame.draw.rect(screen, (235, 80, 80), block)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Todas las lecciones de Crea juegos con Pygame
Practica por tu cuenta: Playground de Pygame