zoukankan      html  css  js  c++  java
  • 人狗大战

    定义两个类(人,狗)实现人狗大战

    (版本1)

    class Dog:
        def __init__(self,name,hp,ad,kind):  # 初始化方法  设置狗的参数:名字,血量,攻击,种类
            self.name = name   # 实例变量   对象属性
            self.hp = hp
            self.ad = ad
            self.type = kind
    
        def bite(self, person):     # 定义 狗咬人 的方法
            person.hp -= self.ad    # 人的血量减去狗的攻击就是人新的血量
            print('%s咬了%s,%s掉了%s点血' % (self.name, person.name, person.name, self.ad))
    
    class Person:
        def __init__(self,name,hp,ad,sex):  # 初始化方法    设置人的参数:名字,血量,攻击,性别
            self.name = name        # 实例变量   对象属性
            self.hp = hp
            self.ad = ad
            self.sex = sex
    
        def fight(self,dog):  # 动态变量  方法   人打狗
            # 狗掉血,就是人的攻击力
            dog.hp -= self.ad
            print('%s攻击了%s,%s掉了%s点血'%(self.name,dog.name,dog.name,self.ad))
    
    hei = Dog('小黑',300,20,'哈士奇')   # 小黑 对象 实例
    alex = Person('alex',100,10,'male')  # alex 对象 实例
    
    print(hei.hp)    # 300
    print(alex.hp)   # 100
    
    hei.bite(alex)   # 小黑咬了alex,alex掉了20点血
    alex.fight(hei)  # alex攻击了小黑,小黑掉了10点血
    
    print(hei.hp)    # 290
    print(alex.hp)   # 80

    (版本2)增加了武器类,添加了人购买和装备武器的方法,添加了武器作用方法  【使用了类的组合】

    class Person:
        def __init__(self,name,hp,ad,sex):
            self.name = name
            self.hp = hp
            self.ad = ad
            self.sex = sex
            self.money = 2000.8      #给人一个金额
            self.beg = []               #给人一个空背包
    
        def fight(self,dog):
            dog.hp -= self.ad
            print('%s打了%s,%s掉了%s点血'%(self.name,dog.name,dog.name,self.ad))
    
        def buy_weapon(self,weapon):               #添加了买武器的方法
            if weapon.price <= self.money:         #判断武器价格是否小于人所有的金额
                self.money -= weapon.price         #求得余额
                self.money = round(self.money,2)   #余额四舍五入,保留两位小数
                self.beg.append(weapon)            #背包中加入购买的武器
                print('购买%s成功,您当前的余额:%s'%(weapon.name,self.money))
            else:
                print('您的余额不足,请充值之后重试')
    
        def use_weapon(self):             #添加了使用武器的方法
            for weap in self.beg:         #将武器从背包中拿出
                if weap.t == 'weapon':    #判断背包中拿出的是不是武器
                    self.weapon = weap    # 组合
                    self.hp += weap.hp    #人的血量获得武器加成
                    self.ad += weap.ad    #人的攻击获得武器加成
                    break
    
    class Dog:
        def  __init__(self,name,hp,ad,kind):
            self.name = name
            self.hp = hp
            self.ad = ad
            self.kind = kind
    
        def bite(self,person):
            person.hp -= self.ad
            print('%s咬了%s,%s掉了%s点血'%(self.name,person.name,person.name,self.ad))
    
    class Weapon:     #新定义了一个武器类
        t = 'weapon'  #静态变量
        def __init__(self,name,price,ad,hp):
            self.name = name
            self.price = price
            self.ad = ad
            self.hp = hp
    
        def throw(self,dog,person):    #在武器类中添加使用武器的方法
            dog.hp -= self.ad
            print('%s被%s扔中了,掉了%s点血,当前%s的血量为%s'%(dog.name,person.name,self.ad,dog.name,dog.hp))
    
    alex = Person('alex',100,10,'male')   #传入人的参数
    hei = Dog('小黑',300,20,'藏獒')       #传入狗的参数
    zhuan = Weapon('板砖',2000,200,100)   #传入武器的参数
    alex.buy_weapon(zhuan)                #人 买    武器
    alex.use_weapon()                     #人 装备  武器
    print(alex.weapon.name)               #查看人装备的武器名称
    print(alex.__dict__)                  #查看人此时状态
    alex.weapon.throw(hei,alex)           #人对狗使用武器   

    (版本3)在版本1基础上进行了类的继承

    class Animal(object):       #父类  (含有人与狗共有的属性)
        def __init__(self,name,hp,ad):
            self.name = name
            self.hp = hp
            self.ad = ad
    class Dog(Animal):  #继承
        def __init__(self,name,hp,ad,kind):
            super().__init__(name,hp,ad)
            self.kind = kind    #狗的种类
    
        def bite(self,person):
            person.hp -= self.ad
            print('%s攻击了%s,%s掉了%s点血' % (self.name, person.name, person.name, self.ad))
    
    class Person(Animal):
        def __init__(self,name,hp,ad,sex):
            super().__init__(name,hp,ad)
            self.sex = sex  #人的性别
    
        def fight(self,dog):
            dog.hp -= self.ad
            print('%s攻击了%s,%s掉了%s点血'%(self.name,dog.name,dog.name,self.ad))
    
    hei = Dog('小黑',300,20,'哈士奇')
    alex = Person('alex',100,10,'male')
    alex.fight(hei)
    print(hei.hp)
    hei.bite(alex)
    print(alex.hp)
  • 相关阅读:
    关于js计算非等宽字体宽度的方法
    [NodeJs系列]聊一聊BOM
    Vue.js路由管理器 Vue Router
    vue 实践技巧合集
    微任务、宏任务与Event-Loop
    事件循环(EventLoop)的学习总结
    Cookie、Session和LocalStorage
    MySQL 树形结构 根据指定节点 获取其所在全路径节点序列
    MySQL 树形结构 根据指定节点 获取其所有父节点序列
    MySQL 创建函数报错 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators
  • 原文地址:https://www.cnblogs.com/Xiao_Xu/p/10608742.html
Copyright © 2011-2022 走看看