zoukankan      html  css  js  c++  java
  • 面向对象之人狗大战

    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)

    打印结果:

  • 相关阅读:
    HashMap了解吗?
    阻塞队列知道吗
    深入理解Java枚举类型(enum)
    CountDownLatch/CyclicBarrier/Semaphore 使用过吗?
    Java 种15种锁的介绍:公平锁,可重入锁,独享锁,互斥锁等等…
    选择排序算法
    Node版本管理器NVM常用命令
    希尔排序算法
    插入排序算法
    mybatis与hibernate的区别持久层对比【面试题】
  • 原文地址:https://www.cnblogs.com/xiaolu915/p/10587399.html
Copyright © 2011-2022 走看看