python面向对象----->组合的题目 定一个人狗大战 并且用面向对象的组合知识

定一个人狗大战  并且用面向对象的组合知识

class Person(object):
    def __init__(self, name, sex, hp, ad):
        self.name = name
        self.sex = sex
        self.hp = hp
        self.ad =ad
        self.money = 0 #定义一个默认的属性
    #定义一个人攻击物的方法
    def attack(self, d):
        d.hp -= self.ad
        print('{}攻击了{},{}掉了{}血'.format(self.name,d.name, d.name,self.ad))

        # 但是你想想 你要装备动东西的话 那么你需要先充值啊  毕竟腾讯系啊

    def pay(self):
        money = int(input('请输入你要充值的钱数'))
        self.money += money
        print('充值成功 总资金%s' % self.money)

    #定义一个人可以购买的武器的方法
    def zhuangbei(self, weapon):
        # self.weapon = weapon  #把你传递进来的属性  赋值给这个类本身
        if self.money >= weapon.price :
            self.weapon  = weapon  #把你的传递进来的参数给类本身  以方便类本身来调用
            print('购买成功, 您已经成功装备了武器')
            self.money -= weapon.price
        else :
            print('余额不足请充值')


    def attack_with(self,dog):  #这个是用武器攻击的方法
        if 'weapon' in self.__dict__:  #判读你把组合的信息赋予了类本身没有
            self.weapon.attack3(dog)
        else :
            print('您还没有购买装备  请购买')



class Dog(object): #定义一个动物类
    def __init__(self, name, sex, hp,ad):
        self.name = name
        self.sex = sex
        self.hp = hp
        self.ad = ad
    #定义一个动物攻击其他的方法
    def attack1(self, p):
        p.hp -= self.ad
        print('{}攻击了{},{}掉了{}血'.format(self.name, p.name, p.name, self.ad))

#模拟你的游戏 你可以装备武器来进攻
#定义一个武器类
class  weapon(object):
    def __init__(self, name, price, ad,leval):  #初始化你的对象
        self.name =name
        self.price =price
        self.ad = ad
        self.leval = leval

    def attack3(self, m):
        m.hp -= self.ad
        print('{}攻击了{},{}掉了{}血'.format(self.name, m.name, m.name, self.ad))



#实例化对象
alex = Person('老王', '女', 100,30)
tendy = Dog('泰迪', '公', 100,50)
weapon = weapon('菜刀', 1000, 100,1)

li = ['攻击', '充值', '购买', '使用武器攻击']

while True :

    for i in li :
        num = int(input('请输入您要选择的序列信息'))
        if num == 1 :
            alex.attack(tendy)
        elif num == 2 :
            alex.pay()
        elif num == 3 :
            alex.zhuangbei(weapon)
        elif num == 4 :
            alex.attack3(tendy)
        else :

转载于:https://my.oschina.net/u/3825370/blog/1794922

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值