C+++团队项目设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1设计和实现回合制战斗系统Combat1.Soldier战士类1)Soldier的属性(protected作用域)最大生命maxHP当前生命HP最大体力maxSP当前体力SP攻击力damage经验exp等级level姓名name药瓶数量drugNum2)Soldier的动作(public作用域)决策makeDecision攻击attack休息rest吃药takingDrug3)Soldier被创建后,maxHP和HP为100,maxSP和SP为100,damage为20,exp为0,level为1,drugNum为5;4)每回合Soldier通过决策(makeDecision)来决定需要发出哪一个动作(攻击attack、休息rest或吃药takingDrug,注意每回合只能做其中一个动作)。请自行设计和调整每种动作发出的必要条件,例如:生命值若低于最大值的30%该回合就吃药,体力低于最大值的50%该回合就休息,生命力和体力都充足该回合就发起攻击,等等;5)攻击(attack)敌人一次,体力(SP)减少10,经验(exp)增加5。敌人的生命值(HP)减去攻击方攻击力值(damage)的大小。敌人生命值(HP)减少到0时死去,如果敌人被自己打死,获得敌人身上的所有药瓶;6)经验(exp)每增加20,等级(level)就提高1级,maxHP、maxSP、damage分别增加20;Soldier,Wizard,Master升级后,当前HP,SP,MP和NP的值皆按比2例(xx:MaxXX)增长,注意:不是升级后上述当前属性值就自动全满。例如:Wizard的HP/MaxHP50/100,升级后,HP/MaxHP调整为60/120。升级前HP:MaxHP比例为0.5,升级后MaxHP变成120,若要保持0.5的比例,HP自动调整为60。这种设定类似于魔兽争霸III。7)休息(rest)一次,生命值(HP)、体力(SP)增加最大值的50%,但不要超过最大值。(例如,当前生命值是30,最大生命值是100,则吃药后的当前生命值为30+100*50%=80。)8)吃药(takingDrug),如果药瓶数量为0,不能吃药。吃药一次,药瓶数量减少1,生命值(HP)增加最大值的80%,但不能超过maxHP。2.Wizard巫师类,从Soldier类公有继承1)Wizard的属性(protected作用域)新增的属性:最大魔法值maxMP当前魔法值MP2)Wizard的动作(public作用域)决策makeDecision攻击attack休息rest吃药takingDrug魔法攻击wizard_attack3)Wizard被创建后,maxMP和MP为100,maxHP和HP为100,maxSP和SP为100,maxMP和MP为100,damage为20,exp为0,level为1;4)每回合Wizard通过决策(makeDecision)来决定需要发出哪一个动作(攻击attack、魔法攻击wizard_attack、休息rest或吃药takingDrug,注意每回合只能做一个动作);5)魔法攻击(wizard_attack):如果魔法值小于25、或体力小于10无法使用该技能。3一次魔法攻击能同时攻击几个敌人,但每对付一个敌人,自己的体力(SP)减少10、魔法值减少25、经验(exp)增加5、敌人的生命值(HP)减去自己攻击力值(damage)。敌人生命值(HP)减少到0时死去,同时自己获得敌人身上的所有药瓶;6)经验(exp)每增加20,等级(level)提高1级,maxHP、maxSP、maxMP、damage分别增加20;(如果觉得升级太快了,或者升级增加的HP和damage不太协调,可以调整这些参数)7)休息(rest)一次,生命值(HP)、体力(SP)恢复效果同Soldier的休息(rest)动作。魔法值增加最大魔法值的30%,但不要超过最大魔法值,例如:_mp=_mp+_maxMp*30%。8)吃药(takingDrug)一次,效果等同于Soldier吃药。9)攻击(attack),攻击效果同Soldier。3.Master巫师类,从Wizard类公有继承1)Master的属性(protected作用域)新增的属性:最大内力maxNp当前内力NP2)Master的动作(public作用域)决策makeDecision攻击attack休息rest吃药takingDrug魔法攻击wizard_attack绝杀攻击master_attack3)Master被创建后,maxMP和MP为100,maxHP和HP为100,maxSP和SP为100,maxNP和NP为100,damage为30,exp为0,level为1;44)每回合Wizard通过决策(makeDecision)来决定需要发出哪一个动作(攻击attack、魔法攻击wizard_attack、绝杀攻击master_attack、休息rest或吃药takingDrug,注意每回合只能做一个动作);5)大师攻击(master_attack),如果内力(NP)大于50时,可以使用大师(master_attack)攻击。一次大师攻击能让被攻击的敌人的生命值(HP)减少其最大生命值的(maxHP)50%(可能有点太强了,破坏平衡性!容易导致游戏在短短几个回合就结束,可以考虑适当减小。),例如敌人HP为100,maxHP为160,被大师攻击后,生命值变为HP-maxHP*50%=100-160*50%=20。一次大师攻击会内力(NP)损耗50、体力(SP)损耗30,经验增加5。6)魔法攻击(wizard_attack),攻击效果等同于Wizard的攻击(attack)动作7)攻击(attack),攻击效果等同于Soldier的攻击(attack)动作。8)使用大师攻击后,经验(exp)每增加20,等级(level)就提高1级,maxHP、maxSP、maxMP、maxNP分别增加20,damage增加20;9)休息(rest)一次,内力增加最大内力的30%,但不要超过最大内力值。其余如HP、SP、MP的恢复等同于Wizard的休息(rest)动作。10)吃药(takingDrug)一次,效果等同于Soldier的吃药(takingDrug)动作。4.WarSystem战斗系统类1)WarSystem类的属性军团ASoldier**_pGroupA;军团BSoldier**_pGroupB;2)WarSystem类的动作5战斗开始startWar回合开始startRound3)每次战斗,双方派出一个军团,军团由数名战士、巫师和大师组成。战斗按回合制进行,即每回合中,一方军团的每个成员做完各自的一次动作(由makeDecision决定)后,另一方军团每个成员接着完成自己的一次动作。战斗开始,由哪个军团先发起攻击,系统随机决定。回合的生成和结束由WarSystem类控制;4)WarSystem类拥有两个数据成员(指向指针变量的指针,即二级指针):Soldier**_pGroupA;Soldier**_pGroupB;分别对应战斗的双方军团。(提示,军团可以由Soldier*数组的形式生成,在WarSystem的pGroupA和pGroupB分别指向两个军团,注意OOP的多态实现。)5)WarSystem类可以发出战斗开始即startWar()动作。在startWar()中,随机决定由哪一方率先发起攻击(恐怕是每个回合都随机决定谁先出手会比较公平,如果每回合先出手都是固定一方,那么战斗结果完全是确定性的。而且由于两支队伍的成员一样,交换先出手权后的结果也是对称的。),然后调用WarSystem的另一动作:回合开始,即startRound()。6)startRound()动作的描述:在startRound()中,按军团顺序调用每个战士的makeDecision()动作(也可以考虑两个军团轮流一次一人行动,比较公平)。5.将整个战斗过程的每一步保存入日志文件。6.项目说明1)自由组队,人数为2-5人,不能单人组队,也不得超过5人。2)开发小组全部人员皆要求参与设计和开发,每位组员有明确的分工(组内自行协6调);每位组员除了熟悉自己的任务模块外,需熟悉整个系统的设计和开发;3)影响项目评分的因素:i.最终系统对需求的实现程度;ii.项目组内部分工的合理度(包括每人工作量的平衡程度),协作的程度;iii.每位组员最后的考评皆会影响项目组其他成员的最后评分;4)项目组角色及职责说明:项目经理1名(组长)(兼客户沟通人员)建议推选凝聚力较强人员担任控制项目进度。定期(建议每2-3天)召集所有人员开会沟通开发进度。特别当项目进度滞后时,需要提出解决方案减少进度偏移。定期向客户(老师)报告整体开发进度,模块开发进度,及每个成员的实施情况。(建议每2-3天用email形式报告)技术经理1名建议推选技术较强人员担任负责项目整体框架设计,子系统(模块)划分。在项目组其他成员遇到技术难题时,有责任提供技术咨询。程序员N名全体人员(包括项目经理和技术经理)程序开发5)部分项目需求并未完整给出。如:Soldier等类的makeDecision决策机制如何设计?在不同场景下该如何做出最佳决策?己方应该分开攻击对方不同的战士,还是应该合力攻击对方最强的战士或者最弱的战士(可参考自己或他人的回合制游戏经7验)?应该在哪一个类中增加方法,来获取对方军团的战士信息以便己方做出正确决策?如果战斗在开始后几个回合内就分出胜负,请适量调整各种攻击动作、吃药、休息的数据修改值。(这里设定的生命值相对于伤害值来说有点小了,可适当参考星际魔兽等RTS游戏的参数平衡系统)在现实中,项目组经常面临开发的项目需求不完整的情况,需要通过多次迭代,反复需求分析和与客户(本项目中的客户即是老师和本组其他同学)沟通逐步解决问题。关于项目组对此类问题的处理能力,也是本次考查的内容之一。6)最后,再次强调,团队合作是本次项目考察重点。每人最终总评分为项目组得分与个人得分的加权和,其中项目组得分的加权因子远大于个人得分加权因子,因此将团队项目变成个人表演的项目组,无论个人得分高低,只能得到很低的总评分数。【特别提醒】最低要求:利用C++面向对象程序设计方法,实现两支队伍(各包含至少一名战士、法师和大师)的自动回合制对战。交付时限:第17周周五之前交付材料:源代码、可执行程序、PPT分数价值:在期末平时成绩考核中占40%

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功