向鎳鋅 郭均 趙為
摘要:如今快節(jié)奏與高強(qiáng)度的生活、工作環(huán)境使得游戲成為人們放松身心的不錯(cuò)選擇,而智能設(shè)備的不斷升級(jí),使聯(lián)網(wǎng)的電腦游戲、手機(jī)游戲受到人們更多的青睞。文中設(shè)計(jì)開(kāi)發(fā)了一款基于Java的僵尸危機(jī)游戲,該游戲以2D為視角,采用J2SE技術(shù)、克隆方式,使用雙緩存技術(shù)對(duì)游戲進(jìn)行渲染。實(shí)現(xiàn)了游戲的模式選擇、背景音樂(lè)、人物血條顯示、寶箱開(kāi)啟、攻擊、爆炸效果、血跡渲染、結(jié)果顯示等多項(xiàng)功能,使用戶有更好的游戲體驗(yàn)。該游戲的設(shè)計(jì)不僅有助于提高開(kāi)發(fā)能力,更為此類(lèi)游戲開(kāi)發(fā)提供了思路,推動(dòng)網(wǎng)絡(luò)游戲的發(fā)展。
關(guān)鍵詞:僵尸危機(jī);游戲開(kāi)發(fā);Java
中圖分類(lèi)號(hào):TP311? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? 文章編號(hào):1007-9416(2020)10-0000-00
0 引言
隨著智能移動(dòng)終端以及互聯(lián)網(wǎng)設(shè)備的不斷優(yōu)化升級(jí),游戲成為了大眾生活中必不可少的一項(xiàng)娛樂(lè)放松方式,特別是近年來(lái)發(fā)展勢(shì)頭良好[1-2]。Java語(yǔ)言作為目前使用最為廣泛的網(wǎng)絡(luò)編程語(yǔ)言之一,具有語(yǔ)法簡(jiǎn)單、面向?qū)ο?、穩(wěn)定、與平臺(tái)無(wú)關(guān)、多線程、動(dòng)態(tài)等特點(diǎn)[3],開(kāi)發(fā)人員可以使用少量的代碼設(shè)計(jì)具有界面效果的游戲[4]。本文基于Java語(yǔ)言設(shè)計(jì)開(kāi)發(fā)了一款僵尸危機(jī)游戲,對(duì)游戲的功能進(jìn)行設(shè)計(jì)分析,實(shí)現(xiàn)了怪物的刷新隨機(jī)性、游戲進(jìn)程單向性、游戲內(nèi)容豐富性。
1 總體功能設(shè)計(jì)
僵尸危機(jī)游戲需要實(shí)現(xiàn)以下功能:
(1)游戲模式選擇:當(dāng)玩家打開(kāi)游戲執(zhí)行文件后,進(jìn)入批處理打開(kāi)cmd控制臺(tái)并進(jìn)入游戲的模式選擇界面,玩家可選擇單人或雙人模式。
(2)怪物刷新:玩家進(jìn)入游戲后,普通喪尸和幽靈不斷刷新。
(3)寶箱系統(tǒng):游戲中分為補(bǔ)給箱、獎(jiǎng)勵(lì)箱、boss箱。補(bǔ)給箱在游戲開(kāi)始后不停刷新,獎(jiǎng)勵(lì)箱和boss箱為殺怪獎(jiǎng)勵(lì)。
(4)特殊技能:玩家在游戲中具有近戰(zhàn)攻擊、遠(yuǎn)程攻擊、人造墻體、扔炸彈等技能。
(5)游戲難度升級(jí):當(dāng)玩家殺怪?jǐn)?shù)量到一定程度時(shí),進(jìn)入不同的“血月時(shí)刻”,此時(shí)背景、地形、怪物刷新等都會(huì)改變。
(6)游戲結(jié)束:當(dāng)玩家被啃食擊殺后,游戲結(jié)束。此時(shí)進(jìn)入結(jié)束界面,界面中顯示殺怪個(gè)數(shù),并切換背景音樂(lè)。
2 載入流程與組件
2.1 游戲載入流程
如圖1為游戲載入流程。從Main入口進(jìn)入游戲程序后分為Start、GameClient、World三個(gè)階段。在Start中,實(shí)現(xiàn)游戲開(kāi)始界面的背景音樂(lè)載入、單雙人模式選擇。進(jìn)入GameClient客戶端后,陸續(xù)完成對(duì)游戲世界初始化、開(kāi)辟繪圖空間輔助雙緩存渲染、開(kāi)啟繪制線程、添加各種監(jiān)聽(tīng)器等過(guò)程。World中包含角色之間的碰撞檢測(cè)[5]、喪尸幽靈刷新、地形模式改變、炸彈位置搜尋、游戲組件排序等重要環(huán)節(jié)。
2.2 游戲組件關(guān)系
游戲組件之間都有著復(fù)雜而不同的繼承關(guān)系。本游戲中設(shè)計(jì)了一個(gè)GameObject的游戲超類(lèi),它作為組件的父類(lèi),定義所有組件需要的屬性,如:名字、半徑、速度、x坐標(biāo)、y坐標(biāo)、x改變、y改變、方向、HP、碰撞判斷、狀態(tài)等。之后GameObject被Blood、Wall、Weapon、Role、BandDo、Border、Box繼承。Blood為當(dāng)生命體被攻擊后在場(chǎng)景留下的血跡。Wall、Weapon、Role分別為:僵尸危機(jī)游戲中的墻體、僵尸危機(jī)游戲中武器系統(tǒng)的超類(lèi)、僵尸危機(jī)游戲中角色系統(tǒng)的超類(lèi)。BangShow為神圣炸彈爆炸的效果渲染。Border、Box分別為僵尸危機(jī)游戲邊界、僵尸危機(jī)游戲?qū)毾湎到y(tǒng)的超類(lèi)。詳細(xì)的組件關(guān)系如圖2所示。
3 功能實(shí)現(xiàn)
3.1 攻擊與裝備系統(tǒng)
游戲中英雄具備近戰(zhàn)攻擊與遠(yuǎn)程攻擊功能。近戰(zhàn)攻擊時(shí)英雄可轉(zhuǎn)身、上下左右揮動(dòng)武器,遠(yuǎn)程攻擊時(shí)英雄可發(fā)出橙色火球?qū)治镞M(jìn)行攻擊,遠(yuǎn)戰(zhàn)攻擊演示如圖3所示,其關(guān)鍵代碼如下:
public boolean collisionDetection(Gameobject object){
return ((!object. equals(this. host)) && ?。╫bject? 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)包括對(duì)雙緩存、動(dòng)畫(huà)[6]、血跡、背景音樂(lè)的渲染。本文只對(duì)血跡渲染和音樂(lè)渲染做詳細(xì)介紹。
血跡渲染效果共有4種,如圖4所示。其關(guān)鍵代碼如下:
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;
}
音樂(lè)渲染效果共載入6首不同的音樂(lè),分別在游戲模式選擇、進(jìn)入游戲、血月時(shí)刻1、血月時(shí)刻2、血月時(shí)刻3以及游戲結(jié)束界面中體現(xiàn)。其關(guā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 結(jié)語(yǔ)
本文基于Java語(yǔ)言開(kāi)發(fā)了一款僵尸危機(jī)游戲,并實(shí)現(xiàn)了游戲模式選擇、背景音樂(lè)、怪物刷新、補(bǔ)給箱刷新、雙緩存渲染、血跡渲染、主角搜尋、爆炸、攻擊等系列功能,是一款具有良好體驗(yàn)的游戲。通過(guò)設(shè)計(jì)該游戲,不僅能夠豐富目前的游戲市場(chǎng),也為游戲開(kāi)發(fā)擴(kuò)寬設(shè)計(jì)思路。
參考文獻(xiàn)
[1]許益凡,薛益鴿.基于JAVA平臺(tái)的魔塔游戲設(shè)計(jì)[J].智能計(jì)算機(jī)與應(yīng)用,2018,8(3):235-239+243.
[2]張會(huì).基于Java的指法練習(xí)小游戲的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2017,13(32):85-86+96.
[3]耿祥義,張躍平.Java 2 實(shí)用教程.北京:清華大學(xué)出版社,2007.
[4]茍雨晴,蘭全祥.基于Java的拼圖游戲設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2019,15(2):45-47.
[5]王嘉,李孔清.碰撞檢測(cè)算法研究綜述[J].電腦知識(shí)與技術(shù),2017,13(20):202-205.
[6]李清亮,程佳茵,時(shí)瑋淞,等.計(jì)算機(jī)圖形圖像處理技術(shù)研究[J].黑龍江科學(xué),2018,9(20):82-83.
收稿日期:2020-08-12
基金項(xiàng)目:四川省2020大學(xué)生創(chuàng)新訓(xùn)練項(xiàng)目(S202010628027)
作者簡(jiǎn)介:向鎳鋅(1993—),女,重慶人,工學(xué)碩士,助教,研究方向:傳感器技術(shù)、計(jì)算機(jī)技術(shù)。
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