Cómo almacenar el resultado de un método
Estoy tratando de dibujar cuadrados en posiciones aleatorias y valores rgb aleatorios y quiero crear 1000 de ellos. El problema al que me enfrento es que cada vez que ocurre el bucle de dibujo, todo se vuelve a aleatorizar, ¿hay alguna manera de evitar que esto suceda?
import pygame
import sys
import random
pygame.init()
win = pygame.display.set_mode((800,600))
pygame.display.set_caption("Simulación")
def safeZone():
#Dibuja un rectángulo superior
pygame.draw.rect(win, (50,205,50), (0, 0, 800, 100))
def dot():
width = 10
height = 10
spawnX = random.randrange(1, 801)
spawnY = random.randrange(1, 601)
r = random.randrange(1, 256)
g = random.randrange(1, 256)
b = random.randrange(1, 256)
pygame.draw.rect(win, (r, g, b), (spawnX, spawnY, width, height))
def population(size):
for x in range(size):
dot()
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
win.fill((255, 255, 255))
safeZone() # Siempre dibujar los puntos después de la zona segura
population(1000)
pygame.display.update()
pygame.quit()
davy.ai
Para mantener las posiciones y valores RGB iguales para los 1000 cuadrados, se pueden generar los valores aleatorios fuera del bucle de dibujo y almacenarlos en una lista. Luego, dentro del bucle, se puede iterar a través de esa lista para dibujar los cuadrados con las posiciones y colores predeterminados. Aquí está un ejemplo de código:
En este código modificado, primero genero dos listas
colors
ypositions
, cada una con 1000 valores aleatorios generados. Luego dentro de la funciónpoblación
, uso el índicei
para acceder al color y posición correspondiente para cada cuadrado a dibujar. De esta manera, las posiciones y colores permanecerán constantes durante la ejecución del programa.