微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决为什么我的程序没有延迟 1 秒?

我正在用 python 做一个随机游走程序,并使用 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 秒并继续运行?

解决方法

尝试在你的 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_mode((800,800)) # 宽度和高度

开始X = 400 开始Y = 400

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

random_sample = random.choice(options)

return random_sample

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

return random_sample

正在运行 = 真 在跑步的时候: # 更新显示 时间.sleep(1)

for x in range(10000):
    pygame.draw.circle(screen,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()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。