如何在pygame中为我的玩家武器制作重装计时器?

时间:2015-10-23 00:40:05

标签: python timer pygame

所以我正在做一个自上而下的射击游戏,左击点击,右键点击重新加载枪。我想制作它让玩家在重新加载时无法拍摄,我不希望屏幕显示玩家有完全弹药直到他们完全重装后(就像任何fps游戏一样)。有谁知道我怎么能实现这个?感谢您的任何反馈:)

这是我的鼠标/解雇代码:

if event.type == pygame.MOUSEBUTTONDOWN and pygame.mouse.get_pressed() == (1, 0, 0) and ammo > 0:
    ammo -= 1
    bullet = Bullet()
    all_sprites_list.add(bullet)
    bullet_list.add(bullet)
elif event.type == pygame.MOUSEBUTTONDOWN and pygame.mouse.get_pressed() == (0, 0, 1):
    pygame.time.wait(1000)
    ammo = full_ammo

所以我知道pygame.time.wait(1000)冻结整个程序整整一秒钟,我在那里认为它会延迟设置ammo = full_ammo,但它会暂停整个游戏哈哈。有没有人知道一个函数或pygame.我可以使用什么函数来延迟将弹药设置为完全(模拟重载时间)?

1 个答案:

答案 0 :(得分:2)

您想添加一个变量,用于跟踪您当前是否正在重新加载以及上次重新加载的时间。看起来有点像这样:

elif event.type == pygame.MOUSEBUTTONDOWN and pygame.mouse.get_pressed() == (0, 0, 1):
    lastReloadTime = time.clock()
    reloading = True
    ammo = full_ammo

(请记住,您需要import time

然后,您需要更新拍摄代码以添加条件,以确定您是否正在重新加载。

if not reloading and event.type == pygame.MOUSEBUTTONDOWN and pygame.mouse.get_pressed() == (1, 0, 0) and ammo > 0:
    ammo -= 1
    bullet = Bullet()
    all_sprites_list.add(bullet)
    bullet_list.add(bullet)

然后,最后,你需要添加一些代码,看看你是否完成了重装。这应该在您的事件处理之外。

if reloading and time.clock() - lastReloadTime > TIME_TO_RELOAD: #1000
    reloading = False

我强烈建议将1000放入一个变量(名为TIME_TO_RELOAD或任何你想要的)中,这样可以更容易地微调和调整游戏常数。

相关问题