要求
创建三个类 组成一个继承关系 表示游戏中的角色
父类:Role 是所有职业的父类
属性:name 表示角色的名字
方法:attack() 返回值为角色的攻击对敌人的伤害
Role有两个子类
2.1 魔法师:Magicer
属性:魔法等级(范围:1-10)
方法:attack() 该方法返回法师的攻击对敌人造成的伤害值
法师攻击伤害值为:魔法等级*魔法基本伤害(固定为5)
2.2 战士:Soldier
属性:攻击伤害值
方法:attack() 该方法返回战士的攻击对敌人造成的伤害值
再设计一个Team类,表示一个组队。具有如下方法:
3.1 addMember() 表示组队成员增加一个成员。注意:组队成员最多为6人
提示:应当利用一个数组属性,保存所有成员
3.2 attackSum() 表示多有成员进行攻击是,对敌人造成的总伤害值
类图如下:
# 角色类
class Role():
# 初始化
def __init__(self, name):
self.name = name
def attact(self):
pass
# 魔法师类
class Magicer(Role):
# 初始化并固定基础伤害为5
def __init__(self, name, level, baseDamageNum = 5):
super().__init__(name)
self.level = level
self.baseDamageNum = baseDamageNum
# 返回并打印法师的伤害
def attact(self):
print('法师' + self.name + '的攻击力为:' + str(self.level * self.baseDamageNum))
return self.level * self.baseDamageNum
# 战士类
class Soldier(Role):
# 初始化战士的伤害
def __init__(self,name, attactDamageNum):
super().__init__(name)
self.attactDamageNum = attactDamageNum
# 返回并打印战士的伤害
def attact(self):
print('战士' + self.name + '的伤害为:'+ str(self.attactDamageNum))
return self.attactDamageNum
# 团队类
class Team():
# 初始化存储团队成员的数组 该数组为对象数组
def __init__(self):
self.team = []
def addMember(self, role):
self.team.append(role)
# return self.team
# def read(self):
# return self.team
# 便利数组中的role对象 并返回伤害的累加值
def attactkSum(self):
sum = 0
for role in self.team:
sum += role.attact()
return sum
def main():
# 获取团队成员总数 不符合要求则重新输入
a = int(input('请输入团队成员数(小于等于6人):'))
# 创建团队类对象
T = Team()
# 判断是否在合法成员数范围内
if 1 <= a <= 6:
# 循环输入成员信息
for i in range(a):
# 判断成员是法师还是战士 如果非法输入则会提示并结束程序
b = int(input('法师请扣1,战士请扣2:'))
# 法师信息输入
if b == 1:
mname = input('请输入法师昵称:')
level = int(input('请输入魔法等级(1-10):'))
m = Magicer(mname, level)
T.addMember(m)
# 战士信息输入
elif b == 2:
sname = input('请输入战士昵称:')
attactDamageNum = int(input('请输入战士伤害:'))
s = Soldier(sname, attactDamageNum)
T.addMember(s)
# 选择法师/战士的非法输入提示
else:
print('非法输入!')
# 不在合法成员数范围的非法提示
else:
print('非法输入!')
# 打印团队成员总伤害
print('团队总伤害为:'+ str(T.attactkSum()))
# 启动main函数
if __name__ == '__main__':
main()