Menu
CoddyTech

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.

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 de 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()
quiz iconPonte a prueba

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

Practica por tu cuenta: Playground de Pygame