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ī)器人仍存在一些小問題,比如某些情況會(huì)卡住不動(dòng)
平滑碰撞
人物在拐角處移動(dòng)的時(shí)候經(jīng)常不是剛好對齊的狀態(tài),程序會(huì)判定玩家碰撞了障礙物所以導(dǎo)致玩家無法拐彎。所以我們在處理這種情況的時(shí)候,會(huì)讓玩家進(jìn)行平滑的移動(dòng)使得玩家看上去是滑進(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è)行為。
主要代碼
游戲啟動(dòng)入口
package com.a225.main;
import java.io.IOException;
import com.a225.frame.GameFrame;
import com.a225.model.loader.ElementLoader;
import com.a225.thread.GameMusicPlayer;
/**
* 游戲啟動(dòng)入口
* @ClassName: GameStart
* @Description:
* @author: WeiXiao
* @CreateDate: 2019年4月8日 下午4:17:37
*/
public class GameStart {
private static GameFrame gameFrame;
//游戲啟動(dòng)入口
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)文章
使用Spring的StopWatch實(shí)現(xiàn)代碼性能監(jiān)控的方法詳解
在開發(fā)過程中,偶爾還是需要分析代碼的執(zhí)行時(shí)間,Spring 框架提供了一個(gè)方便的工具類 StopWatch,本文將介紹 StopWatch 的基本用法,并通過示例演示如何在項(xiàng)目中使用 StopWatch 進(jìn)行代碼性能監(jiān)控2023-12-12
Java ArrayList的底層實(shí)現(xiàn)方法
今天小編就為大家分享一篇Java ArrayList的底層實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
MyBatis-plus實(shí)現(xiàn)逆向生成器
本文主要介紹了MyBatis-plus實(shí)現(xiàn)逆向生成器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
SpringBoot項(xiàng)目中application.yml和bootstrap.yml文件的區(qū)別及說明
`application.yml`和`bootstrap.yml`都是Spring Boot項(xiàng)目中的配置文件,但它們在加載時(shí)機(jī)、用途、優(yōu)先級(jí)、配置來源、適用場景和是否必須存在等方面存在區(qū)別2025-03-03
SpringBoot全局異常處理之多個(gè)處理器匹配順序(最新推薦)
這篇文章主要介紹了SpringBoot全局異常處理之多個(gè)處理器匹配順序(最新推薦),調(diào)試源碼可見匹配順序?yàn)椋寒惓蛹?jí)高者優(yōu)先,再清楚點(diǎn),子類異常處理器優(yōu)先,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2024-03-03
簡單了解java中靜態(tài)初始化塊的執(zhí)行順序
這篇文章主要介紹了簡單了解java中靜態(tài)初始化塊的執(zhí)行順序,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
詳解Spring Cloud Gateway 數(shù)據(jù)庫存儲(chǔ)路由信息的擴(kuò)展方案
這篇文章主要介紹了詳解Spring Cloud Gateway 數(shù)據(jù)庫存儲(chǔ)路由信息的擴(kuò)展方案,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11

