c语言英雄打怪兽掉箭题目,面向对象练习,写的一个简单的文字游戏,英雄打怪兽...

游戏的要求:如图

55fd2b2273b5a8b4531f72773c469d6e.gif

image.png (358.8 KB, 下载次数: 1)

游戏要求

2020-5-14 13:02 上传

源代码:importrandomasr

#英雄(大类),包含精灵和人类两类sclassHero:

#属性,这里使用__init__方法,在创建Hero对象时默认被调用def__init__(hero, name):

hero.name = name     # 名字hero.level = 1# 等级hero.max_hp = hero.level*20# 最大生命hero.current_hp = hero.level*20# 当前生命#攻击defattack(hero):

atk = r.randint(0, hero.level*10-1)

print("-->英雄发起攻击!")

returnatk

#升级defupgrade(hero):

hero.current_hp= hero.current_hp+10#当前血量hero.level = hero.level +1#等级print("---->{} 升级,当前等级 {},当前血量 {}".format(hero.name, hero.level, hero.current_hp))

# 人类(英雄分支1)classHeroHuman(Hero):

# 属性def__init__(hero, name):

super(HeroHuman, hero).__init__(name)#继承hero.avd = 0.4# 灵活性#防御defdefense(hero, atk):

is_hurt = r.random()#产生随机数,如果小于0.4则躲避,大于则命中ifhero.avd < is_hurt:

hero.current_hp -= atk

print("-->英雄_人类:受到 {}点伤害,当前血量 {}".format(atk, hero.current_hp))

else:

print("-->英雄_人类:躲避,未命中!")

# 精灵(英雄分支2)classHeroSpirit(Hero):

# 属性def__init__(hero, name):

super(HeroSpirit, hero).__init__(name)

hero.avd = 0.7# 灵活性# 防御defdefense(hero, atk):

is_hurt = r.random()

ifhero.avd < is_hurt:

hero.current_hp -= atk

print("-->英雄_精灵:受到 {}点伤害,当前血量 {}".format( atk, hero.current_hp))

else:

print("-->英雄_精灵:躲避,未命中!")

#怪兽(大类),包含怪兽和大怪兽classMonster:

#属性def__init__(monster, name, level):

monster.name = name      # 名字monster.level = level    # 等级monster.max_hp = int(level * 15)  # 最大生命monster.current_hp = int(level * 15)  # 当前生命# 攻击defattack(monster):

atk = r.randint(0, monster.level * 10- 1)

print("-->怪兽发起攻击!".format(monster.name))

returnatk

# 防御defdefense(monster, atk):

monster.current_hp -= atk

print("-->怪兽受到 {} 点伤害,当前血量 {}".format( atk, monster.current_hp))

# 大怪兽,拥有护盾属性并重写防御方法classMonster_bigMonster(Monster):

# 属性def__init__(Big_monster, name, level):

super(Monster_bigMonster, Big_monster).__init__(name, level)

Big_monster.shield = Big_monster.max_hp * 0.2# 护盾# 防御defdefense(Big_monster, atk):   # 重写防御方法,受到攻击优先扣除护盾ifBig_monster.shield - atk >= 0:

Big_monster.shield = atk-Big_monster.shield

print("-->大怪兽:受到 {}点伤害,当前护盾值 {} 血量 {}".format( atk, Big_monster.shield, Big_monster.current_hp))

else:

ifBig_monster.shield > 0:

Big_monster.current_hp -= Big_monster.shield

Big_monster.shield = 0print("-->大怪兽:受到 {}点伤害,当前护盾值 {} 血量 {}".format( atk, Big_monster.shield, Big_monster.current_hp))

else:

Big_monster.current_hp -= atk

print("-->大怪兽:受到 {}点伤害,当前护盾值 {} 血量 {}".format(Big_monster.name, atk, Big_monster.shield, Big_monster.current_hp))

#主方法defmain():

#生成一个英雄,两个低等级怪兽,一个大怪兽h1 = HeroHuman("人类")

m1 = Monster("怪兽1", 1)

m2 = Monster("怪兽2", 2)

m3 = Monster_bigMonster("大怪兽", 3)

enemy = [m1, m2, m3]

r = 1while True:

print("回合{}:".format(r))

enemy[0].defense(h1.attack())   # 英雄先攻击第一个怪兽,直到一方死亡ifenemy[0].current_hp <= 0:   # 如果怪兽阵亡,从列表中删除这个怪兽,英雄升级print("{} 阵亡".format(enemy[0].name))

h1.upgrade()

delenemy[0]

# 判断英雄成功还是失败iflen(enemy) == 0:      # 英雄胜利的条件是怪兽数量为0print("---->英雄:Win!")

returnforeach inenemy:       # 英雄攻击完后,怪兽依次攻击英雄h1.defense(each.attack())

ifh1.current_hp <= 0:    # 失败print("---->英雄:Lose!")

returnr += 1# 回合数#python程序入口if__name__ == '__main__':

main()

运行效果:

55fd2b2273b5a8b4531f72773c469d6e.gif

image.png (40.22 KB, 下载次数: 2)

运行效果1

2020-5-14 13:04 上传

55fd2b2273b5a8b4531f72773c469d6e.gif

image.png (29.42 KB, 下载次数: 2)

运行效果2

2020-5-14 13:05 上传

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值