向鎳鋅 郭均 趙為
摘要:如今快節(jié)奏與高強度的生活、工作環(huán)境使得游戲成為人們放松身心的不錯選擇,而智能設備的不斷升級,使聯(lián)網(wǎng)的電腦游戲、手機游戲受到人們更多的青睞。文中設計開發(fā)了一款基于Java的僵尸危機游戲,該游戲以2D為視角,采用J2SE技術、克隆方式,使用雙緩存技術對游戲進行渲染。實現(xiàn)了游戲的模式選擇、背景音樂、人物血條顯示、寶箱開啟、攻擊、爆炸效果、血跡渲染、結果顯示等多項功能,使用戶有更好的游戲體驗。該游戲的設計不僅有助于提高開發(fā)能力,更為此類游戲開發(fā)提供了思路,推動網(wǎng)絡游戲的發(fā)展。
關鍵詞:僵尸危機;游戲開發(fā);Java
中圖分類號:TP311? ? 文獻標識碼:A? ? 文章編號:1007-9416(2020)10-0000-00
0 引言
隨著智能移動終端以及互聯(lián)網(wǎng)設備的不斷優(yōu)化升級,游戲成為了大眾生活中必不可少的一項娛樂放松方式,特別是近年來發(fā)展勢頭良好[1-2]。Java語言作為目前使用最為廣泛的網(wǎng)絡編程語言之一,具有語法簡單、面向?qū)ο?、穩(wěn)定、與平臺無關、多線程、動態(tài)等特點[3],開發(fā)人員可以使用少量的代碼設計具有界面效果的游戲[4]。本文基于Java語言設計開發(fā)了一款僵尸危機游戲,對游戲的功能進行設計分析,實現(xiàn)了怪物的刷新隨機性、游戲進程單向性、游戲內(nèi)容豐富性。
1 總體功能設計
僵尸危機游戲需要實現(xiàn)以下功能:
(1)游戲模式選擇:當玩家打開游戲執(zhí)行文件后,進入批處理打開cmd控制臺并進入游戲的模式選擇界面,玩家可選擇單人或雙人模式。
(2)怪物刷新:玩家進入游戲后,普通喪尸和幽靈不斷刷新。
(3)寶箱系統(tǒng):游戲中分為補給箱、獎勵箱、boss箱。補給箱在游戲開始后不停刷新,獎勵箱和boss箱為殺怪獎勵。
(4)特殊技能:玩家在游戲中具有近戰(zhàn)攻擊、遠程攻擊、人造墻體、扔炸彈等技能。
(5)游戲難度升級:當玩家殺怪數(shù)量到一定程度時,進入不同的“血月時刻”,此時背景、地形、怪物刷新等都會改變。
(6)游戲結束:當玩家被啃食擊殺后,游戲結束。此時進入結束界面,界面中顯示殺怪個數(shù),并切換背景音樂。
2 載入流程與組件
2.1 游戲載入流程
如圖1為游戲載入流程。從Main入口進入游戲程序后分為Start、GameClient、World三個階段。在Start中,實現(xiàn)游戲開始界面的背景音樂載入、單雙人模式選擇。進入GameClient客戶端后,陸續(xù)完成對游戲世界初始化、開辟繪圖空間輔助雙緩存渲染、開啟繪制線程、添加各種監(jiān)聽器等過程。World中包含角色之間的碰撞檢測[5]、喪尸幽靈刷新、地形模式改變、炸彈位置搜尋、游戲組件排序等重要環(huán)節(jié)。
2.2 游戲組件關系
游戲組件之間都有著復雜而不同的繼承關系。本游戲中設計了一個GameObject的游戲超類,它作為組件的父類,定義所有組件需要的屬性,如:名字、半徑、速度、x坐標、y坐標、x改變、y改變、方向、HP、碰撞判斷、狀態(tài)等。之后GameObject被Blood、Wall、Weapon、Role、BandDo、Border、Box繼承。Blood為當生命體被攻擊后在場景留下的血跡。Wall、Weapon、Role分別為:僵尸危機游戲中的墻體、僵尸危機游戲中武器系統(tǒng)的超類、僵尸危機游戲中角色系統(tǒng)的超類。BangShow為神圣炸彈爆炸的效果渲染。Border、Box分別為僵尸危機游戲邊界、僵尸危機游戲?qū)毾湎到y(tǒng)的超類。詳細的組件關系如圖2所示。
3 功能實現(xiàn)
3.1 攻擊與裝備系統(tǒng)
游戲中英雄具備近戰(zhàn)攻擊與遠程攻擊功能。近戰(zhàn)攻擊時英雄可轉身、上下左右揮動武器,遠程攻擊時英雄可發(fā)出橙色火球?qū)治镞M行攻擊,遠戰(zhàn)攻擊演示如圖3所示,其關鍵代碼如下:
public boolean collisionDetection(Gameobject object){
return ((!object. equals(this. host)) && !(object? instanceof Weapon) && super. collisionDetection(object));
}
public void setstate(){
initFireball(this.host.getDir()==Direction.STOP?host.getOldDir() : host.getDir());
super.setState();
}
public void setUltimatestate(){
if(getNum()<8)return;
for(Direction dir:Direction.values()){
if(dir= =Direction.STOP)continue;
initFireball(dir);
}
super.setState();
3.2 渲染系統(tǒng)
游戲的渲染系統(tǒng)包括對雙緩存、動畫[6]、血跡、背景音樂的渲染。本文只對血跡渲染和音樂渲染做詳細介紹。
血跡渲染效果共有4種,如圖4所示。其關鍵代碼如下:
public Blood(int x, int y, World world)
{
super("Blood", 0, 0, 99999, x, y, false, world);
Random rand = new Random();
int picX = Math.abs(rand.nextInt()) % 2;
int picY = Math.abs(rand.nextInt()) % 2;
this.picX = picX * 475;
this.picY = picY * 475;
}
音樂渲染效果共載入6首不同的音樂,分別在游戲模式選擇、進入游戲、血月時刻1、血月時刻2、血月時刻3以及游戲結束界面中體現(xiàn)。其關鍵代碼如下:
public class GameSound extends Thread {
private String mp3url;
private boolean isloop;
public GameSound(String mp3url, boolean isloop) {
this.mp3url = mp3url;
this.isloop = isloop;
}
public void run() {
try {
do {
InputStream mp3 = GameSound.class.getClassLoader().getResourceAsStream("music/" + mp3url);
AdvancedPlayer advancedPlayer = new AdvancedPlayer(mp3);
advancedPlayer.play();
} while (isloop);
} catch (Exception e) {
e.printStackTrace();
}
}
}
4 結語
本文基于Java語言開發(fā)了一款僵尸危機游戲,并實現(xiàn)了游戲模式選擇、背景音樂、怪物刷新、補給箱刷新、雙緩存渲染、血跡渲染、主角搜尋、爆炸、攻擊等系列功能,是一款具有良好體驗的游戲。通過設計該游戲,不僅能夠豐富目前的游戲市場,也為游戲開發(fā)擴寬設計思路。
參考文獻
[1]許益凡,薛益鴿.基于JAVA平臺的魔塔游戲設計[J].智能計算機與應用,2018,8(3):235-239+243.
[2]張會.基于Java的指法練習小游戲的設計與實現(xiàn)[J].電腦知識與技術,2017,13(32):85-86+96.
[3]耿祥義,張躍平.Java 2 實用教程.北京:清華大學出版社,2007.
[4]茍雨晴,蘭全祥.基于Java的拼圖游戲設計與實現(xiàn)[J].電腦知識與技術,2019,15(2):45-47.
[5]王嘉,李孔清.碰撞檢測算法研究綜述[J].電腦知識與技術,2017,13(20):202-205.
[6]李清亮,程佳茵,時瑋淞,等.計算機圖形圖像處理技術研究[J].黑龍江科學,2018,9(20):82-83.
收稿日期:2020-08-12
基金項目:四川省2020大學生創(chuàng)新訓練項目(S202010628027)
作者簡介:向鎳鋅(1993—),女,重慶人,工學碩士,助教,研究方向:傳感器技術、計算機技術。
Design and Implementation of Zombie Crisis Game Based on Java
XIANG Nie-xin,GUO Jun,ZHAO Wei
(Faculty of Information Technology, Xichang University, Liang Sichuan? 615013)
Abstract: Nowadays fast-paced and high-intensity life and work environment make games a good choice for people to relax and the continuous upgrading of smart devices has made networked computer games and mobile games much more popular. This paper designs and develops a Java-based games Zombie Crisis which takes 2D as the perspective, uses J2SE, clone, and double-buffer technology to render the game. Thus, the game mode selection, background music, character blood bar display, treasure chest opening, attack, explosion effect, blood stain rendering, result display and many other functions are achieved, which make users have a better gaming experience. The design of the game not only helps to improve development capabilities, but also provides ideas for the development online games.
Key words: Zombie Crisis; game design; Java