Menu
CoddyTech

Números aleatorios

Parte de la sección Python en una ventana de juego del Journey de Pygame de Coddy. Lección 28 de 32.

El módulo random de Python elige números al azar. Impórtalo en la parte superior del programa, por encima o por debajo de import pygame:

import random

random.randint(a, b) devuelve un número entero entre a y b, incluidos ambos extremos. random.choice(items) elige un elemento de una lista:

x = random.randint(20, 620)
size = random.choice([3, 4, 5])

Cada llamada elige de nuevo, así que llámala cuando necesites un valor nuevo. Una estrella colocada al pulsar la barra espaciadora:

if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
    x = random.randint(20, 620)
    y = random.randint(60, 300)
    stars.append((x, y))

Fíjate en los paréntesis dobles de stars.append((x, y)): append acepta un elemento, y ese elemento es la tupla (x, y). Si eliges x e y una sola vez antes del bucle del juego, todas las estrellas aparecerán en el mismo lugar.

challenge icon

Desafío

Intermedio

Deja que la barra espaciadora disperse estrellas:

  1. Agrega import random al principio.
  2. Cuando llegue un evento KEYDOWN para K_SPACE, elige x = random.randint(20, 620) e y = random.randint(60, 300), y agrega (x, y) a stars.
  3. Los clics siguen agregando estrellas como antes.

Pruébalo tú mismo

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()

# Configura todo aquí, antes del bucle del juego.
stars = []
font = pygame.font.Font(None, 36)

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.MOUSEBUTTONDOWN:
            stars.append(event.pos)

    # Actualiza todo aquí, una vez por fotograma.

    screen.fill((20, 24, 48))
    # Dibuja aquí, después de rellenar la pantalla.
    for star in stars:
        pygame.draw.circle(screen, (255, 255, 255), star, 5)
    text = font.render(f"Stars: {len(stars)}", True, (230, 230, 240))
    screen.blit(text, (20, 20))

    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 Python en una ventana de juego

Practica por tu cuenta: Playground de Pygame