【发布时间】:2017-04-06 18:56:10
【问题描述】:
我正在创建一个基于文本的冒险游戏(如 this 帖子中提到的),我被困在如何使用类及其属性、与类相关的参数以及预定义关键字 self. 上。我四处寻找如何使用它们,但无济于事。我将分别举一个例子,并附上一个问题:
class Player:
def __init__(self, name):
self.name = name
self.maxhealth = 100
self.health = self.maxhealth
self.attack = 15
self.money = 0
def display(self, name):
print("Name:",self.name,"\nHealth:",self.health,"/",self.maxhealth,"\nAttack Damage:",self.attack,"\nMoney:",self.money)
答案中有人建议将self.name = name 更改为self.name = None,但他们没有解释为什么或如何帮助。如果有人能告诉我如何以正确或最有效的方式定义self.name,请执行。我也想知道如何在后面的函数中调用它。
我对类属性的工作方式(与上一个问题相关)以及您如何知道它们是否已启用以及如何调用它们感到困惑。
我也不确定class Player(#here): 中的参数以及如何使用它们。我不确定它是否有任何用途,但我看到人们这样做 (object) 和 (Edum #or something like that) 我不知道他们添加了什么,如何调用它们等等。
import time
import random
import sys
import pickle
class Zombie:
def __init__(self, name):
self.name = name
self.maxhealth = 50
self.health = self.maxhealth
self.attack = 5
self.golddrop = random.randint(5,10)
class Skeleton:
def __init__(self, name):
self.name = name
self.maxhealth = 75
self.health = self.maxhealth
self.attack = random.randint(5,10)
self.golddrop = random.randint(5,10)
class Friend:
def __init__(self, name):
self.name = name
self.maxhealth = 100
self.health = self.maxhealth
self.attack = random.randint(7,10)
class DungeonBoss:
def __init__(self, name):
self.name = name
self.maxhealth = 150
self.health = self.maxhealth
self.attack = random.randint(15, 25)
这些是我想要在我的游戏中使用的课程。我想知道我是否可以创建一个仅称为“敌人”的类,然后也许可以创建可以从该类调用的子集/类(再一次,任何有关如何从类调用属性的帮助将不胜感激),所以它使代码更干净。
如果您不确定我刚才所说的任何内容,或者您需要对问题进行更多说明,请发表评论。提前谢谢你。
【问题讨论】:
-
到目前为止,您做得很好,但您真正需要的是一个简短的课程,其中包含课程教程。 Stack Overflow 不适合这样的普通教育。只需搜索“Python 类教程”并完成对概念的解释。有关此处要问的问题的指导,请参阅 on topic 和 how to ask。
-
另外,如果您不确定如何使用这些东西,那么您不应该在此处发布这么多代码。给自己写一个简短的游戏,一次写几行:一个玩家,一个怪物,一场战斗。当你开始工作时,我希望你会向我们提出一些很好的、有针对性的问题。
-
好的,我会这样做的。当我启动并运行短游戏时,我会再次发帖(可能会删除这篇文章)询问是否有办法改进代码并使其更高效。我已经在 codereview.stackexchange.com here 上发布了一个使用类的游戏,而我的类的一些答案并没有真正意义,这就是我来这里的原因。
-
明白。然而,正如您在介绍导览中看到的(您现在已经阅读了,对吗?),Stack Overflow 是针对特定编程问题的,而不是更广泛的讨论。我提出的建议称为“增量编程”,在我数十年的软件开发和教学过程中,我发现它非常有用。
-
另外,你在一个整体项目上是完全正确的:为 Enemy 创建一个通用类,并让特定的小动物成为它的子类。事实上,您可以让该类包含可以与常用属性(健康、姓名等)交互的任何内容,并让 Player 也成为子类。
标签: python class attributes