随机产生一个图像

时间:2015-05-16 22:15:04

标签: python random pygame

我创建了这个随机生成一个点的函数,但由于它在我的游戏循环中,因此点不会停留在原点。我希望它产生一个点,然后等待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))

4 个答案:

答案 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))