Menu
CoddyTech

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.

challenge icon

Desafío

Fácil
  1. Añade import random al principio.
  2. Después de que caiga el bloque, cuando block.top > 360, establece block.y = -20 y asigna a block.x el valor random.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

Practica por tu cuenta: Playground de Pygame