Python 为什么我的程序没有延迟1秒?
我正在用python编写一个random walker程序,并使用Pygame进行图形处理 程序运行良好,但是我希望在每个Python 为什么我的程序没有延迟1秒?,python,for-loop,pygame,Python,For Loop,Pygame,我正在用python编写一个random walker程序,并使用Pygame进行图形处理 程序运行良好,但是我希望在每个for循环中代码结束时,它应该将程序延迟1秒,因此程序在几秒钟内完成,但我可以看到连续的随机游动 因此,当我在代码末尾添加time.sleep(1)时,它反而会使程序运行变慢,并且不会每秒画一个圆: import pygame import random import time #Initialize the pygame pygame.init() #create t
for循环中
代码结束时,它应该将程序延迟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)
导入pygame
随机输入
导入时间
#初始化pygame
pygame.init()
#创建屏幕
screen=pygame.display.set_模式((800800))#宽度和高度
startX=400
星度=400
def returnRandomNumber():
选项=[1,-1]
随机样本=随机选择(选项)
返回随机样本
def returnRandomInt():
random_sample=random.randint(0255)
返回随机样本
运行=真
运行时:
#更新显示
pygame.display.update()
对于范围(10000)内的x:
pygame.draw.circle(屏幕,(returnRandomInt(),returnRandomInt(),returnRandomInt()),(startX,startY),2,2)
如果startX=800:
startX+=-1
其他:
startX+=returnRandomNumber()
如果startY=800:
startY+=-1
其他:
startY+=returnRandomNumber()
时间。睡眠(1)
为什么会这样?或者,我如何让程序画一个圆圈,然后延迟x秒并继续运行?尝试在for循环中插入更新和睡眠,以便每次迭代后显示都会更新:
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)
运行时:
#更新显示
pygame.display.update()
对于范围(10000)内的x:
pygame.draw.circle(屏幕,(returnRandomInt(),returnRandomInt(),returnRandomInt()),(startX,startY),2,2)
如果startX=800:
startX+=-1
其他:
startX+=returnRandomNumber()
如果startY=800:
startY+=-1
其他:
startY+=returnRandomNumber()
pygame.display.update()
时间。睡眠(1)
尝试在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)
运行时:
#更新显示
pygame.display.update()
对于范围(10000)内的x:
pygame.draw.circle(屏幕,(returnRandomInt(),returnRandomInt(),returnRandomInt()),(startX,startY),2,2)
如果startX=800:
startX+=-1
其他:
startX+=returnRandomNumber()
如果startY=800:
startY+=-1
其他:
startY+=returnRandomNumber()
pygame.display.update()
时间。睡眠(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)
运行=真
运行时:
#更新显示
时间。睡眠(1)
范围(10000)内x的:
pygame.draw.circle(屏幕,(returnRandomInt(),returnRandomInt(),returnRandomInt()),(startX,startY),2,2)
如果startX=800:
startX+=-1
其他:
startX+=returnRandomNumber()
如果startY=800:
startY+=-1
其他:
startY+=returnRandomNumber()
pygame.display.update()
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)
运行=真
运行时:
#更新显示
时间。睡眠(1)
范围(10000)内x的:
pygame.draw.circle(屏幕,(returnRandomInt(),returnRandomInt(),returnRandomInt()),(startX,startY),2,2)
如果startX=800:
startX+=-1
其他:
startX+=returnRandomNumber()
如果startY=800:
startY+=-1
其他:
startY+=returnRandomNumber()
pygame.display.update()
谢谢!这确实奏效了!然而,我注意到在几秒钟后程序崩溃了,之前也发生过,但我认为这是因为无限的while循环,有什么想法吗?你画了很多圈-每次迭代10000圈,它不会停止。因此,您可能希望专注于这段代码并绘制较少的圆圈-可能会在几天后停止。但是,在投入时间之前,我曾想象过。睡眠在崩溃之前绘制数千个圆圈,但投入时间之后。睡眠(1)它绘制了10个圆圈,然后崩溃。可能python滞后,但重要的是,你画的是无限的圆圈,所以你破坏了脚本。是的,我不知道这是python还是pygame的问题,谢谢你的输入,它成功了。然而,我尝试了最后一件事,我在程序中添加了一个计数器变量,这样每个for循环都会添加1,当它达到与for循环中的范围相同的数字时。它将停止该程序。所以我注意到程序崩溃了,停止了绘图,但几秒钟后它关闭了,在一瞬间我可以看到其他的x圆在关闭前被画出来。谢谢!这确实奏效了!然而,我注意到在几秒钟后程序崩溃了,之前也发生过,但我认为这是因为无限的while循环,有什么想法吗?你画了很多圈-每次迭代10000圈,它不会停止。因此,您可能希望专注于这段代码,并绘制较少的圆圈-可能在几圈后停止。但是,在投入时间之前,我曾想象过。睡眠在崩溃之前绘制数千个圆圈,但在投入时间之后。睡眠(1)它绘制10个圆圈,然后cr