我创建了这个随机生成一个点的函数,但由于它在我的游戏循环中,因此点不会停留在原点。我希望它产生一个点,然后等待6秒并随机产生另一个,但第一个仍在那里。因为在屏幕上还有其他事情发生的同时我无法使用time.sleep(6)
。任何解决这个问题的帮助都会非常感激。
def random_spawn():
image_x = random.randrange(122, 476)
image_y = random.randrange(90, 350)
screen.blit(Green, (image_x, image_y))
答案 0 :(得分:2)
请勿使用time.sleep
。通常,在游戏编程中,您永远不会出于任何原因使用time.sleep
。
在你的情况下,你只需要经常检查一个计时器或时钟,如果时间到了,运行你的spawn函数。
这就是典型的游戏循环:
while True:
# get/handle player input
# update game state
# update sprites
# draw background
# draw sprites
# flip display
在您的情况下,当您更新游戏状态时,您应该检查自上次产生随机精灵以来经过了多长时间。如果它超过6秒,则会产生一个新的。
看起来像这样:
if time.clock() - last_spawn_time > 6.0:
random_spawn()
答案 1 :(得分:0)
我认为解决这个问题的一种方法是,只有在符合某些条件的情况下才会随机生成一个点。因此,您可以定义一个函数,该函数在主函数之外随机生成新坐标(并返回它们)。然后,如果满足某些条件,您的主游戏循环将负责在屏幕上渲染点。例如:
o
所以我的想法是你绘制相同的随机坐标,并继续绘制相同的坐标,直到你最后一次产卵和现在之间的时间超过6秒。
答案 2 :(得分:0)
如果你试图避免使用线程,并且只是使用while循环,也许这可能有效:
import time
def my_function():
print 'it has been about 6 seconds'
prev_time_stamp = time.time()
while True:
#do something
#do something else
if time.time() > prev_time_stamp + 6:
prev_time_stamp = time.time()
my_function()
#do something else
答案 3 :(得分:0)
导入随机模块:
import random
创建随机坐标:
rand_X = (random.randrange(0, display_width - image_width)
rand_Y = (random.randrange(0, display_height - image_height)
blit image:
gameDisplay.blit(yourimage,(randAppleX,randAppleY))