在PyGame中,如何每3秒移动图像而不使用sleep函数?
最近我学了一些基础的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
我觉得这样可以,但我觉得用这种方式会更符合Python的风格。
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说的,他的回答也很不错。
4
Pygame有一个时钟类,可以用来代替Python的时间模块。
下面是一个使用的例子:
clock = pygame.time.Clock()
time_counter = 0
while True:
time_counter = clock.tick()
if time_counter > 3000:
enemy.move()
time_counter = 0