python 人物对打 类

python 人物对打 类
class Person:
    def __init__(self,name,hp,atk):
        self.name=name
        self.hp=hp
        self.atk=atk
        pass
    def __new__(cls, *args, **kwargs):
         #确定是否比赛开始 创建函数
        if input('比赛是否开始yes / no:') == 'yes':
            return object.__new__(cls) #执行2次是应为构造是要input 构造类有input一次
    def __str__(self):
        return "{}当前血量{}".format(self.name,self.hp)
        pass
    def attk(self,enemy):
        enemy.hp -= self.atk
        print("{}攻击了{}一下 伤害{}".format(self.name,enemy.name,self.atk))
        self.toux()
    def toux(self):
        if self.hp <=20:
            print('我是{}血量太少,我想投降'.format(self.name))
            if random.randint(0,10)==9:
                print('处罚投降概率 当场投降!!!')
                global flag
                flag = False
                return
            print('触发失败!!!')
            pass
        pass
    def recove(self):
        self += self.hp*0.1
    pass
one=Person('奥特曼',1000,12)
two=Person('丁伟亮',1000,12)
# 代码演示区域
import random
flag  =True
n=0
if bool(one):
    while flag:
        if one.hp <= 0 or two.hp <= 0:
            print('游戏结束 {}获胜'.format(two.name) if one.hp <= 0 else '游戏结束 {}获胜'.format(one.name))
            break
        if random.randint(1, 2) == 1:
            print(one)
            one.attk(two)
            print(two)
            pass
        else:
            print(two)
            two.attk(one)
            print(one)
            pass
        n += 1
        print("当前比赛第%d轮" %n)
        pass
else:
    print('比赛失败!!!')
人物对打

 

上一篇:Unity学习笔记(4)飞机大战第四章「持续按键子弹间隔时间发射」「随机血条」「开始和结束界面」「在最后一个场景中得到前面场景对象的函数/值」「陨石坠落」


下一篇:数据结构——二叉树(顺序结构与链式结构)