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