我正在创建一个基于文本的冒险游戏(如this帖子中所述),我仍然坚持如何使用类及其属性,与类相关的参数以及预定义的关键字{{ 1}}。我四处寻找如何使用它们,但无济于事。我将举一个例子,并附上一个问题:
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)
这些是我在游戏中想要的课程。我想知道我是否可以创建一个名为“敌人”的类,然后可以创建可以从该类调用的子集/类(再次,如何从类调用属性的任何帮助将非常感激),所以它使代码更清晰。
如果您不确定我刚才所说的话,或者您需要对问题进行更多说明,请发表评论。提前谢谢。
答案 0 :(得分:1)
在Python类中快速上课。首先,让我们覆盖自己。 Self指的是您为该类创建的Object。所以我们说:
zombie1 = Zombie("bob")
此实例中的self指的是对象" zombie1"
现在,要使用方法的属性。将类视为封装一些通用数据的东西。它似乎已经有了那部分。现在属性是类包含的通用数据类型。例如,您的僵尸名称,攻击等。要访问它们,我们只需这样做:
zombie1.name
'bob'
zombie1.attack
5
等等。这将为您提供附加到这些属性的数据。
现在要制作子类,你可以做这样的事情。
class Enemies(object):
def __init__(self):
self.maxhealth = 100
class Zombies(Enemies):
def __init__(self, name):
super().__init__()
self.name = name
self.health = self.maxhealth
self.attack = 5
self.golddrop = random.randint(5, 10)
您可以像这样分配一个对象:
zombie2 = Zombie("Mike")
这样的输出将为您提供Zombie类和Enemies类的数据:
zombie2.maxhealth
100
zombie.name
'Mike'
zombie2.attack
5
等等。如果你仔细观察,你会看到zombie2具有属性maxhealth,即使它在Enemies下被初始化和定义。希望这有助于一些人!
对于你想要创建通用敌人数据以供个人怪物使用,我会把敌人类留给你。我只是想以maxhealth为例来说明它可以从子类中的父类拉出来。
对评论问题的回复:
要获得玩家名称,您可以采用以下两种方式之一,创建方法,或在编程时提出要求。我会告诉你两种方式。
class Player(object):
def __init__(self):
self.name = None
self.gold = None
def getName(self):
self.name = input("Please enter your name: ")
print(self.name)
player1 = Player()
player1.getName()
当你调用player1.getName()时,它会询问他们的名字并将其存储到name变量中。然后您可以通过以下方式拨打姓名:
player1.name
'Peter'
你也可以这样做:
class Player(object):
def __init__(self, name):
self.name = name
self.gold = None
这样您就可以在创建对象时调用玩家名称,例如:
player1 = Player(input("Please enter your name here: "))
player1.name
'Peter'
这种方式允许您专门编写名称,或者向用户询问名称。
最后编辑黄金位:
class Player(object):
def __init__(self, name):
self.name = name
self.gold = None
def giveGold(self):
print("Since you are new, 100 gold dubloons have been given to you!")
self.gold = 100
因此,您可以根据自己的意愿调用Player()。您可以硬编码名称,或要求用户输入。然后在Player()对象上运行方法giveGold()以授予它们100个黄金Dubloons。
player1 = Player("Peter")
player1.giveGold()
Since you are new, 100 gold dubloons have been given to you!
player1.gold
100
希望这是有道理的。我想我帮助你开始做得很好。我将把剩下的游戏留给你:)