首页 > 解决方案 > pygame中火速限制器的问题

问题描述

我目前正在用 python 制作游戏,但是当我尝试限制射速时,问题就开始了。应该在第一次拍摄后每隔一按拍摄一次的代码会完全阻止拍摄,所以我检查了变量是如何变化的,并且它以某种方式保持不变,这看起来很奇怪。我试图用谷歌搜索它,但我什至很难用谷歌的正确语言表达我的问题。这是代码:

elif event.type == pygame.KEYDOWN:
    if event.key == pygame.K_SPACE and igralec.fire_rate % 2 == 1:
        strel.play()
        print(igralec.fire_rate)
        igralec.fire_rate += 1
        if igralec.fire_rate == 6:
            igralec.fire_rate = 1

标签: pythonpygame

解决方案


除非您在其他地方增加/更改igralec.fire_rate,否则此代码无法正常工作。我假设您没有在其他地方更改它,或者您将包含该代码以便可以诊断问题。

elif event.type == pygame.KEYDOWN:
    if event.key == pygame.K_SPACE and igralec.fire_rate % 2 == 1:
        strel.play()
        print(igralec.fire_rate)
        igralec.fire_rate += 1
        if igralec.fire_rate == 6:
            igralec.fire_rate = 1

如果 ,你只能进入这个街区igralec.fire_rate % 2 == 1,所以igralec.fire_rate必须是奇数。然后它递增igralec.fire_rate为偶数,并且永远不能再次进入这个代码块。

也许你想要这样的东西:

elif event.type == pygame.KEYDOWN:
    if event.key == pygame.K_SPACE:
        if igralec.fire_rate % 2 == 1:
            strel.play()
        print(igralec.fire_rate)
        igralec.fire_rate += 1
        if igralec.fire_rate == 6:
            igralec.fire_rate = 1

所以它只会在奇数strel.play()时调用,但在按下空格键时igralec.fire_rate仍会增加或管理。igralec.fire_rate


推荐阅读