在PyGame中,如何在不使用睡眠功能的情况下每3秒移动一次图像?

时间:2014-06-08 18:25:26

标签: python pygame

最近我学会了一些基本的Python,所以我正在使用PyGame编写一个游戏来提高我的编程技能。

在我的游戏中,我想每隔3秒移动一个怪物图像,同时我可以用鼠标瞄准它并点击鼠标进行拍摄。

一开始我尝试使用 time.sleep(3),但事实证明它暂停了整个程序,我无法点击在3中拍摄怪物秒。

那你有什么解决办法吗?

提前致谢! :)


最后我在你们的帮助下解决了这个问题。非常感谢! 这是我的代码的一部分:

import random, pygame, time

x = 0
t = time.time()
while True:

    screen = pygame.display.set_mode((1200,640))
    screen.blit(bg,(0,0))

    if time.time() > t + 3:
        x = random.randrange(0,1050)
        t = time.time()

    screen.blit(angel,(x,150))

    pygame.display.flip() 

2 个答案:

答案 0 :(得分:1)

Pygame有一个可用于代替python时间模块的时钟类。

以下是一个示例用法:

clock = pygame.time.Clock()

time_counter = 0

while True:
    time_counter = clock.tick()
    if time_counter > 3000:
        enemy.move()
        time_counter = 0

答案 1 :(得分:0)

我认为这样做有效,但我觉得这样做会更加pythonic。

import random, pygame

clock = pygame.time.Clock()
FPS = 26 #Or whatever number you want
loops_num = 0
while True:

    screen = pygame.display.set_mode((1200,640))
    screen.blit(bg,(0,0))

    if loops_num % (FPS * 3) == 0:
        enemy.move()

    screen.blit(angel,(x,150))

    pygame.display.flip()
    loops_num += 1
    clock.tick(FPS)

Bartlomiej Lewandowski说道,他的回答也很棒。