????博主syst1m 带你 acquire knowledge!
✨博客首页——syst1m的博客????
????《CTF专栏》超级详细的解析,宝宝级教学让你从蹒跚学步到健步如飞????
????《大数据专栏》大数据从0到秃头????,从分析到决策,无所不能❕
???? 《python面向对象(人狗大战)》突破百万的阅读量,上过各种各样的官方大型专栏,python面向对象必学之一!????
????希望本文能够给读者带来帮助,更好地理解这个问题或解决你的困惑????
项目实训 人狗大战
多个人,多条狗,多个品种,年龄,攻击力
可参考教程:【精选】Python 面向对象--人狗大战(教程)_python人狗大****_syst1m'的博客-****博客
attack_vals = {
"二哈":20,
"藏獒":70,
"金毛":40
}
def dog(name, d_type):
data = {
"name":name,
"d_type":d_type,
"life_val":100
}
if d_type in attack_vals:
data["attack_val"] = attack_vals[d_type]
else:
data["attack_val"] = 15
def dog_bite(person_obj):
person_obj["life_val"] -= data["attack_val"]
print("狗[%s]咬了人[%s]一口,人掉血[%s],还有血量[%s]..." % (data['name'],
person_obj["name"],
data["attack_val"],
person_obj["life_val"]))
data["bite"] = dog_bite
return data
def person(name,age):
data = {
"name": name,
"age": age,
"life_val": 100
}
if age >= 18:
data["attack_val"] = 50
else:
data["attack_val"] = 30
def person_beat(dog_obj):
dog_obj["life_val"] -= data["attack_val"]
print("人[%s]打了狗[%s]一棒,狗掉血[%s],还有血量[%s]..." % (data['name'],
dog_obj["name"],
data["attack_val"],
dog_obj["life_val"]))
data["beat"] = person_beat
return data
d1 = dog("zbc1","二哈")
d2 = dog("zbc2","藏獒")
d3 = dog("zbc3","金毛")
p1 = person("hga",18)
p2 = person("hag2",15)
p3 = person("hga3",19)
d1["bite"](p1)
p1["beat"](d1)
d1["bite"](p1)
d1["bite"](p1)
p1["beat"](d1)