Problem D: RPG游戏步骤四:团队作战

Problem D: RPG游戏步骤四:团队作战

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 8  Solved: 8
[Submit][Status][Web Board][Creator:]

Description

现在我们要继续完成之前的文字RPG游戏,并改造之前的程序,请注意相关的改动。

1、定义抽象类:人物类,成员数据包括(注意简化了):姓名、等级、经验、最大生命、当前生命、攻击、防御和速度,并且所有人物的等级都默认从第1级开始。

从第1级升级到第2级需要消耗1000经验值,从第2级升级到第3级需要消耗1000*1.1=1100经验值,从第3级升级到第4级需要消耗1100*1.1=1210经验值(后续等级以此类推,如有小数则所有经验数值向下取整)。


编写纯虚函数(重载++号)用来实现人物升级(升一级)。


2、从人物类派生出三个子类:剑士(swordman)(攻击高防御低速度一般)、矮人(dwarf)(攻击一般防御高速度低)、射手(shooter)(攻击低防御一般速度高)。

升级时人物的最大生命、攻击、防御和速度都会增加,上述三个种族的增加数值依次分别为:

剑士:100,20,5,10
矮人:200,10,20,5
射手:150,5,10,20


在各个类当中重新定义父类的纯虚函数(重载++号)。升级时当前生命上升为最大生命。


3、采用问题1022(http://oj.bmeonline.cn/problem.php?cid=1022&pid=3)当中的异质节点的链表,创建两个长度为3的游戏队伍。其中1号是剑士,2号是矮人,3号是射手,双方进行回合制的团队作战。

战斗规则如下:

1)拥有最快速度角色的队伍将先出手,如果此数值相同,则默认主动攻击一方先出手。

2)每次出手事,攻击方的所有队员都默认攻击对方1号,攻击完毕则交换进攻方

进攻算法主要参考http://oj.bmeonline.cn/problem.php?cid=1018&pid=2,但省去了基本伤害这一项。

3)如果被攻击的队员死去,则将其从链表当中摘除。(例如1号队员死去,则原有的2号队员替补成为1号,也就是说链表从头摘除。)

4)两只队伍有任何一只全部死亡则结束战斗。

5)胜利一方所有人(包括死去的)获得战斗经验值(对方所有人的生命之和)并计算升级,死去的队员默认全部复活。


Input

暂无

Output

暂无
[Submit][Status]