我试图在0.5到2秒内在一个简单的游戏中随机创建一个障碍物。我已经有了创建障碍的功能,但我无法实例化。我已经尝试过研究这个,但我还没有提出任何相关的内容。你能帮助我吗?
答案 0 :(得分:3)
这是一个每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
设置为零。
冲洗并重复。