为什么我的程序没有延迟1秒?

2024-09-30 06:23:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python编写一个random walker程序,并使用Pygame进行图形处理

程序运行良好,但是我希望在代码末尾的每一个for loop中,它应该将程序延迟1秒,因此程序在几秒钟内完成,但我可以看到连续的随机游动

因此,当我在代码末尾添加time.sleep(1)时,它反而会使程序运行变慢,并且不会每秒画一个圆:

import pygame
import random
import time


#Initialize the pygame
pygame.init()

#create the screen
screen = pygame.display.set_mode((800,800)) # Width and Height 

startX = 400
startY = 400


def returnRandomNumber():
    options = [1,-1]
    
    random_sample = random.choice(options)

    return random_sample

def returnRandomInt():
    random_sample = random.randint(0,255)

    return random_sample


running = True
while running:
    #update display
    pygame.display.update()


    for x in range(10000):
        pygame.draw.circle(screen, (returnRandomInt(),returnRandomInt(),returnRandomInt()), (startX, startY), 2, 2)
        if startX <= 0:
            startX += 1
        elif startX >= 800:
            startX += -1
        else:
            startX += returnRandomNumber()
        
        if startY <= 0:
            startY += 1
        elif startY >= 800:
            startY += -1
        else:
            startY += returnRandomNumber()
    time.sleep(1)

为什么会这样?或者我如何让程序画一个圆圈,然后延迟x秒,然后继续运行


Tags: sample代码import程序程序运行timedisplayrandom
2条回答

尝试在for循环中插入update和sleep,以便每次迭代后显示都会更新:

while running:
#update display
pygame.display.update()


for x in range(10000):
    pygame.draw.circle(screen, (returnRandomInt(),returnRandomInt(),returnRandomInt()), (startX, startY), 2, 2)
    if startX <= 0:
        startX += 1
    elif startX >= 800:
        startX += -1
    else:
        startX += returnRandomNumber()
    
    if startY <= 0:
        startY += 1
    elif startY >= 800:
        startY += -1
    else:
        startY += returnRandomNumber()
    pygame.display.update()
    time.sleep(1)

time.sleep(1)需要与pygame.display.update()交换位置

代码: 导入pygame 随机输入 导入时间

初始化pygame

pygame.init()

创建屏幕

screen=pygame.display.set_模式((800800))#宽度和高度

startX=400 星度=400

def returnRandomNumber(): 选项=[1,-1]

random_sample = random.choice(options)

return random_sample

def returnRandomInt(): random_sample=random.randint(0255)

return random_sample

运行=真 运行时: #更新显示 时间。睡眠(1)

for x in range(10000):
    pygame.draw.circle(screen, (returnRandomInt(), returnRandomInt(), returnRandomInt()), (startX, startY), 2, 2)
    if startX <= 0:
        startX += 1
    elif startX >= 800:
        startX += -1
    else:
        startX += returnRandomNumber()

    if startY <= 0:
        startY += 1
    elif startY >= 800:
        startY += -1
    else:
        startY += returnRandomNumber()
pygame.display.update()

相关问题 更多 >

    热门问题