首先让我说我对python和pygame的知识非常有限。在完成一些教程后,我决定尝试使用pygame制作一个Top-Down Shooter游戏,基于我发现的一些在线教程。该程序到目前为止工作,但我正在努力重新加载功能,在弹药出现时,会在玩家的枪上启动冷却几秒钟。我已经搜索了几个小时的任何与我可以使用的冷却时间有关的事情,而且我无法做任何工作。在此先感谢任何帮助或建议,任何事情都指向我正确的方向。
以下是游戏基于以下内容的教程的链接: 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 mod,但我无法为我的场景工作。
以下是我尝试过的一个例子:
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()
感谢您提供任何帮助和建议,抱歉,如果我的帖子格式不正确。
答案 0 :(得分:0)
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 = False