2010 年高级语言程序设计 II
设计和实现回合制战斗系统 Combat
1. Soldier 战士类
1) Soldier 的属性(protected 作用域)
最大生命 maxHP 当前生命 HP 最大体力 maxSP 当前体力 SP
攻击力 damage 经验 exp 等级 level 姓名 name
药瓶数量 drugNum
2) Soldier 的动作(public 作用域)
决策 makeDecision 攻击 attack 休息 rest 吃药 takingDrug
3) 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 ; Soldier, Wizard, Master 升 级 后 , 当 前 HP,SP,MP 和 NP 的 值 皆 按 比 例
(xx:MaxXX)增长,注意:不是升级后上述当前属性值就自动全满。例如:
Wizard 的 HP/MaxHP 50/100 , 升 级 后 , HP/MaxHP 调 整 为 60/120 。 升 级 前
HP:MaxHP 比例为 0.5,升级后 MaxHP 变成 120,若要保持 0.5 的比例,HP 自动调
整为 60。
7) 休息(rest)一次,生命值(HP)、体力( SP)增加最大值的 50%,但不要超过
最大值。(例如,当前生命值是 30,最大生命值是 100,则吃药后的当前生命值为
30+100*50%=80。)
8) 吃药(takingDrug),如果药瓶数量为 0,不能吃药。吃药一次,药瓶数量减少
1,生命值(HP)增加最大值的 80%,但不能超过 maxHP。
1