attack_vals = {
"京巴": 30,
"藏獒": 80,
}
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 #为了从函数外部可以调用这个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 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["bite"] = beat
return data #返回给变量
#动作的交互
# def dog_bite(dog_obj,person_obj):
# person_obj["life_val"] -= dog_obj["attack_val"] #人掉血等于狗的攻击力 执行咬人动作
# print("狗[%s]咬了人[%s]一口,人掉血[%s],还有血量[%s]..."%(dog_obj["name"],
# person_obj["name"],
# dog_obj["attack_val"],
# person_obj["life_val"] ))
d1 = dog("mjj","京巴") #实体
d2 = dog("mjj2","藏獒")
p1 = person("Alex",22)
d1["bite"](p1) #咬人
p1["bite"](d1) #打狗
p1["bite"](d1) #打狗
运行结果
狗[mjj]咬了人[Alex]一口,人掉血[30],还有血量[70]...
人[Alex]打了狗[mjj]一棒[50],还有血量[50]....
人[Alex]打了狗[mjj]一棒[50],还有血量[0]....