定时行动 - 随机化

时间:2015-07-31 04:13:02

标签: python pygame

我试图在0.5到2秒内在一个简单的游戏中随机创建一个障碍物。我已经有了创建障碍的功能,但我无法实例化。我已经尝试过研究这个,但我还没有提出任何相关的内容。你能帮助我吗?

2 个答案:

答案 0 :(得分:3)

您可以使用pygame.time.set_timer

安排自己的活动

这是一个每0.5-2秒改变背景颜色的最小例子:

import pygame, random

pygame.init()
screen, bg = pygame.display.set_mode((200, 200)), pygame.color.Color('Grey')
pygame.time.set_timer(pygame.USEREVENT, random.randint(500, 2001))

while True:
    for e in pygame.event.get():
        if e.type == pygame.QUIT: break
        if e.type == pygame.USEREVENT:
            bg = random.choice(pygame.color.THECOLORS.values())
            pygame.time.set_timer(pygame.USEREVENT, random.randint(500, 2001))
    else:
        screen.fill(bg)
        pygame.display.flip()
        continue
    break

答案 1 :(得分:2)

有很多方法可以做到这一点。您没有提交您的代码,所以我将提供一个简单的示例程序来完成此任务。

import pygame
pygame.init()
import random

clock = pygame.time.Clock()
milliseconds_until_event = random.randint(500, 2001)
milliseconds_since_event = 0
frames_per_second = 20
while True:
    milliseconds_since_event += clock.tick(frames_per_second)

    # handle input here

    if milliseconds_since_event > milliseconds_until_event:
        # perform your random event
        milliseconds_until_event = random.randint(500, 2001)
        milliseconds_since_event = 0

    # draw screen here

milliseconds_until_event变量将存储500到2000之间的数字。这代表了您每隔0.5到2秒发生一次事件的问题。

milliseconds_since_event变量用于告诉我们自上次随机事件以来已经过了多长时间。如果有帮助的话,你可以把它想象成循环中的计数器。

魔法发生在clock.tick(frames_per_second)行。 tick 函数将返回自调用tick函数以来以毫秒为单位的时间。我们将这个数字添加到milliseconds_since_event,这样我们就可以了解自上一次活动以来的总数。

当我们超过milliseconds_until_event中存储的阈值时,我们会执行随机事件,然后再次将milliseconds_until_event设置为.5到2秒,将milliseconds_since_event设置为零。

冲洗并重复。