Caídas aleatorias
Lección 11 de 40 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ácil- Añade
import randomal principio. - Después de que caiga el bloque, cuando
block.top > 360, estableceblock.y = -20y asigna ablock.xel valor derandom.randint(0, 460).
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()
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Crea juegos con Pygame
2Eventos y colisiones
La cestaUn bloque que caePractica por tu cuenta: Playground de Pygame