JAVA实现的CrazyArcade泡泡堂游戏
项目地址
https://github.com/SCNU-A225/CrazyArcade
示例图片
项目结构
- frame:包含如开始、游戏中、结束的JFrame
- main:包含程序入口和其它游戏控制
- model:
- model.loader:包含资源加载器用于读取配置文件等信息,使用了单例设计模式
- model.manager:包含元素管理器、工厂等,用于控制游戏各元素
- model.vo:各种实体类,包括玩家、NPC、炸弹、方块等等
- pro:配置文件目录,包含人物、道具、地图、方块、游戏设置等配置文件
- thread:配合游戏一起执行的各种线程,如音乐、键盘监听、游戏控制等
- utiil:工具包
机器人
为了尽量复原泡泡堂游戏,我们初步实现了机器人功能。该机器人可以判断障碍物释放炸弹、规避炸弹、攻击玩家。目前该机器人仍存在一些小问题,比如某些情况会卡住不动
平滑碰撞
人物在拐角处移动的时候经常不是刚好对齐的状态,程序会判定玩家碰撞了障碍物所以导致玩家无法拐弯。所以我们在处理这种情况的时候,会让玩家进行平滑的移动使得玩家看上去是滑进去的,增强玩家游戏体验
其它特性
- 音乐
- 使用配置文件扩展游戏
- 道具
- 单/双人模式
使用
打包文件
如果您仅是想试玩该泡泡堂游戏,那么可以选择以下方式获得打包文件夹,并执行其中的CrazyArcade.jar文件
注意:无论您使用哪种方式,在运行程序之前请确保您安装了JRE环境
- 下载最新版文件,并解压缩
- 克隆或下载该项目,打开RELEASE->DIST文件夹
项目文件
如果您是想获取该项目源代码进行参考、学习或者修改,可以按以下步骤进行
- 使用git克隆或直接下载该项目
- 使用Eclipse等导入该Java项目
- 由于编译使用的Java版本可能不一致,如果提示错误请根据您电脑的环境修改项目配置
- 编译并运行GameStart.java游戏入口文件
声明
该项目是练习项目,没有参与任何商业行为。
主要代码
游戏启动入口
package com.a225.main; import java.io.IOException; import com.a225.frame.GameFrame; import com.a225.model.loader.ElementLoader; import com.a225.thread.GameMusicPlayer; /** * 游戏启动入口 * @ClassName: GameStart * @Description: * @author: WeiXiao * @CreateDate: 2019年4月8日 下午4:17:37 */ public class GameStart { private static GameFrame gameFrame; //游戏启动入口 public static void main(String[] args) { // 资源加载 try { ElementLoader.getElementLoader().readGamePro(); ElementLoader.getElementLoader().readImagePro(); ElementLoader.getElementLoader().readCharactorsPro(); ElementLoader.getElementLoader().readBubblePro(); ElementLoader.getElementLoader().readSquarePro(); } catch (IOException e) { System.out.println("资源加载失败"); e.printStackTrace(); } //初始化 gameFrame = new GameFrame(); //界面显示 gameFrame.setVisible(true); //音乐播放 GameMusicPlayer musicPlayer = new GameMusicPlayer(); musicPlayer.start(); } /** * 界面切换 * @param panelName 界面名称 */ public static void changeJPanel(String panelName){ if(panelName == "game") { GameController.setGameRunning(true); gameFrame.addListener(); } else { GameController.setGameRunning(false); gameFrame.removeListener(); } gameFrame.changePanel(panelName); //强制刷新,否则监听无效 gameFrame.setVisible(false); gameFrame.setVisible(true); } public static void startNewGame() { GameController.setGameRunning(true); gameFrame.startGame(); changeJPanel("game"); } }
游戏控制信息类
package com.a225.main; /** * 游戏控制信息类 * @ClassName: GameController * @Description: * @author: WeiXiao * @CreateDate: 2019年4月12日 上午9:13:13 */ public class GameController { private static boolean gameRunning = false; private static boolean twoPlayer; private static int npcNum; public static boolean isGameRunning() { return gameRunning; } public static void setGameRunning(boolean gameRunning) { GameController.gameRunning = gameRunning; } public static boolean isTwoPlayer() { return twoPlayer; } public static void setTwoPlayer(boolean twoPlayer) { GameController.twoPlayer = twoPlayer; } public static int getNpcNum() { return npcNum; } public static void setNpcNum(int npcNum) { GameController.npcNum = npcNum; } }
代码过多,不便全部放出,获取完整项目,前往https://github.com/SCNU-A225/CrazyArcade
以上就是JAVA实现的CrazyArcade泡泡堂游戏的详细内容,更多关于Java CrazyArcade泡泡堂游戏的资料请关注猪先飞其它相关文章!
相关文章
- 这篇文章主要介绍了如何利用java语言实现经典《复杂迷宫》游戏,文中采用了swing技术进行了界面化处理,感兴趣的小伙伴可以动手试一试...2022-02-01
java 运行报错has been compiled by a more recent version of the Java Runtime
java 运行报错has been compiled by a more recent version of the Java Runtime (class file version 54.0)...2021-04-01- 这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
- 这篇文章主要介绍了教你怎么用Java获取国家法定节假日,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-23
- 这篇文章主要介绍了Java如何发起http请求的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-31
- 说起C#和Java这两门语言(语法,数据类型 等),个人以为,大概有90%以上的相似,甚至可以认为几乎一样。但是在工作中,我也发现了一些细微的差别...2020-06-25
- 这篇文章主要介绍了解决Java处理HTTP请求超时的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
- 这篇文章主要介绍了java 判断两个时间段是否重叠的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
java 画pdf用itext调整表格宽度、自定义各个列宽的方法
这篇文章主要介绍了java 画pdf用itext调整表格宽度、自定义各个列宽的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-31- 这篇文章主要介绍了超简洁java实现双色球若干注随机号码生成(实例代码),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-02
- 这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
- 这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
Java使用ScriptEngine动态执行代码(附Java几种动态执行代码比较)
这篇文章主要介绍了Java使用ScriptEngine动态执行代码,并且分享Java几种动态执行代码比较,需要的朋友可以参考下...2021-04-15- 这篇文章主要介绍了Java开发实现人机猜拳游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-08-03
Java 8 Stream 的终极技巧——Collectors 功能与操作方法详解
这篇文章主要介绍了Java 8 Stream Collectors 功能与操作方法,结合实例形式详细分析了Java 8 Stream Collectors 功能、操作方法及相关注意事项,需要的朋友可以参考下...2020-05-20- 这篇文章主要介绍了Java List集合返回值去掉中括号('[ ]')的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-29
Java中lombok的@Builder注解的解析与简单使用详解
这篇文章主要介绍了Java中lombok的@Builder注解的解析与简单使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-06- 下面小编就为大家带来一篇java中String类型变量的赋值问题介绍。小编觉得挺不错的。现在分享给大家,给大家一个参考。...2016-03-28
- 这篇文章主要介绍了Java线程池中的各个参数如何合理设置操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-06-19
- 在Java中,我们可以利用多线程来最大化地压榨CPU多核计算的能力,下面这篇文章主要给大家介绍了关于java中多线程与线程池基本使用的相关资料,需要的朋友可以参考下...2021-09-13