欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JAVA實(shí)現(xiàn)的CrazyArcade泡泡堂游戲

 更新時(shí)間:2021年04月25日 15:39:55   作者:JiangJian1998  
CrazyArcade泡泡堂游戲,一款用Java編寫的JavaSwing游戲程序。 使用了MVC模式,分離了模型、視圖和控制器,使得項(xiàng)目結(jié)構(gòu)清晰易于擴(kuò)展,使用配置文件來設(shè)置游戲基本配置,擴(kuò)展地圖人物道具等。同時(shí),該程序編寫期間用了單例模式、工廠模式、模板模式等設(shè)計(jì)模式。

項(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)行

  1. 使用git克隆或直接下載該項(xiàng)目
  2. 使用Eclipse等導(dǎo)入該Java項(xiàng)目
  3. 由于編譯使用的Java版本可能不一致,如果提示錯(cuò)誤請根據(jù)您電腦的環(huán)境修改項(xiàng)目配置
  4. 編譯并運(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)文章!

相關(guān)文章

  • Springboot工具類ReflectionUtils使用教程

    Springboot工具類ReflectionUtils使用教程

    這篇文章主要介紹了Springboot內(nèi)置的工具類之ReflectionUtils的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-12-12
  • Spring?Security安全框架之記住我功能

    Spring?Security安全框架之記住我功能

    這篇文章主要介紹了Spring?Security安全框架之記住我,本次就來探究如何實(shí)現(xiàn)這種自動登錄、記住我的功能,通過實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • Java實(shí)現(xiàn)銀行賬戶管理子系統(tǒng)

    Java實(shí)現(xiàn)銀行賬戶管理子系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)銀行賬戶管理子系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Java for-each循環(huán)使用難題2例(高級使用方法)

    Java 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()方法就能遍歷collection
    2014-04-04
  • Java實(shí)現(xiàn)的進(jìn)制轉(zhuǎn)換工具類完整示例

    Java實(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
  • 聊一聊concurrenthashmap的size方法原理

    聊一聊concurrenthashmap的size方法原理

    這篇文章主要介紹了concurrenthashmap的size方法原理,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 解決ApplicationContext獲取不到Bean的問題

    解決ApplicationContext獲取不到Bean的問題

    這篇文章主要介紹了解決ApplicationContext獲取不到Bean的問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • SWT(JFace)體驗(yàn)之復(fù)制粘貼

    SWT(JFace)體驗(yàn)之復(fù)制粘貼

    SWT(JFace)體驗(yàn)之復(fù)制粘貼
    2009-06-06
  • Java輸入輸出語句舉例詳解(通俗易懂!)

    Java輸入輸出語句舉例詳解(通俗易懂!)

    這篇文章主要給大家介紹了關(guān)于Java輸入輸出語句的相關(guān)資料,作為一種常用的編程語言,Java提供了多種輸入輸出的方式,用于與用戶進(jìn)行數(shù)據(jù)交互或處理文件數(shù)據(jù),需要的朋友可以參考下
    2023-10-10
  • 微信開發(fā)之使用java獲取簽名signature

    微信開發(fā)之使用java獲取簽名signature

    這篇文章主要為大家詳細(xì)介紹了微信開發(fā)之使用java獲取簽名signature,感興趣的小伙伴們可以參考一下
    2016-08-08

最新評論