主题:[讨论]急救c++
有谁能帮我写下这题的代码 万分感谢
设计和实现Mini回合制战斗系统 – 2008 C++ Project
1. 战士Warrior类(抽象类,所有函数都是虚函数)
1) Warrior的属性
最大生命 maxHP 当前生命 HP 最大\体力maxSP 当前体力SP
最大内力 maxMP 当前内力 MP 攻击力 hack
经验 EXP 等级 level 姓名 name 性别 sex
2) Warrior的动作
战斗 attack() 休息 rest() 吃药 haveDrug() 死亡 die()
决策 makeDecision()
3) Warrior被创建后,maxHP和HP为100,maxSP和SP为100,maxMP和MP为100,hack为20,EXP为0, level为1; (构造函数)
4) 每回合warrior通过makeDecision()来决定发出哪一个动作(attack,rest或daveDrug);
5) attack()一次,SP减少10,EXP增加5。防御方的HP减少值为攻击方hack的大小。HP减少到0时,Warrior die();(可以考虑打偏的情况)
6) EXP每增加20,level提高一级,maxHP,maxSP,maxMP皆增加100,hack增加50;
7) rest()一次,HP,SP皆恢复至最大值,但下一回合无法行动;
8) haveDrug()一次,SP增加50,但不能超过maxSP。(假设药量无限,不考虑吃药的次数限制)
2. 开发组战士GXXWarrior类(XX为组号,比如Class G01Warrior);
1) GXXWarrior继承自Warrior类;
2) GXXWarrior除了具有Warrior的属性和行为之外,还拥有绝杀技能(masterStroke);
3) masterStroke()一次,减少防御方HP的数量为攻击方攻击力hack的1-3倍(随机确定),MP减少到0
4) 每一回合内力自动恢复10%
5) 使用绝杀的前提:内力不少于80%
3. 战斗系统WarSystem类(在此类中实现父类的所有虚函数)
1) WarSystem类的属性
军团A Warrior * _pWarriorA; 军团B Warrior * _pWarriorB;
2) WarSystem类的动作
战斗开始startWar() 回合开始startRound()
3) 每次战斗,双方派出3名战士组成一个军团。战斗按回合制进行,即每回合中,一方军团的每个战士做完一次动作(attack或rest或haveDrug)后,另一方军团每个战士接着完成自己的一次动作。战斗开始,由哪个军团先发起攻击,系统随机决定。回合的生成和结束由WarSystem类控制;
4) WarSystem类拥有两个数据成员:
Warrior * _pWarriorA;
Warrior * _pWarriorB;
分别对应战斗的双方军团。(提示,军团可以以GXXWarrior数组的形式生成,在WarSystem中用pWarriorA和pWarriorB指向两个军团,注意OOP的多态实现。)
5) WarSystem类可以发出战斗开始startWar()动作。在startWar()中,随机决定由哪一方率先发起攻击,然后调用WarSystem的另一动作回合开始startRound()。
6) startRound()动作的描述:在startRound()中,按军团顺序调用每个战士的makeDecision()动作。
4. 将整个战斗过程的每一步保存入日志文件。(可以直接输出到屏幕)
5. 项目说明:
1) 开发小组全部人员皆要求参与设计和开发,每位组员有明确的分工(组内自行协调);每位组员除了熟悉自己的任务模块外,需熟悉整个系统的设计和开发;
2) 影响项目评分的因素:
i. 系统对需求的实现程度;
ii. 项目组内部分工的合理度,协作的程度;
iii. 每位组员最后的考评皆会影响项目组其他成员的最后评分;
3) 部分项目需求并未完整给出(如:warrior的makeDecision决策机制如何设计?在不同场景下该如何做出最佳决策?己方应该分开攻击对方不同的战士,还是应该合力攻击对方最强的战士或者最弱的战士?应该在哪一个类中增加方法,来获取对方军团的战士信息以便己方做出正确决策?) 在现实中,项目组常常面临开发的项目需求不完整的情况,需要通过反复的需求分析和沟通逐步解决这一问题。关于项目组对此类问题的处理能力,也是本次考查的内容之一。
设计和实现Mini回合制战斗系统 – 2008 C++ Project
1. 战士Warrior类(抽象类,所有函数都是虚函数)
1) Warrior的属性
最大生命 maxHP 当前生命 HP 最大\体力maxSP 当前体力SP
最大内力 maxMP 当前内力 MP 攻击力 hack
经验 EXP 等级 level 姓名 name 性别 sex
2) Warrior的动作
战斗 attack() 休息 rest() 吃药 haveDrug() 死亡 die()
决策 makeDecision()
3) Warrior被创建后,maxHP和HP为100,maxSP和SP为100,maxMP和MP为100,hack为20,EXP为0, level为1; (构造函数)
4) 每回合warrior通过makeDecision()来决定发出哪一个动作(attack,rest或daveDrug);
5) attack()一次,SP减少10,EXP增加5。防御方的HP减少值为攻击方hack的大小。HP减少到0时,Warrior die();(可以考虑打偏的情况)
6) EXP每增加20,level提高一级,maxHP,maxSP,maxMP皆增加100,hack增加50;
7) rest()一次,HP,SP皆恢复至最大值,但下一回合无法行动;
8) haveDrug()一次,SP增加50,但不能超过maxSP。(假设药量无限,不考虑吃药的次数限制)
2. 开发组战士GXXWarrior类(XX为组号,比如Class G01Warrior);
1) GXXWarrior继承自Warrior类;
2) GXXWarrior除了具有Warrior的属性和行为之外,还拥有绝杀技能(masterStroke);
3) masterStroke()一次,减少防御方HP的数量为攻击方攻击力hack的1-3倍(随机确定),MP减少到0
4) 每一回合内力自动恢复10%
5) 使用绝杀的前提:内力不少于80%
3. 战斗系统WarSystem类(在此类中实现父类的所有虚函数)
1) WarSystem类的属性
军团A Warrior * _pWarriorA; 军团B Warrior * _pWarriorB;
2) WarSystem类的动作
战斗开始startWar() 回合开始startRound()
3) 每次战斗,双方派出3名战士组成一个军团。战斗按回合制进行,即每回合中,一方军团的每个战士做完一次动作(attack或rest或haveDrug)后,另一方军团每个战士接着完成自己的一次动作。战斗开始,由哪个军团先发起攻击,系统随机决定。回合的生成和结束由WarSystem类控制;
4) WarSystem类拥有两个数据成员:
Warrior * _pWarriorA;
Warrior * _pWarriorB;
分别对应战斗的双方军团。(提示,军团可以以GXXWarrior数组的形式生成,在WarSystem中用pWarriorA和pWarriorB指向两个军团,注意OOP的多态实现。)
5) WarSystem类可以发出战斗开始startWar()动作。在startWar()中,随机决定由哪一方率先发起攻击,然后调用WarSystem的另一动作回合开始startRound()。
6) startRound()动作的描述:在startRound()中,按军团顺序调用每个战士的makeDecision()动作。
4. 将整个战斗过程的每一步保存入日志文件。(可以直接输出到屏幕)
5. 项目说明:
1) 开发小组全部人员皆要求参与设计和开发,每位组员有明确的分工(组内自行协调);每位组员除了熟悉自己的任务模块外,需熟悉整个系统的设计和开发;
2) 影响项目评分的因素:
i. 系统对需求的实现程度;
ii. 项目组内部分工的合理度,协作的程度;
iii. 每位组员最后的考评皆会影响项目组其他成员的最后评分;
3) 部分项目需求并未完整给出(如:warrior的makeDecision决策机制如何设计?在不同场景下该如何做出最佳决策?己方应该分开攻击对方不同的战士,还是应该合力攻击对方最强的战士或者最弱的战士?应该在哪一个类中增加方法,来获取对方军团的战士信息以便己方做出正确决策?) 在现实中,项目组常常面临开发的项目需求不完整的情况,需要通过反复的需求分析和沟通逐步解决这一问题。关于项目组对此类问题的处理能力,也是本次考查的内容之一。