JAVA實(shí)現(xiàn)的CrazyArcade泡泡堂游戲
項(xiàng)目地址
https://github.com/SCNU-A225/CrazyArcade
示例圖片
項(xiàng)目結(jié)構(gòu)
- frame:包含如開始、游戲中、結(jié)束的JFrame
- main:包含程序入口和其它游戲控制
- model:
- model.loader:包含資源加載器用于讀取配置文件等信息,使用了單例設(shè)計(jì)模式
- model.manager:包含元素管理器、工廠等,用于控制游戲各元素
- model.vo:各種實(shí)體類,包括玩家、NPC、炸彈、方塊等等
- pro:配置文件目錄,包含人物、道具、地圖、方塊、游戲設(shè)置等配置文件
- thread:配合游戲一起執(zhí)行的各種線程,如音樂、鍵盤監(jiān)聽、游戲控制等
- utiil:工具包
機(jī)器人
為了盡量復(fù)原泡泡堂游戲,我們初步實(shí)現(xiàn)了機(jī)器人功能。該機(jī)器人可以判斷障礙物釋放炸彈、規(guī)避炸彈、攻擊玩家。目前該機(jī)器人仍存在一些小問題,比如某些情況會卡住不動
平滑碰撞
人物在拐角處移動的時(shí)候經(jīng)常不是剛好對齊的狀態(tài),程序會判定玩家碰撞了障礙物所以導(dǎo)致玩家無法拐彎。所以我們在處理這種情況的時(shí)候,會讓玩家進(jìn)行平滑的移動使得玩家看上去是滑進(jìn)去的,增強(qiáng)玩家游戲體驗(yàn)
其它特性
- 音樂
- 使用配置文件擴(kuò)展游戲
- 道具
- 單/雙人模式
使用
打包文件
如果您僅是想試玩該泡泡堂游戲,那么可以選擇以下方式獲得打包文件夾,并執(zhí)行其中的CrazyArcade.jar文件
注意:無論您使用哪種方式,在運(yùn)行程序之前請確保您安裝了JRE環(huán)境
- 下載最新版文件,并解壓縮
- 克隆或下載該項(xiàng)目,打開RELEASE->DIST文件夾
項(xiàng)目文件
如果您是想獲取該項(xiàng)目源代碼進(jìn)行參考、學(xué)習(xí)或者修改,可以按以下步驟進(jìn)行
- 使用git克隆或直接下載該項(xiàng)目
- 使用Eclipse等導(dǎo)入該Java項(xiàng)目
- 由于編譯使用的Java版本可能不一致,如果提示錯(cuò)誤請根據(jù)您電腦的環(huán)境修改項(xiàng)目配置
- 編譯并運(yùn)行GameStart.java游戲入口文件
聲明
該項(xiàng)目是練習(xí)項(xiàng)目,沒有參與任何商業(yè)行為。
主要代碼
游戲啟動入口
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); //強(qiáng)制刷新,否則監(jiān)聽無效 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; } }
代碼過多,不便全部放出,獲取完整項(xiàng)目,前往https://github.com/SCNU-A225/CrazyArcade
以上就是JAVA實(shí)現(xiàn)的CrazyArcade泡泡堂游戲的詳細(xì)內(nèi)容,更多關(guān)于Java CrazyArcade泡泡堂游戲的資料請關(guān)注腳本之家其它相關(guān)文章!
- 教你怎么用Java開發(fā)掃雷游戲
- 用Java實(shí)現(xiàn)24點(diǎn)游戲
- Java Swing實(shí)現(xiàn)坦克大戰(zhàn)游戲
- Java實(shí)戰(zhàn)之飛翔的小鳥小游戲
- Java實(shí)現(xiàn)五子棋游戲
- java實(shí)戰(zhàn)之飛機(jī)大戰(zhàn)小游戲(源碼加注釋)
- Java實(shí)戰(zhàn)入門之雙色球彩票小游戲
- java實(shí)戰(zhàn)之猜字小游戲
- 基于Java實(shí)現(xiàn)簡單貪吃蛇游戲
- 利用java開發(fā)簡易版掃雷游戲
- Java實(shí)現(xiàn)簡易撲克牌游戲的完整實(shí)例
- java簡易小游戲制作代碼
- 我用java實(shí)現(xiàn)了王者榮耀的皮膚和英雄技能
相關(guān)文章
Springboot工具類ReflectionUtils使用教程
這篇文章主要介紹了Springboot內(nèi)置的工具類之ReflectionUtils的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-12-12Java實(shí)現(xiàn)銀行賬戶管理子系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)銀行賬戶管理子系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05Java for-each循環(huán)使用難題2例(高級使用方法)
從Java5起,在Java中有了for-each循環(huán),可以用來循環(huán)遍歷collection和array。For each循環(huán)允許你在無需保持傳統(tǒng)for循環(huán)中的索引,或在使用iterator /ListIterator時(shí)無需調(diào)用while循環(huán)中的hasNext()方法就能遍歷collection2014-04-04Java實(shí)現(xiàn)的進(jìn)制轉(zhuǎn)換工具類完整示例
這篇文章主要介紹了Java實(shí)現(xiàn)的進(jìn)制轉(zhuǎn)換工具類,結(jié)合完整實(shí)例形式分析了Java實(shí)現(xiàn)二進(jìn)制、十六進(jìn)制、字符串、數(shù)組等相關(guān)轉(zhuǎn)換操作技巧,需要的朋友可以參考下2018-07-07解決ApplicationContext獲取不到Bean的問題
這篇文章主要介紹了解決ApplicationContext獲取不到Bean的問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06