寻求在Python中创建一个非常简单的健康功能

3
让我先说一下,我对编程非常非常新手。我已经做了大约一个星期,成功地制作了计算器和其他初学者的工具,并且一直在开发我的第一个真正的“项目”,这是一个基于文本的冒险游戏。目前我的问题是,我无法为自己设计一个非常简单的生命值系统,并希望得到您可能有的任何指针。
我已经多次重写了它的代码,但以下是我一直在使用的基本框架:
def healthSystem(enemy_atk = 0):   # Called at the beginning of every game screen.
    watermark()   # A function that prints the game title and other things at the top of every screen

    max_health = 10       # Player max health
    no_health = 0         # Player dies at this threshold
    modifier = enemy_atk  # An enemy attack roll is taken from another function and stored here
    current_health = max_health - modifier   # Calculating the new health

    print("+" * current_health)   # Prints the new health to the screen, every 1 health is represented with a "+"
    print()

这个程序非常简单,可以在第一个游戏屏幕上工作。然而,当你进入下一个游戏屏幕时,所有内容都会重新计算并且健康值会每次重新绘制到屏幕上,因此每个屏幕上的健康值都不同。

这需要调用类吗?我还没有使用过类,并且看到一些使用类的示例,但是我希望在这个项目中仅使用函数。谢谢大家的帮助。


看起来像是代码审查 - sahasrara62
我假设这个函数在下一个屏幕中也被调用了,所以最好将当前的生命值提供给函数 def healthSystem(enemy_atk = 0, current_health=10):,并在函数内部修改 max_health=current_health。无论在哪里调用这个函数,都要将当前的生命值作为参数传递给它。 - sahasrara62
1
欢迎来到 Stack Overflow!请查看 [导览] 并 [提问] 寻求建议。 - wjandrea
@sahasrara62 这不是一个适合于[codereview.se]的好问题,因为代码没有运行,而CR要求有运行的代码。 - wjandrea
2个回答

3

看起来问题在于您希望程序在屏幕之间记住玩家的生命值?

如果是这样,我认为您需要在函数外部使用某种变量来存储玩家在攻击之间的生命值。 因为现在似乎函数每次都将生命值重置为10。

此外,我建议您使用另一个参数来传递当前的生命值,并返回一个值来计算攻击后您的新生命值应该是多少。

如果您采用这种方法,我认为您的顶级函数可能会类似于以下内容--

# Starting Health
my_health = 10
...
# Main loop
while(not_quit):
    ...
    # Update health
    my_health = healthSystem(enemy_attack, my_health)
    ...

0
根本问题在于您根本没有跟踪健康状况。虽然在函数中定义了“current_health”,但并未返回或保存到全局变量或其他任何地方。最终,类可能是最佳解决方案(也许 - 我自己从未构建过游戏),但最基本的修复方法是将“current_health”作为参数传递,在函数中进行修改,在结尾处“return current_health”,并在下一个循环之前在函数外部跟踪它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接