面向对象之人狗大战

1.用函数来解决人狗大战

# 函数实现人狗大战
def person(name,age,sex,job):
    data={
        "name":name,
        "age":age,
        "sex":sex,
        "job":job
    }
    return data

def dog(name,age):
    data={
        "name":name,
        "age":age
    }
    return data

d1 = dog("小黑",18)
p1=person("小明",20,"F","开发")
p2=person("小五",18,"A","测试")

def bark(d):
    print("dog %s:wang wang wang "%d['name'])

def walk(p):
    print("person%s:人打狗"%p['name'])

bark(d1)  #dog 小黑:狗大人
walk(p2)  # person小五:人打狗


# 面向对象
class Person:  # 定义一个类
    rotel='person'    # 人的角色都是人

    def __init__(self,name,attack_power,hp):
        self.name=name  #人的昵称
        self.attack_power=attack_power  # 人的攻击力
        self.hp=hp        # 血量


    def attack(self,dog):
        # 人攻击狗,狗的生命值根据人的攻击力而下降
        dog.hp -= self.attack_power

egg=Person('xiaowu',10,100)
print(egg.name)
print(egg.attack_power)
print(egg.hp)
print(egg.attack())

结果如下:

面向对象解决人狗大战

class Person():
    rptel="中国人"   # 属性一:类属性
    def __init__(self,name,attack_power,hp):
        self.name=name   #名字
        self.attack_power=attack_power  # 攻击力
        self.hp=hp    #血量

    def attack(self,dog):
        # 狗的血量=狗的血量减去人的攻击力
        dog.hp=dog.hp-self.attack_power

class Dog():
    rotel='dog'
    def __init__(self,name,attack,hp):
        self.name=name
        self.attack=attack
        self.hp=hp

    def blbte(self,person):
        # 狗咬人
        person.hp=person.hp-self.attack

egg = Person("小明",20,100)
ha2 = Dog("xiaohei", 10,50)
print(egg.hp)   # 查看人的血量
egg.attack(ha2)  # 人打了狗一下
print(ha2.hp)    # 查看狗的血量
ha2.blbte(egg)  # 狗咬人
print(egg.hp)   # 插件人的血量

打印结果如下:

 人狗大战之RMB玩家

class Person():
    rotel = ""  # 静态属性

    def __init__(self, name, attack_power, hp):
        self.name = name  # 昵称
        self.attack_power = attack_power  # 攻击力
        self.hp = hp  # 血量

    def attack(self, dog):  # 人打狗
        dog.hp = dog.hp - self.attack_power


class Dog():
    rotel = ""

    def __init__(self, name, attack_power, hp):
        self.name = name
        self.attack_power = attack_power
        self.hp = hp

    def bite(self, person):  # 狗咬人
        person.hp = person.hp - self.attack_power


zhang = Person("张三", 20, 100)
ha = Dog("二哈", 10, 50)
zhang.money=200   # 加入新的属性,
print(zhang.money)

class Weapon():  # 武器类
    def __init__(self, name, price, aggr, hp):
        self.name = name  # 武器名称
        self.price=price  # 价格
        self.aggr = aggr  # 对攻击力的加成
        self.hp = hp  # 对血量的加成

    def updata(self, person):  # 武器装备到人
        person.money=person.money-self.price
        person.attack_power = person.attack_power + self.aggr  # 人的攻击力
        person.hp = person.hp + self.hp  # 人的血量

    def kill(self, obj):  # 装备:主动技能
        obj.hp = obj.hp - self.aggr


wuqi = Weapon("流星锤", 55, 20, 30)

if zhang.money>wuqi.price:
    wuqi.updata(zhang)
    zhang.weapon=wuqi

print(ha.hp)  # 查看狗的血量
print(zhang.attack_power) # 查看人的攻击力
zhang.attack(ha)  # 人打狗一下
print(ha.hp)       # 查看狗的血量

# 调用武器的技能
zhang.weapon.kill(ha)
print(ha.hp)
print(zhang.hp)

打印结果:

原文地址:https://www.cnblogs.com/xiaolu915/p/10587399.html