游戏编程类与对象作业

要求
创建三个类 组成一个继承关系 表示游戏中的角色
  1. 父类:Role 是所有职业的父类

    属性:name 表示角色的名字

    方法:attack() 返回值为角色的攻击对敌人的伤害

  2. Role有两个子类

    2.1 魔法师:Magicer

    ​ 属性:魔法等级(范围:1-10)

    ​ 方法:attack() 该方法返回法师的攻击对敌人造成的伤害值

    ​ 法师攻击伤害值为:魔法等级*魔法基本伤害(固定为5)

    2.2 战士:Soldier

    ​ 属性:攻击伤害值

    ​ 方法:attack() 该方法返回战士的攻击对敌人造成的伤害值

  3. 再设计一个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()
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值