• 面向对象编程-回合制游戏


    面向对象-->类和对象的关系

    
    
    import random,time
    class Roles:
    Game = '大话西游经典回合制游戏'
    def __init__(self,role,hp):
    self.role = role
    self.hp = hp

    class Deity(Roles): # 类名 神
    def __init__(self,role,hp,spell,mp,skill_random):
    super().__init__(role,hp)
    self.spell = spell
    self.mp = mp
    self.skill = skill_random

    def spell_attacks(self, inferno): #
    if self.hp > 0:
    n = random.randint(0,1)
    if n == 0:
    print(' %s使出了%s攻击了%s造成了%s伤害'%(self.role,self.skill.name,inferno.role,self.spell))
    inferno.hp -= self.spell
    else:
    crit_spell = random.randint(50, self.spell) + self.spell
    print(' %s使出了%s攻击了%s引发了法术暴击,造成了%s伤害' % (self.role, self.skill.name, inferno.role,crit_spell))
    inferno.hp -= crit_spell

    class Skill:
    def __init__(self, name, effects, cd):
    self.name = name
    self.effects = effects
    self.cd = cd

    skill1 = Skill('天诛地灭', '雷', 5)
    skill2 = Skill('袖里乾坤', '风', 5)
    skill3 = Skill('九龙冰封', '水', 5)
    skill_random = random.choice([skill1, skill2, skill3])

    class Demon(Roles): # 魔
    def __init__(self, role,hp,attack,mp,skill):
    super().__init__(role,hp)
    self.attack = attack
    self.mp = mp
    self.skill = skill
    def physical_attacks(self,Wizards): # Wizards 仙
    if self.hp > 0:
    n = random.randint(0,1)
    if n == 0:
    print(' %s攻击了%s造成了%s伤害'%(self.role,Wizards.role,self.attack))
    Wizards.hp -= self.attack
    else:
    crit_attack = random.randint(50, self.attack) + self.attack
    print(' %s使出了%s攻击了%s引发了雷霆暴击造成了%s伤害'%(self.role,self.skill,Wizards.role,crit_attack))
    Wizards.hp -= crit_attack

    deity = Deity('神天兵',1000,100,2000,skill_random) #仙族 神天兵的 信息
    demon = Demon('混天魔',1000,100,1000,'乾坤一棍') # 魔族 混天魔的信息
    print(Roles.Game.center(29,'ж'))
    print(deity.role,'HP',deity.hp,'<--PK-->',demon.role,'HP',demon.hp)
    for i in ['准备决斗', '3', '2', '1', '开始',' ']:
    time.sleep(1)
    print(' ' + i, end='')

    def func():
    demon.physical_attacks(deity)
    if deity.hp < 0:deity.hp = 0
    print('神天兵剩余HP', deity.hp)
    print('☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★')
    time.sleep(2)
    if random.randint(0,1):func()
    while 1:
    if deity.hp > 0 and demon.hp > 0:
    deity.spell_attacks(demon)
    if demon.hp < 0:demon.hp = 0
    print('混天魔剩余HP',demon.hp)
    print('◆◇◆◇◆◇◆◇◆◇◆◇◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇')
    time.sleep(2)
    func()
    if demon.hp <= 0:
    demon.hp = 0
    print(' %s阵亡! 仰天大吼一声,生而为民,死亦何憾! '%(demon.role))
    break
    elif deity.hp <= 0:
    deity.hp = 0
    print(' %s阵亡! 发出神灵叹息,吾来生再战 '%(deity.role))
    break
    CrazyShenldon
  • 相关阅读:
    StringBuider 在什么条件下使用效率更高?
    Hibernate 与 Mybatis 如何共存?打破你的认知!
    牛逼!OpenJDK 源码要迁移到 GitHub 了!
    别在网上乱找代码了,找了一段代码突然爆了!!!
    8 条关于 Web 前端性能的优化建议
    关于 equals 和 hashCode,看这一篇真的够了!
    Python web之Python如何调用REST服务?
    ArcGIS Server如何发布gp服务
    ArcGIS坐标单位转换(米和度分秒之间是如何转换的?)
    ArcGIS MapServer和FeatureServer的区别
  • 原文地址:https://www.cnblogs.com/CrazySheldon1/p/9986943.html
Copyright © 2020-2023  润新知