• 面向对象text 01 盖伦vs瑞文vs提莫


    '''
    
    Text For Class:
    
            League of Legends
            Garen vs Riven vs Teemo
    
    '''
    
    import random # 全局随机
    import time
    
    
    class HeroName: # 英雄名字类
        GameName = 'League of Legends' # 游戏名字
        def __init__(self,hero_name): # 初始化设定,自身和形参名
            self.hero_name = hero_name # 形参名初始化
            self.HP = 800 # 血量初始化
            if hero_name not in ['Garen','Riven','Teemo']: # 不是瑞文提莫盖伦
                self.hero_name == 'Teemo' # 都为提莫
                Teemo_HP = random.randint(100,250) # 提莫血量随机整数 全闭[100到250]
                self.HP = Teemo_HP # 提莫血量赋名
                self.__armor = 0 # 提莫格挡为0
                self.__att = 1000 # 提莫攻击1000
    
            elif hero_name == 'Teemo': # 提莫 HP 随机 100-250
                Teemo_HP = random.randint(100, 250)
                self.HP = Teemo_HP
                self.__armor = 0 # 格挡 0
                self.__att = 1000 # 攻击 1000
    
            elif hero_name == 'Garen': # 盖伦 HP 800
                self.__armor = 150 # 格挡 150
                self.__att = 200 # 攻击 200
    
            else : # 瑞文
                self.__armor = 80 # 格挡 80 HP 800
                self.__att = 300 # 攻击 300
    
        @property
        def armor_count(self):
            return self.__armor
    
    
        def attack(self,enemy):
    
            n = 1
            print('%s   vs   %s' % (self.hero_name, enemy.hero_name))
            if self.hero_name == 'Teemo' or enemy.hero_name == 'Teemo':
                print('Teemo必须死')
            while True:
    
                if (enemy.HP > 0 and self.HP > 0):
                    print('----------------------------------')
                    print('第%s回合' %n)
    
                    enemy.HP -= self.__att - enemy.armor_count
                    info_1 = self.hero_name,enemy.hero_name,enemy.hero_name,enemy.HP,self.hero_name,self.HP
                    print('%s攻击了%s,%s还剩%s滴血,%s还剩%s滴血'% info_1)
                    if enemy.HP > 0:
                        self.HP -= enemy.__att - self.armor_count
                        info_2 = enemy.hero_name, self.hero_name, self.hero_name, self.HP, enemy.hero_name, enemy.HP
                        print('%s反击了%s,%s还剩%s滴血,敌人%s还剩%s滴血' % info_2)
                        n += 1
                        # time.sleep(3)
                    else:
                        print('胜利,敌人%s已经阵亡' % enemy.hero_name)
                        break
    
                else:
                    print('你的角色%s已经阵亡' % self.hero_name)
                    break
    
    
    
    
    class Game: # 定义游戏类
        name = 'League of Legends , Garen vs Riven vs Teemo'
    
        @classmethod # 能拿到类中定义的属性
        def start(cls):
            print('--- %s ---'% cls.name)
            # League of Legends , Garen vs Riven vs Teemo
    
            H1 = HeroName('Garen')
            H2 = HeroName('Riven')
            H3 = HeroName('Teemo')
            choose = random.randint(1,4)
            if choose == 1:
                enemy = H2.hero_name
                # print('盖伦打瑞文')
                H1.attack(H2)
    
            elif choose == 2:
                enemy = H1.hero_name
                # print('瑞文打盖伦')
                H2.attack(H1)
    
            elif choose == 3:
                H3 = HeroName('Teemo')
                enemy = H1.hero_name
                # print('提莫打盖伦')
                H3.attack(H1)
    
            else:
                H3 = HeroName('Teemo')
                enemy = H3.hero_name
                # print('盖伦打提莫')
                H1.attack(H3)
    
    Game.start() # 游戏开始
    
    
    
    
    
    
    
    '''
    # --  (Problems in testing)  ------------------------------------------------------------------------------------------
    # --  (1.)  ------------------------------------------------------------------------------------------------
    
    # --  (import random *module)  ----------------------------------------------------------------------------------------------
    # --  (# auth code) ----------------------------------------------------------------------------------------------
    
    import random # import random *module 声明随机模块
    def auth_code(n): # 定义生成码函数,位形n 接 外实传n
    
        res=''
        # 声明一个空字符串
        # 因为下面随机出来一个是整型一个是字符串
        # 在整型65,90中,把随机出来的数字通过内置chr,转换为ascii中对应的大写的A-Z,(97-122小写)
        # 定义空字符串为了做字符串拼接
    
        for i in range(n): # 循环范围传参
            s1 = chr(random.randint(65,90))
    
            # randint 大于等于65,小于等于90的整数,前闭后闭[65,90]
            # 然后通过chr 转成ascii码对应的字符
            # chr(65-90) 就是A-Z
            # chr(97-122) 就是a-z
    
            # ord()函数主要用来返回对应字符的ascii码
            # chr()主要用来表示ascii码对应的字符
            # 可以用十进制,也可以用十六进制。
    
            s2=str(random.randint(0,9))
            # randint 大于等于0,小于等于9的整数,前闭后闭[0,9]
            # 转成str字符串
    
            res += random.choice([s1,s2]) # 二选一,现在输出都为字符串
            # random.choice模块是通过[]列表的索引取值
            # 每次循环结束都把结果 添加到定义的res空字符串中''字符串拼接
    
            # 循环外界次数n次就循环n次,随机n次
        return res #
    
    print(auth_code(9))
    # res = 5U549I6H0...
    
    
    # ----  (Random Ex)  ------------------------------------------------------------------------------------------------
    
    # 1.
    
    # ascii:
        # Capital(A-Z) for range(65,90)
        # lower(a-z) for range(97,122)
    
        # Convert to ASCII code through Chr
        # Then check result‘s type.
    
    
    s = random.randint(65, 90)
    # 65|90|85|72
    print(s,type(s))
    # Enter --> s,int
    
    s = chr(s)
    # s --> chr --> ascii
    print(s,type(s))
    # Enter --> s,str
    
    
    variable_name = random.choice([10,'25'])
    print(variable_name)
    # Enter -->
    # case.1.Enter --> list[0,1] --> list[0] --> 10
    # case.2.Enter --> list[0,1] --> list[1] --> '25'
    
    # res = random.choice(['x','y',random.randint(1,9)])
    # print(res)
    # Enter -->
    # case.1.Enter --> list[0,1,2] --> list[0] --> 'x'
    # case.2.Enter --> list[0,1,2] --> list[1] --> 'y'
    # case.3.Enter --> list[0,1,2] --> list[2] --> random.randint(1,9) --> 1|2...|9
    
    
    
    # ---------------------------------------------------------------------------------------------------------
    # ---------------------------------------------------------------------------------------------------------
    '''
  • 相关阅读:
    LC 综合 中级算法笔记
    LC 212. 单词搜索2
    [NLP] 2.2 文本正规化 (Text Normalization)
    本地秘钥复制到github,实现两者之间的交互
    Python 实例化对象
    C# 左补齐+ 生成一个星期的日期
    hello world
    迭代器模式、观察者模式
    代理模式、桥接模式、装饰器模式、适配器模式
    外观模式、组合模式、享元模式
  • 原文地址:https://www.cnblogs.com/max404/p/10743694.html
Copyright © 2020-2023  润新知