Java 模拟游戏开发
一、设计思路
游戏界面介绍
首先,我对每个角色的攻击和生命值都进行了描述,方便用户进行角色 的选择。其次,在完成老师布置要求的同时,我增加了技能这一个选项,每个角色都有相对应的技能可以选择。此外,对还可以点击“技能简介”按钮 对每个角色进行更加深入的了解。效果如图: 当用户点击其中任何一个角色的图片时,便可以进入相对应的游戏界面, 此时玩家的对手将由电脑随机生成。效果如图:
游戏功能介绍
- 玩家可以根据自己的兴趣或者英雄相生相克的属性选择自己的英雄, 如果不清楚英雄的的克制情况或者自己的技能的话,可以点击“技能简介”按钮 获取帮助。点击之后将会出现弹框介绍英雄的技能和属性。
- 进入游戏界面后,电脑将自动生成敌人。这里我根据英雄相克的属 性做了相对应的调整。如射手克制法师,所以对法师的伤害最高、而被战士克制, 所以对战士的伤害最低、与自己同职业的英雄伤害中等。这里你可以选择三个行 动按钮,每一步多会使英雄产生相对应的行动。(这里防守不能完全免除伤害, 只能免除部分伤害)
- 为了游戏界面的逼真效果,我将血条的消失设置消失时间,玩家在 享受娱乐游戏的同时也可以感受游戏带来的视觉震撼效果(这里说的略显夸张)。 此外界面底部有敌方英雄行动的介绍。方便洞察敌方英雄的行动。
- 此外,我将 Actor 类新定义了一个 crit_rate 来表示每个英雄的暴击 率,每个英雄初始化暴击率为 6%,战士使用技能后暴击率将提升到 30%。
算法实现思路
- 首先,我用了 java 中 swing 库中的一些界面插件完善整个游戏界面。 由于游戏中关于英雄的介绍比较多,所以我用了大量的 JLabel 类和 JButton 类 来搭建整个游戏的界面(一切目的都是为了方便用户)
- 在战斗过程中,我用了两个 progressbar 分别代表我方血量和敌方 血量。下面的 label 函数实时更新,方便我方了解战况。
- 在整个代码的过程中,难度最大的无疑是血量地慢慢减少。这里我 实现了一个 Runable 的接口,重载定义了 run 函数,新建一个 Thread 线程。实时更新血量。
- Actor 类的创立和老师的思路基本上无异,定义一个接口实现防御, 攻击和释放技能等操作。将 Actor 类 implement 这个接口。此外我定义了一个类, 里面成员全部为静态成员变量,用来存储英雄的不同的攻击值、血量值。方便将 来进行修改。
二、关键代码流程图
三、测试案例设计
因为全是可视化的界面,没有输入的字符,所以我将程序运行的结果录了一 段视频分享在百度网盘下:
链接: 链接 密码: 9c4o