首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TPS有功能冷却吗?

TPS有功能冷却吗?
EN

Stack Overflow用户
提问于 2015-01-15 18:56:00
回答 1查看 660关注 0票数 0

首先,我要说,我对蟒蛇和蟒蛇的知识非常有限。在完成了几个教程之后,我决定尝试根据我发现的一些在线教程制作一个自上而下的游戏。程序工作到目前为止,但我正在与一个重新装填功能,将启动一个冷却时间的球员的枪几秒钟,而没有弹药。我已经搜索了几个小时,寻找任何与我可以使用的冷却时间有关的东西,但我一直无法使任何东西发挥作用。提前感谢你的帮助或建议,任何能为我指明正确方向的事情。

以下是游戏所基于的教程链接:http://www.raywenderlich.com/24252/beginning-game-programming-for-teens-with-python

下面是我正在苦苦挣扎的代码:

代码语言:javascript
运行
复制
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,但是我无法为我的场景工作。

下面是我尝试过的一个例子:

代码语言:javascript
运行
复制
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()

谢谢您的帮助和建议,如果我的帖子格式很差,很抱歉。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-15 19:16:37

fire()函数中有一点语法错误。首先,必须用空括号调用冷却器(我假设它是一个函数):cooldown()。第二,你没有将弹药重置为10,而是问弹药是否已经等于10。以下是修正:

代码语言:javascript
运行
复制
def fire():
    global ammo
    if ammo == 0:
        cooldown() # call cooldown function with
        ammo = 10 # reset ammo

希望这有帮助,如果我遗漏了什么,我会编辑:)

编辑:您要求提供一个冷却()示例,所以现在开始。一种在不停止整个游戏的情况下做到这一点的方法是创建一个计数器变量,以便与您的游戏循环并行运行。例如:

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27970889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档