首先,我要说,我对蟒蛇和蟒蛇的知识非常有限。在完成了几个教程之后,我决定尝试根据我发现的一些在线教程制作一个自上而下的游戏。程序工作到目前为止,但我正在与一个重新装填功能,将启动一个冷却时间的球员的枪几秒钟,而没有弹药。我已经搜索了几个小时,寻找任何与我可以使用的冷却时间有关的东西,但我一直无法使任何东西发挥作用。提前感谢你的帮助或建议,任何能为我指明正确方向的事情。
以下是游戏所基于的教程链接:http://www.raywenderlich.com/24252/beginning-game-programming-for-teens-with-python
下面是我正在苦苦挣扎的代码:
if event.type==pygame.MOUSEBUTTONDOWN:
shoot.play()
position=pygame.mouse.get_pos()
acc[1]+=1
arrows.append([math.atan2(position[1]-(playerpos1[1]+32), position[0]-(playerpos1[0]+26)),playerpos1[0]+32,playerpos[1]+32])这会触发弹丸,但我想在弹药为0时增加一个弹药计数和一个冷却函数。
我尝试过的一些东西是使用了pygame的计时器函数,还有utils,但是我无法为我的场景工作。
下面是我尝试过的一个例子:
def fire():
global ammo # ammo = 10
if ammo == 0:
cooldown # cooldown would be the timer, which i can't figure out
ammo == 10
else:
arrows.append([math.atan2(position[1]-(playerpos1[1]+32), position[0]-(playerpos1[0]+26)),playerpos1[0]+32,playerpos[1]+32])
ammo-=1
if event.type==pygame.MOUSEBUTTONDOWN:
shoot.play()
position=pygame.mouse.get_pos()
acc[1]+=1
fire()谢谢您的帮助和建议,如果我的帖子格式很差,很抱歉。
发布于 2015-01-15 19:16:37
fire()函数中有一点语法错误。首先,必须用空括号调用冷却器(我假设它是一个函数):cooldown()。第二,你没有将弹药重置为10,而是问弹药是否已经等于10。以下是修正:
def fire():
global ammo
if ammo == 0:
cooldown() # call cooldown function with
ammo = 10 # reset ammo希望这有帮助,如果我遗漏了什么,我会编辑:)
编辑:您要求提供一个冷却()示例,所以现在开始。一种在不停止整个游戏的情况下做到这一点的方法是创建一个计数器变量,以便与您的游戏循环并行运行。例如:
COUNTER = 0
can_fire = True
while True:
COUNTER += 1
def fire():
global ammo
if not can_fire:
if COUNTER == cooldown_count + 50: # Or however many loops
can_fire = True
ammo = 10
else:
pass
if ammo == 0 and can_fire:
cooldown_count = COUNTER
can_fire = Falsehttps://stackoverflow.com/questions/27970889
复制相似问题