13.1-全棧Java筆記:打飛機(jī)游戲?qū)崙?zhàn)項目|游戲主窗口|AWT技術(shù)

簡介和項目目標(biāo)

通過游戲項目學(xué)習(xí)整個Java基礎(chǔ)知識體系,我們做了精心的設(shè)計,讓每一章知識都能獲得應(yīng)用。

比如:多線程用來實現(xiàn)動畫效果、容器實現(xiàn)對于多發(fā)炮彈的存取和處理、常用類等等的應(yīng)用。

寓教于樂,讓大家迅速入門,更希望通過喜聞樂見的小游戲,讓大家愛上編程,愛上“程序員”。

老鳥建議

很多朋友會疑惑:“游戲項目,又不能拿到企業(yè)面試中,為什么要講?”這是一種太過于功利的想法。就像,我們說:“今天吃個饅頭,又不是長高,為什么要吃呢?”游戲項目的訓(xùn)練,只是為了鍛煉大家的基本功,并不是直接用來企業(yè)面試的。但是,基本功扎實了,就可以隨心所欲的編程,做企業(yè)項目無非就是多一些技術(shù)點而已,本質(zhì)都是“編程”。

當(dāng)然,大家也不能沉迷于游戲編程,寫一兩個項目足矣,不要把時間花在研究這些內(nèi)容上。更多的仍然是往后面學(xué)習(xí)。所以,任何事情一定要把握“度”!

本章項目為游戲J20飛機(jī)游戲,效果如圖1所示:

圖1 游戲效果圖

我們通過鍵盤控制飛機(jī)前后移動,躲避炮彈,看誰堅持的時間長!如果碰到炮彈,則發(fā)生爆炸,游戲結(jié)束!并顯示本次生存的時間和等級排名。如果有網(wǎng)絡(luò),則會自動讀取服務(wù)器內(nèi)容獲取網(wǎng)絡(luò)排名。

游戲項目基本功能開發(fā)

開發(fā)項目,需要基于IDE(集成開發(fā)環(huán)境),本節(jié)示例全部使用eclipse來做。希望大家在開始本項目開發(fā)前,熟悉eclipse的基本使用。若不熟悉,請?zhí)降谝徽碌摹癳clipse基本使用”相關(guān)內(nèi)容重新學(xué)習(xí)。

AWT技術(shù)畫出游戲主窗口(0.1版)

1)基本功能實現(xiàn)

AWT和Swing是Java中常見的GUI(圖形用戶界面)技術(shù)。本節(jié)中,僅限于畫出最基本的窗口和圖形加載,所以,大家無需在此花大量時間學(xué)習(xí)這兩門技術(shù)。我們會在第十四章詳細(xì)講解此部分內(nèi)容。

本項目中,我們使用的是AWT技術(shù),它是Java中最老的GUI技術(shù),非常簡單。

建立Java項目,并建立類MyGameFrame。項目結(jié)構(gòu)如圖2所示:

圖2 MyGame0.1項目結(jié)構(gòu)圖

【示例1】MyGameFrame類:畫游戲窗口

packagecn.sxt.game;

importjava.awt.Frame;

importjava.awt.event.WindowAdapter;

importjava.awt.event.WindowEvent;

publicclassMyGameFrameextendsFrame {

publicvoidlaunchFrame(){

//在游戲窗口打印標(biāo)題

setTitle("尚學(xué)堂學(xué)員_程序猿作品");

//窗口默認(rèn)不可見,設(shè)為可見

setVisible(true);

//窗口大?。簩挾?00,高度500

setSize(500, ? 500);

//窗口左上角頂點的坐標(biāo)位置

setLocation(300, ? 300);

//增加關(guān)閉窗口監(jiān)聽,這樣用戶點擊右上角關(guān)閉圖標(biāo),可以關(guān)閉游戲程序

addWindowListener(newWindowAdapter() {

@Override

publicvoidwindowClosing(WindowEvent e) {

System.exit(0);

}

});

}

publicstaticvoidmain(String[ ] args) {

MyGameFrame f ? =newMyGameFrame();

f.launchFrame();

}

}

示例3 運行效果圖

2)要點講解

a.繼承Frame類,畫出窗口

Frame是java.awt中的主要類,我們畫的窗口都需要繼承Frame。這樣,F(xiàn)rame的基本功能我們就可以直接使用了。

b.窗口坐標(biāo)問題,了解坐標(biāo)系

setLocation(300, 300);代碼的含義是定位窗口的位置。窗口的位置就是指“窗口左上角頂點的位置”。 如圖4所示。

4游戲界面窗口的位置圖

這里Y軸的方向是向下的,和我們初中數(shù)學(xué)學(xué)的方向不一樣。這就是計算機(jī)里面的坐標(biāo)系。

1. 物體就是矩形,物體的位置就是所在矩形左上角頂點的坐標(biāo)

游戲或開發(fā)中,所有物體的都是矩形。即使你看到一個圓在那里,我們處理的本質(zhì)上是圓的外切矩形。即使你看到一個美女,我們處理的是美女所占用的矩形空間。 不然,給你一個不規(guī)則的圖形,你沒法做很多運算。

游戲開發(fā)中的物體,位置通常指的就是:該物體的矩形的左上角頂點位置。

5飛機(jī)矩形區(qū)域圖

上圖中的“飛機(jī)”,實際我們在編程時處理的是飛機(jī)所在的“矩形區(qū)域”。

2. 窗口關(guān)閉問題

Frame類默認(rèn)沒有處理關(guān)閉窗口功能,我們需要自己添加關(guān)閉功能。System.exit(0)表示應(yīng)用正常結(jié)束。addWindowListener()表示增加窗口監(jiān)聽事件。

addWindowListener(newWindowAdapter() {

@Override

publicvoidwindowClosing(WindowEvente) {

System.exit(0);

}

});

此處,如果想深入鉆研,可以研究一下AWT的事件機(jī)制,在此不做贅述。



「全棧Java筆記」是一部能幫大家從零到一成長為全棧Java工程師系列筆記。筆者江湖人稱 Mr. G,10年Java研發(fā)經(jīng)驗,曾在神州數(shù)碼、航天院某所研發(fā)中心從事軟件設(shè)計及研發(fā)工作,從小白逐漸做到工程師、高級工程師、架構(gòu)師。精通Java平臺軟件開發(fā),精通JAVAEE,熟悉各種流行開發(fā)框架。

筆記包含從淺入深的六大部分:

A-Java入門階段

B-數(shù)據(jù)庫從入門到精通

C-手刃移動前端和Web前端

D-J2EE從了解到實戰(zhàn)

E-Java高級框架精解

F-Linux和Hadoop

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容