|
发表于 2020-5-11 21:47:31
|
显示全部楼层
本楼为最佳答案
 - '''
- 题:英雄和怪物轮流攻击对方,展示对方受到的伤害与剩余血量,当一方血量低于0时游戏结束。
- 思路:
- 通过题意得知有2个对象 英雄 和 怪物。
- 因题中没有说明英雄和怪物的名称是什么及血量多少,则名称和血量由用户创建对象时输入。
- 伤害值则受到攻击时随机生成。
- 使用循环实现英雄和怪物轮流攻击,当一方血量低于0时退出循环游戏结束。
- 描述 英雄:
- 属性:
- 名称
- 血量
- 伤害血量
- 方法:
- 攻击(攻击对象)
- 被攻击
- 获取名称
- 获取血量
- 获取伤害血量
- 描述 怪物:
- 属性:
- 名称
- 血量
- 伤害血量
- 方法:
- 攻击(攻击对象)
- 被攻击
- 获取名称
- 获取血量
- 获取伤害血量
- '''
- import random
- # 描述英雄
- class Hero:
- def __init__(self, name, blood):
- self.name = name
- self.blood = blood
- self.hurBlood = 0
- def attack(self, monster):
- monster.attacked()
-
- def attacked(self):
- self.hurtBlood = random.randint(0, 50)
- if self.blood>0:
- self.blood -= self.hurtBlood
- def getName(self):
- return self.name
- def getBlood(self):
- return self.blood
- def getHurblood(self):
- return self.hurtBlood
-
- # 描述怪物
- class Monster:
- def __init__(self, name, blood):
- self.name = name
- self.blood = blood
- self.hurBlood = 0
-
- def attack(self, hero):
- hero.attacked()
-
- def attacked(self):
- self.hurtBlood = random.randint(0, 50)
- if self.blood>0:
- self.blood -= self.hurtBlood
- def getName(self):
- return self.name
- def getBlood(self):
- return self.blood
- def getHurblood(self):
- return self.hurtBlood
- # 游戏开始函数,传入英雄和怪物对象
- def startGame(hero, monster):
- flag = True # 用于标记切换攻击
- while True:
- if(flag):
- hero.attack(monster)
- print("%s你被%s攻击,受到了%d点伤害!还剩%d滴血" % (monster.getName(), hero.getName(), monster.getHurblood(), monster.getBlood()))
- if monster.getBlood()<=0:
- print("%s你被杀死了!胜败乃兵家常事 请重新来过。" % (monster.getName()))
- break
- flag = False
- else:
- monster.attack(hero)
- print("%s你被%s攻击,受到了%d点伤害!还剩%d滴血" % (hero.getName(), monster.getName(), hero.getHurblood(), hero.getBlood()))
- if hero.getBlood()<=0:
- print("%s你被杀死了!胜败乃兵家常事 请重新来过。" % (hero.getName()))
- break
- flag = True
-
- # 生成 英雄和怪物
- hero = Hero("张三", 100)
- monster = Monster("小强", 100)
- startGame(hero, monster)
复制代码 |
评分
-
查看全部评分
|