【问题标题】:How do I work player health In Python 2.7?如何在 Python 2.7 中处理玩家健康?
【发布时间】:2017-01-04 18:24:09
【问题描述】:

我不确定如何为职业玩家在被击中三下后被杀死的健康系统。有人可以帮忙吗?我正在使用 Python 2.7 进行编码。 我目前有

if pygame.sprite.spritecollideany(player, opponents):
   player.kill()

我正在考虑使用变量

player.HP = 3

但它不会死!

if pygame.sprite.spritecollideany(player, opponents):
   player.HP -1
   if player.HP == 0:
      player.kill

但是,就像我说的,它不会死,但代码可以工作。在我添加新系统之前它一直在杀死,现在它不会了。有人可以帮忙吗?谢谢。

【问题讨论】:

  • 您可能应该从规模较小的项目开始,而不是完全成熟的图形游戏。您的错误是 player.HP - 1 不会改变任何东西。你必须做player.HP = player.HP - 1player.HP -= 1。这是基本的 Python 内容,以这种方式学习会很痛苦。开始更简单地了解基础知识,然后向上移动。
  • 对。不知何故,你设法在不了解变量如何工作的情况下制作了一款游戏。要么接受,要么放弃,但我的建议是从更小更简单的开始——不一定容易——但如果你不了解基础知识,用图形和 sprite 乱搞似乎会适得其反。我不是要在这里刻薄或其他任何事情,这只是建议。您应该查看莱斯大学的 Python 交互式编程简介课程。
  • 在诸如“它不会死,但代码有效”之类的声明之后很难为您提供帮助,因为代码显然不像您期望的那样“有效”。这也是一个罕见的问题,提供的代码太少而无法理解。您应该至少提供方法名称、相关代码段和预期结果。尽管存在所有这些缺陷,但第一条评论已经为您提供了答案(很可能)。
  • 虽然我不同意其他人的说法,但我不确定为什么这个问题被否决了。 OP 陈述了他的问题并提供了他尝试的代码。新手不值得投反对票。我们不要因为他伸出援手而惩罚他。

标签: python python-2.7 pygame


【解决方案1】:

正如@juanpa.arrivillaga 在评论中所说,您需要分配 player.HP 的递减值,否则,您正在做减法并丢弃该值。你需要改变:

player.HP -1

player.HP -= 1

这是一个例子:

>>> class A:
...   def __init__(self, val):
...     self.val = val
...   def decrement(self):
...     self.val - 1              # <- Does not reassign decremented value
...     print self.val
...
>>> a = A(10)
>>> a.decrement()
10
>>> a.decrement()
10
>>> a.decrement()
10
>>> a.decrement()
10
>>> class A:
...   def __init__(self, val):
...     self.val = val
...   def decrement(self):
...     self.val -= 1             # <- Does reassign value
...     print self.val
...
>>> a = A(10)
>>> a.decrement()
9
>>> a.decrement()
8
>>> a.decrement()
7
>>> a.decrement()
6

【讨论】:

  • 对于 Python 新手来说,这个演示有点难以理解。更简单的方法是简单地将 a 分配给 10,然后执行 a-1,注意到 a 仍然是 10,然后尝试 a-=1 并显示 a 现在是 9。
猜你喜欢
  • 1970-01-01
  • 2023-02-01
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多