Object C实现三国英雄对战
- 实验要求
- 游戏介绍
- 英雄机制
- 对战机制
- 英雄介绍
- 蜀国英雄
- 吴国英雄
- 魏国英雄
- 群雄
- 代码实现
- 数据隐秘性
- 封装
- 继承
- 多态
- 实验结果
- 游戏源码`
实验要求
- 输出随机选择的英雄及其关键属性,输出单挑中每回合的过程、结果,以及最终胜负结果
- 输出程序设计和运行过程中,相关设计体现的oo特性(数据隐秘性、封装性、继承、多态)
游戏介绍
英雄机制
每个英雄有生命值、能量值、攻击力、防御力和两个技能。
- 普通攻击的伤害为 攻击力-防御力,当被攻击方的防御力大于攻击方的攻击力时,伤害为0
- 两个技能中一个为次要技能,一个为主要技能;次要技能在能量不够时也有机率发动,但此时不会产生效果,而是会增加能量值;主动技能必须能量值足够时才能发动;技能的伤害机制与普通攻击不同,不同的技能伤害机制不同
- 普通攻击有几率被闪避,但技能不能被闪避
- 能量值在使用技能时被消耗,在英雄攻击、被攻击、使用技能、被技能攻击以及闪避时都会增加能量
对战机制
对战开始时会随机选择地点(辽东、巴蜀、江陵)和天气(晴空万里、大雨磅礴),如果英雄在自己国家内战斗那么他就占据地理优势,防御力会提升,相反防御力会降低;晴空万里会增加英雄攻击力,而大雨磅礴会降低对面英雄的攻击力;如果一个英雄在本国内,那么他防御力提升,对面英雄防御力不会下降,另一个英雄不在自己国家内,那么天气将会对他有利(晴空万里:自身攻击力提升 大雨磅礴:对面攻击力降低);如果两个英雄都不在自己国家内,那么防御力都会下降,根据天气两个英雄的攻击力同时上升或者下降。(注意:当两个英雄都不在自己的国家内时,如果有群雄类别的英雄,那么群雄英雄将视为在自己的国家内)
英雄对战采用回合制,每个回合英雄只能选择一种行为(普通攻击或者技能),如果十回合内有一方英雄生命值降为零一下,那么另一方英雄获胜;如果超过十回合双方都没有死亡,那么生命值多的一方获胜,生命值一样则为平局。
英雄介绍
蜀国英雄
张飞
生命值:15
能量值:3
能量上限:10
攻击力:5
防御力:5
次要技能:怒虎狂啸,提高自身的攻击力,能量消耗 4
主要技能:蛇影狂击,伤害技能,能量消耗 8
诸葛亮
生命值:14
能量值:5
能量上限:12
攻击力:4
防御力:7
次要技能:太极八阵,化解敌方下一次普通攻击,能量消耗 4
主要技能:谋策之刻,伤害技能,能量消耗 8
关羽
生命值:16
能量值:2
能量上限:12
攻击力:5
防御力:5
次要技能:罗刹之武,降低敌方的防御力,能量消耗 5
主要技能:春秋八法,伤害技能,能量消耗 8
吴国英雄
孙权
生命值:17
能量值:5
能量上限:12
攻击力:5
防御力:4
次要技能:帝气东临,降低敌方的攻击力和防御力,能量消耗 5
主要技能:业火净祭,伤害技能,能量消耗 8
黄盖
生命值:14
能量值:4
能量上限:12
攻击力:6
防御力:4
次要技能:地神魔铠,提高自身防御力,能量消耗 8
主要技能:荆棘之形,反弹敌方下回合的普通攻击,能量消耗 5
大乔
生命值:14
能量值:4
能量上限:12
攻击力:6
防御力:5
次要技能:幻舞迷魂,敌人下回合将无法攻击,能量消耗 6
主要技能:落雷天陨,伤害技能,能量消耗 7
魏国英雄
蔡文姬
生命值:15
能量值:2
能量上限:12
攻击力:6
防御力:5
次要技能:思无邪,回复自身部分生命值,能量消耗 3
主要技能:胡笳十八拍,伤害技能,能量消耗 8
夏侯惇
生命值:16
能量值:4
能量上限:12
攻击力:3
防御力:8
次要技能:噬血魔瞳,提高自身攻击力降低自身防御力,能量消耗 3
主要技能:不羁之刃,伤害技能,能量消耗 8
司马懿
生命值:15
能量值:4
能量上限:15
攻击力:5
防御力:5
次要技能:荒芜鬼域,将敌方部分生命值转化为能量值,能量消耗 8
主要技能:魑魅幻纱,伤害技能,能量消耗 5
群雄
吕布
生命值:10
能量值:0
能量上限:15
攻击力:5
防御力:5
次要技能:魔神降临,提高自身攻击力和防御力,能量消耗 8
主要技能:无双鬼雄,伤害技能,能量消耗 2
代码实现
一个Hero父类,其余英雄为Hero的子类
数据隐秘性
每个英雄的内部成员变量对于其他英雄是隐秘的,不可见的,体现了数据隐秘性
封装
外部方法可以通过get和set方法来获取和修改每个英雄内部的成员变量,体现了封装
继承
PKOneUnit方法在Hero父类中实现,每个英雄不用重写,直接继承该方法,体现了继承
多态
init方法、skill1方法和skill2方法在父类声明,但是没有具体实现,而是在每个英雄子类中实现,不同英雄的这三个方法不同,体现了多态
实验结果