 '''
题:英雄和怪物轮流攻击对方,展示对方受到的伤害与剩余血量,当一方血量低于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)
|