我正在制作一个玩家对敌人造成伤害以结束战斗的游戏(就像大多数游戏一样)。 然而,我遇到了一个问题
while battle != 0:
playerturn()
time.sleep(1)
allyturn()
time.sleep(1)
enemyturn()
time.sleep(1)
print("Battle complete.")
而上面的while循环没有结束,因此“战斗完成”永远不会出现
在{enemyturn()
内等于或低于0,battle = 0
。
这是在enemyturn()
if eHP <= 0:
#eHP stands for enemy HP
print("Bandit Robber is defeated.")
battle = 0
我以前确保输入时间,这不是问题所在。 任何帮助都将不胜感激
下面是一个基本相同的示例代码:
import random
def testpart():
battle = 0
def test():
battle = 1
while battle != 0:
print("This is testing.")
testpart()
test()
testpart()应该返回战斗值
假设变量
battle
在定义函数之前就存在,您可以通过一个简单的global
声明来解决这个问题(您需要在使用变量的每个函数的顶部执行此操作)
然而,由于许多原因,这通常被认为是糟糕的编码实践。解决此类问题的正确方法是从函数中返回一个布尔值,指示战斗是否应该继续,并按程序构建代码,而不是依赖于全局可变状态。问题的症结太大了,无法用一个StackOverflow答案来回答,但假设您遵循的是一个相当不错的Python教程,那么最终您将了解到这类问题。慢慢来,一步一步来
尝试将
battle
变量传递给enemyturn()
函数。然后返回battle
。这会让它按照你想要的方式工作。当前,battle变量在错误的范围内被更改为0,因此它没有在主循环中检测到它相关问题 更多 >
编程相关推荐