郑聪尉 151220169@smail.nju.edu.cn
- IntelliJ IDEA 2017.2;
- Java8;
- Maven 3.5.2;
Huluwa 17f-Final 版本是自动化的葫芦娃大战程序,支持存档读档并可回放精彩过程;
可用Maven打包后运行Huluwa.jar,按空格键即可立即开始多线程战斗,详见末尾的规则说明
- /document: 存档与读档文件夹
- /javadoc: javadoc文件夹
- /src: 工程文件夹
- /target: 构建目标文件夹
- Main类: 程序的入口;
- iofile包: 文件操作;
- object包: 二维对象以及各类角色定义;
- storyboard包: 运行逻辑与界面;
absctract class的设计,将可供子类重写的设计为抽象方法,开放扩展;其它方法不可改变,关闭修改;
所有的Creatures都能被Huluwa, Yeye, Snake, Scorpion或者DemonTroop替换;
IOFile类仅实现文件读写;Creature仅实现角色属性与方法;
- Object类表示二维对象,可派生出Creature抽象类,也可直接用来定义背景、图标等;
- Creature抽象类表示各色角色,派生出士兵和平民两项抽象类,由其生命特特征,需实现Runnable接口来进行线程编程;
- Creature抽象类有前后遮挡关系,需实现Comparable接口来进行空间排序;
- Soldier抽象类有进攻属性和方法,故需要添加进攻起始时间戳和终止时间戳来控制进攻时长;
Battle类中的roles和death的使用集合类型Vector<>,泛型的元素类型为Creature;
Battle类中的roles和death使用泛型Vector<>,其元素类型Creature可替换为其具体子类Huluwa, Yeye等,体现了多态;
private void initRole(){
roles = new Vector();
for(Huluwa h: huluwa) {
roles.add(h);
}
roles.add(yeye);
roles.add(snake);
roles.add(scorpion);
for(DemonTroop d: demonTroop){
roles.add(d);
}
}
文档使用@author和@see注解,其方法使用@param和@return注解,用来编写javadoc,详情请见javadoc文件夹;
IOFile类实现:FileReader与BufferedReader用来读取文件,FileWriter与BufferedWriter用来写入文件;
每个将角色类中都存有Battle类用来与同一个逻辑控制后台交互,故需添加synchronized和volatile关键字;
角色类以葫芦娃为代表进行测试即可。
- testPosition()用来测试位置信息,被测试的方法有: x(), y();
- testLive()用来测试生命属性,被测试的方法有: isLive();
- testRole()用来测试正义或邪恶,被测试的方法有: isRightRole();
- testImage()用来测试图片属性,被测试的方法有: getImage();
- testAttack()用来测试攻击属性,被测试的方法有: isAttacking();
- 设计前期经老师提醒,对抽象封装有了更深的体会;
- 中期根据教学进度,陆续添加功能,缝缝补补;
- 后期在实现界面与复盘功能的时候,在原来码得自由自在的情况下,遇到不小的冲击,需要对框架进行比较大幅度改变;
- Battle类用来控制战斗逻辑与界面显示,没能做好MVC设计模式,这种模式在移动互联应用课上深有体会,所以寒假会进一步优化;
- 阵型操作没有单独成一类,需要改进,同样可以考虑采用delegate模式;
考虑到趣味性,规则有一定修改;
- 时光倒流,穿山甲又双叒叕钻破了葫芦山,蛇精蝎子精从中逃了出来,变造小喽啰,占据山洞自得其乐,后话不提;
- 另一边七个葫芦娃都成功破壳,个个法力高强,七娃尤其瞩目;
- 在如意的指引下,妖精企图趁葫芦娃们不在抓住爷爷,而爷爷毫无反击能力;
- 好在二娃有火眼金睛,七兄弟及时赶回葫芦山,一场恶斗不可避免;
- 战斗伊始,双方拉开架势,小喽啰方阵排开,蝎子精蛇精身居其中,七兄弟则鹤翼以待;
- 双方接近并产生碰撞的瞬间, 在非攻击状态下,判站在原地者死;
- 葫芦娃和蝎子精能持续攻击一段时间,发光即为攻击态,判非攻击态者死,若都为攻击态则僵持;
- 葫芦娃HP值初始为2,每次损伤则减1,若死则葫芦藤上对应会重新结上葫芦果,经过七秒钟孕育后复活;
- 蛇精和蝎子精HP值初始为10,只有在被七娃的葫芦收服才判定为死,否则只是被暂时击退,会从山底下继续攻上来;
- 当蛇精和蝎子精都未被收服,则小喽啰将被持续不断地造出来;
战斗伊始,双方拉开架势,小喽啰方阵排开,蝎子精蛇精身居其中,七兄弟则鹤翼以待;
来势汹汹!蝎子精带着小喽啰一起冲了过来,但葫芦娃们毫不示弱,不灵不灵和蝎子精进行战斗;
葫芦娃们为保护爷爷死伤惨重。不过已经干掉了蝎子精(灰色头像),而七秒钟过后葫芦藤上的葫芦将再次变身Soldiers;
葫芦娃们只攻击离他们最近的敌人,一心恋战却未能保护好爷爷唉;
那谁,别忘了这是谁的地盘;
- 读取document中的文档即可回放查看精彩对局;