를 저장하는 방법의 결과 방법

0

질문

나는 그리고 광장에서는 임의의 위치 및 임의의 rgb 값과 내가 원하는 1000 들을 만들 수 있습니다. 문제 내가 직면하는 그 때마다 반복한 그림이 발생하면,무작위로 그것을 모두 다시는 방법은 없을 만들이 일어나지 않을지

import pygame
import sys
import random
pygame.init()
win = pygame.display.set_mode((800,600))
pygame.display.set_caption("Simulation")

def safeZone():
        #Draws a top rectangle
    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() # Always draw dots after safe zone
    population(1000)
    pygame.display.update()

pygame.quit()


pygame python
2021-11-22 19:27:48
3

최고의 응답

1

을 만들 점 컬렉션 그런 다음 그리기는 점 컬렉션입니다. 지금 업데이트할 수 있습 점의 위치는 별도로,그리고 그들은 다시 그리기에서 새로운 위치. 여기에는 내가 하는 점을 이동하는 임의의 금액에서 모든 루프입니다.

import pygame
import sys
import random
pygame.init()
win = pygame.display.set_mode((800,600))
pygame.display.set_caption("Simulation")

class Dot:
    def __init__(self):
        self.spawnX = random.randrange(0, 800)
        self.spawnY = random.randrange(0, 600)
        self.r = random.randrange(0, 256)
        self.g = random.randrange(0, 256)
        self.b = random.randrange(0, 256)

def safeZone():
        #Draws a top rectangle
    pygame.draw.rect(win, (50,205,50), (0, 0, 800, 100))
    
def drawdot(dot):
    width = 10
    height = 10
    pygame.draw.rect(win, (dot.r, dot.g, dot.b), (dot.spawnX, dot.spawnY, width, height))

def population(dots):
    for dot in dots:
        dot.spawnX += random.randrange(-3,4)
        dot.spawnY += random.randrange(-3,4)
        drawdot(dot)

alldots = [Dot() for _ in range(1000)]

run = True
while run:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
    win.fill((255, 255, 255))
    safeZone() # Always draw dots after safe zone
    population(alldots)
    pygame.display.update()

가치가 수정을 저장 전체에서 사각형 개체:

...
class Dot:
    def __init__(self):
        self.location = [
            random.randrange(0, 800),
            random.randrange(0, 600),
            10, 10
        ]
        self.color = (
            random.randrange(0, 256),
            random.randrange(0, 256),
            random.randrange(0, 256)
        )
    def move(self, dx, dy ):
        self.location[0] += dx
        self.location[1] += dy

def drawdot(dot):
    pygame.draw.rect(win, dot.color, dot.location)

def population(dots):
    for dot in dots:
        dot.move( random.randrange(-3,4), random.randrange(-3,4) )
        drawdot(dot)
...
2021-11-22 19:39:00

질문에 대한 pygame. 그래서 사용하십시오 pygame.Rect. 사용할 수도 있습니다 pygame.Color.
Rabbid76

당신을 감사한 빠른 응답,이동! 을 밖으로 저장하는 방법을 자신의 위치를 모두 별도 이것이 아주 좋
WaffleKyle

응답을 가진다.씨앗은 더 우아하고 간단합니다. 그것을 사용할 수 있습니다 임의의 씨앗을 대신 값의 하드 코딩,는 정확하게 원하는 동작.
Zada Zorg

내 생각,내가 이해,어떤 질문이었다. 넣는다.종자 내부 점수를 해결할 것이 문제입니다. 같은 시간에,나는 것에 동의,이는 최적화되지 않습니다.
Zada Zorg
0

를 호출 기능 dot() 에는 할당된 무작위. 당신이해야를 소개하는 코드 조각을 무작위로 이 값을 밖의 dot() 기능,그리고 저장하는 별도의 배열을,그리고 다음의 함수를 호출.

2021-11-22 19:33:27

적절한 대답을 표시 코드하는 방법을 보여줍니다.
Tim Roberts

나는 그것에 대해 이해가 되지 않는 등 간단한 일이다. 그러나 이 규칙의 커뮤니티-나이 계정
Anna D.

을 기억하는 여기에 아이디어는 카탈로그를 만들의 답변에 대한 후손. 우리가 응답 한 사람의 질문에 우리가 제공하는 장기 서비스입니다. 따라서,답해야 할 필요가 없으로 완료한다. 하여야 합니다.
Tim Roberts
0

귀하의 설명처럼 들리지 않는 반드시 노력하고 결과를 저장 당신이 원하는대로 너무 많은 프로세스를 동일하든지만,여전히 무? 당신이 사용할 수 있습니 하드 코딩된 씨?

import random
random.seed(10)
print(random.random())

이 링크를 참조하십시오에 대한 더 세부사항: 임의의 씨앗

2021-11-22 19:39:52

No,당신은 오해하는 문제입니다. 그가 원하지 않는 동일한 임의의 시퀀스는 각각 시간입니다. 그가 원하는 위치를 무작위로 한다.
Tim Roberts

이는 최상의 방법을 해결하는 원래의 문제입니다. 그것은 필요 하나만 라인의 코드와도 몇 가지 결정론적 결과입니다. 는 표준 접근 방식에서 모든 게임을 사용하는 절차 생성됩니다.
Zada Zorg

@ZadaZorg 그것은 가장 좋은 방법입니다. 당신이 오해하는 문제입니다. 그가 원하지 않는 동일한 점이 매 시간 게임이 실행됩니다. 그가 원하는 다른 위치지만,그가 원하지 않는 그들에게 변화하는 모든 루프입니다. 는 기본적인 문제입니다. 초기화 할 필요가 루프. 당신이 질문에 대답하지 물었다.
Tim Roberts

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................