首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的节目不能延迟1秒?

为什么我的节目不能延迟1秒?
EN

Stack Overflow用户
提问于 2021-02-21 07:08:58
回答 2查看 93关注 0票数 1

我在python中做了一个随机游行者程序,并使用python作为图形。

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

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

代码语言:javascript
运行
复制
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秒并继续运行?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-21 07:18:23

尝试在for循环中插入update并休眠,这样每次迭代之后显示都会更新:

代码语言:javascript
运行
复制
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)
票数 2
EN

Stack Overflow用户

发布于 2021-02-21 07:28:46

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

代码:导入游戏导入随机导入时间

初始化游戏

pygame.init()

创建屏幕

屏幕= pygame.display.set_mode((800,800)#宽度和高度

startX = 400 startY = 400

def returnRandomNumber():options = 1,-1

代码语言:javascript
运行
复制
random_sample = random.choice(options)

return random_sample

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

代码语言:javascript
运行
复制
return random_sample

运行时运行= True:# update显示time.sleep(1)

代码语言:javascript
运行
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66299955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档