Caídas aleatorias
Parte de la sección El bucle del juego del Journey de Pygame de Coddy. Lección 25 de 32.
Cuando el bloque caiga más allá del borde inferior, colócalo de nuevo por encima del borde superior para que vuelva a caer. Su borde superior está más allá del 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 tiene 20 de ancho, así que un valor de 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 valorrandom.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()
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