[leetcode] 543. Diameter of Binary Tree
654
2022-08-21
几段 Python 代码理解面向对象(几段奶粉有什么区别)
目录
定义一个游戏输入,对输入简单解析并做出反应
为游戏对象添加查看状态的方法
为 Goblin 类添加更详细的信息
正文
1.定义一个游戏输入,对输入简单解析并做出反应
源代码:
a-simple-game.py
# 获取输入并解析出输入对应的动作
def get_input():
command = input(":").split()
verbo_word = command[0]
if verbo_word in verb_dict:
verb = verb_dict[verbo_word]
else:
print("Unknown verb {}".format(verbo_word))
return
if len(command) >= 2:
noun_word = command[1]
print(verb(noun_word))
else:
print(verb("nothing"))
# 具体的动作
def say(noun):
return "You said {}".format(noun)
# 将动词和动作对应起来
verb_dict = {
"say": say,
}
while True:
get_input()
运行结果:
2.为游戏对象添加查看状态的方法
代码:
class GameObject:
class_name = ""
desc = ""
objects = {}
def __init__(self, name):
self.name = name
GameObject.objects[self.class_name] = self
def get_desc(self):
return self.class_name + "\n" + self.desc
# 创建一个继承自游戏对象类的哥布林类
class Goblin(GameObject):
class_name = "goblin"
desc = "A foul creature"
goblin = Goblin("Gobbly")
# 具体的动作
def examine(noun):
if noun in GameObject.objects:
return GameObject.objects[noun].get_desc()
else:
return "There is no {} here.".format(noun)
以上代码创建了一个继承自 GameObject 类的 Goblin 类,也创建一个新的 examine 方法,于是我们添加一个新的 examine 动词进去:
# 将动词和动作对应起来
verb_dict = {
"say": say,
"examine": examine,
}
代码和上一个小 demo 合并起来,运行看看:
3.为 Goblin 类添加更详细的信息,并添加 hit 动作,让你可以打 Goblin(有点意思了~)
代码(只列出修改过的与添加的):
class Goblin(GameObject):
def __init__(self, name):
self.class_name = "goblin"
self.health = 3
self._desc = "A foul creature"
super().__init__(name)
@property
def desc(self):
if self.health >= 3:
return self._desc
elif self.health == 2:
health_line = "It has a wound on its knee."
elif self.health == 1:
health_line = "Its left arm has been cut off."
elif self.health <= 0:
health_line = "It is dead."
return self._desc + "\n" + health_line
@desc.setter
def desc(self, value):
self._desc = value
def hit(noun):
if noun in GameObject.objects:
thing = GameObject.objects[noun]
if type(thing) == Goblin:
thing.health -= 1
if thing.health <= 0:
msg = "You killed the goblin!"
else:
msg = "You hit the {}".format(thing.class_name)
else:
msg = "I'm not strong enough, I can only hit goblin."
else:
msg = "There is no {} here.".format(noun)
return msg
# 将动词和动作对应起来
verb_dict = {
"say": say,
"examine": examine,
"hit": hit,
}
运行:
这里有 完整代码 ,是不是简单又有趣~点个赞吧~
来自:https://zhuanlan.zhihu.com/p/28409354
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~