您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > 设计和实现回合制战斗系统Combat
设计和实现回合制战斗系统Combat1.Soldier战士类1)Soldier的属性(protected作用域)最大生命maxHP当前生命HP最大体力maxSP当前体力SP攻击力damage经验exp等级level姓名name药瓶数量drugNum2)Soldier的动作(protected作用域)决策makeDecision攻击attack休息rest吃药takingDrug3)Soldier被创建后,maxHP和HP为100,maxSP和SP为100,maxMP和MP为100,damage为20,exp为0,level为1,drugNum为5;4)每回合Soldier通过决策(makeDecision)来决定需要发出哪一个动作(攻击attack、休息rest或吃药takingDrug,注意每回合只能做其中一个动作)。请自行设计和调整每种动作发出的必要条件,例如:生命值若低于最大值的50%该回合就吃药,体力低于最大值的30%该回合就休息,生命力和体力都充足该回合就发起攻击,等等;5)攻击(attack)敌人一次,体力(SP)减少10,经验(exp)增加5。敌人的生命值(HP)减去攻击方攻击力值(damage)的大小。敌人生命值(HP)减少到0时死去,如果敌人被自己打死,获得敌人身上的所有药瓶;6)经验(exp)每增加20,等级(level)就提高1级,maxHP、maxSP、damage分别增加20;7)休息(rest)一次,生命值(HP)、体力(SP)增加最大值的50%,但不要超过最大值。(例如,当前生命值是30,最大生命值是100,则吃药后的当前生命值为30+100*50%=80。)8)吃药(takingDrug),如果药瓶数量为0,不能吃药。吃药一次,药瓶数量减少1,生命值(SP)增加最大值的50%,但不能超过maxSP。2.Wizard巫师类,从Soldier类公有继承1)Wizard的属性(protected作用域)新增的属性:最大魔法值maxMp当前魔法值HP2)Wizard的动作(protected作用域)决策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无法使用该技能。一次魔法攻击能同时攻击几个敌人,但每对付一个敌人,自己的体力(SP)减少10、魔法值减少25、经验(exp)增加5、敌人的生命值(HP)减去自己攻击力值(damage)。敌人生命值(HP)减少到0时死去,同时自己获得敌人身上的所有药瓶;6)经验(exp)每增加20,等级(level)提高1级,maxHP、maxSP、maxMP、damage分别增加20;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的动作(protected作用域)决策makeDecision攻击attack休息rest吃药takingDrug魔法攻击wizard_attack绝杀攻击master_attack3)Master被创建后,maxMP和MP为100,maxHP和HP为100,maxSP和SP为100,maxMP和MP为100,damage为30,exp为0,level为1;4)每回合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类的动作战斗开始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()动作。规则调整:每回合攻击顺序:回合开始后,战斗系统随机选择一方(比如军团A)率先发起攻击。A军团派出第一个成员进行攻击,然后由B军团派出第一个成员攻击,接着A军团派出第二个成员进行攻击,B军团接着派出第二个成员攻击...以此类推,只到双方所有成员都完成本轮攻击后,该回合结束。规则解释:群攻技能的经验值增加规则:5点经验值指每攻击一个对手后获取的经验值。比如一次性攻击(群攻)3个对手后,该攻击者获得的经验值为15。更正:战士,巫师,大巫师三个类为继承关系,但无升级关系。战士升级不能变成巫师,只能增加其属性值。巫师升级也不能变成大巫师,只能增加其属性值。
本文标题:设计和实现回合制战斗系统Combat
链接地址:https://www.777doc.com/doc-7203257 .html