曾令思 余婷 席一
摘 要 隨著計算機時代的到來,游戲受到人們越來越多的青睞。以單機游戲為背景,探討了射擊類游戲的諸多設(shè)計要點,包括體系結(jié)構(gòu),系統(tǒng)安全等。本游戲是一款休閑益智的射擊游戲。在JAVA的基礎(chǔ)上,極大的優(yōu)化了代碼,減少了代碼冗余,而且易于查看游戲的運行界面。
關(guān)鍵詞 射擊游戲 代碼實現(xiàn) JAVA游戲系統(tǒng)
中圖分類號:TP311.52 文獻標識碼:A
1系統(tǒng)架構(gòu)
系統(tǒng)構(gòu)架主要有兩方面組成,一個是開始界面,另一個是主函數(shù)。開始界面主要功能是實現(xiàn)跳轉(zhuǎn),在開始界面中也應當具有背景,音樂等。在主函數(shù)中,主要調(diào)用我方子彈,桃心,我方滅火器,敵方蜜蜂,背景類,音樂類等功能模塊。
(1)在用戶點擊開始界面的“PLAY”按鈕后,可自動跳轉(zhuǎn)到主游戲界面。這是通過ActionListener實現(xiàn)監(jiān)聽鍵盤動作的。在GameButton中主要是通過如下方式監(jiān)聽鍵盤點擊的:
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand( ).equals("btn")){
close_MainWindows( );
new GameButtonStart( ).showGame( );
return;
(2)實現(xiàn)方在窗體顯示方法中添加關(guān)閉監(jiān)聽:
this.addWindowListener(new closeWindow()); this.setVisible(true);
再在窗體顯示方法外建立關(guān)閉窗口方法:
public void close_MainWindows( ) {
this.setVisible(false);}
(3)在游戲中可調(diào)用音樂類,實現(xiàn)播放音樂的功能。其主要實現(xiàn)方法是在類外部定義一個Music類,新建一個有音樂的music文件夾,再在主類中調(diào)用Music類。
2游戲設(shè)計中需要解決的主要問題分析
(1)背景圖層的循環(huán)顯示和閃爍。由于背景圖層只有一張圖片,若想讓游戲有移動的真實感,則應當讓圖片一直不停的移動。以圖片為參照物,就會感覺蜜蜂,滅火器的移動更加逼真。另外,圖片初始時會 出現(xiàn)閃爍問題,這時應當調(diào)用update()方法消除閃爍。
(2)蜜蜂和滅火器的碰撞。這時,可在我方滅火器的子彈類中,和蜜蜂類中獲取蜜蜂的矩形:
//獲取蜜蜂的矩形
public Rectangle getRectangle(){
return new Rectangle(planeBulletX, planeBulletY, planeBulletWidth, planeBulletHeight);}
3關(guān)鍵技術(shù)
(1)背景的實現(xiàn):滾動背景主要通過move()來實現(xiàn)。在主程序調(diào)用BackGround類中的draMe(Graphics)時,就會自動的調(diào)用move()函數(shù),實現(xiàn)屏幕的滾動播放。
(2)內(nèi)存的優(yōu):很多程序由于沒有采用正確的方法分配和使用內(nèi)存,不僅占用內(nèi)存較多,而且運行效率不高。
4游戲的實現(xiàn)
本游戲的開發(fā)是在Microsoft Windows 2007操作系統(tǒng)下,使用JAVA語言開發(fā)的。
(1)開始界面的實現(xiàn):用戶進入游戲系統(tǒng)后,首先出現(xiàn)的是開始界。在開始界面中,用戶點擊“PLAY”按鈕,在偵聽到點擊了“PLAY”按鈕后,跳轉(zhuǎn)到游戲進行界面。
(2)滾動屏幕的實現(xiàn):在游戲界面中,會出現(xiàn)背景圖片。BackGround的實例化bg的初始化是在GameStart中,并且把GameStart的當前值傳給bg對象,以便于在程序退出時,能夠用主類調(diào)用它的退出方法closeWindow。在BackGround類中,設(shè)置一個bgwidth 和一個bgHeight分別設(shè)置背景圖片的寬和高。再設(shè)置一個bgY1 和一個bgY2 用來控制圖片的移動。在BackGround中,寫一個movie()方法,隨著時間的改變而改變。這時,就會出現(xiàn)滾動的屏幕。
(3)主程序的實現(xiàn):當玩家按下W,A,S,D分別對應的上,左,下,右時,函數(shù)Plane類中的move()方法的變量y,x加5或減5。相對應的,滅火器的位置會向上,左,下,右飛行一定距離。當鍵盤松開時,滅火器會停止不動。在moie()方法中,會調(diào)用方法location()。
public void location() {
if (bU && !bD && !bL && !bR) {
planeDir = Direction.U;
}
if (!bU && bD && !bL && !bR) {
planeDir = Direction.D;
}
if (!bU && !bD && bL && !bR) {
planeDir = Direction.L;
}
if (!bU && !bD && !bL && bR) {
planeDir = Direction.R;
}
if (!bU && !bD && !bL && !bR) {
planeDir = Direction.STOP;
參考文獻
[1] Bruce Eckel,陳昊鵬.Java編程思想[M].北京:機械工業(yè)出版社,2002.
[2] Adam Drozdex,數(shù)據(jù)結(jié)構(gòu)與算法(Java語言版)[M].北京:機械工業(yè)出版社,2003.
[3] Curtis D.Java,RM I and Corba[M].white paper of Object Management Group,1996.