李少芳
莆田學(xué)院 機(jī)電與信息工程學(xué)院,福建 莆田 351100
當(dāng)前由于游戲本身的屬性發(fā)生改變以及智能手機(jī)、平板電腦等移動設(shè)備的功能越來越強(qiáng)大,游戲產(chǎn)業(yè)得到飛速發(fā)展,已成為我國重點(diǎn)扶持項(xiàng)目。由于Java 技術(shù)的不斷發(fā)展,Java 軟件的升級越來越方便,部署更簡單,Java 程序的運(yùn)行速度有了顯著提升,從而使得Java 處理比較復(fù)雜的3D 圖形成為可能。Java3D 等技術(shù)的出現(xiàn),使Java 語言可以方便地利用顯卡日益強(qiáng)大的硬件加速能力。許多廠商都在家用游戲機(jī)上支持Java,增加對swing 硬件的加速支持。而隨著智能手機(jī)的發(fā)展,有的手機(jī)性能已接近或超過電腦的水準(zhǔn),手機(jī)游戲的市場份額也越來越大。由于手機(jī)的操作系統(tǒng)種類繁多,跨平臺的Java 一直備受青睞[1-3]。
從市場商業(yè)角度長遠(yuǎn)效益考慮,在開發(fā)Java 游戲時,一要多考慮社交因素在游戲中的重要性,用社交帳號登錄邀請好友等,許多玩家都喜歡和好友一起玩游戲。二是對于活躍用戶或鐵桿游戲玩家,要考慮存儲歷史游戲信息,并考慮更佳的游戲體驗(yàn),吸引了更多游戲用戶。三是加入適當(dāng)?shù)挠绞剑缦螺d付費(fèi)、游戲內(nèi)廣告和游戲內(nèi)付費(fèi)等。四要多嘗試開發(fā)跨平臺游戲,因?yàn)橛械耐婕溢姁叟_式電腦,有的鐘愛平板電腦、手機(jī),不同平臺有自己的用戶群,而每一個新平臺的出現(xiàn)都將為游戲的制作帶來新的可能性。
消除類游戲閑暇時動動手指就可以玩,耐玩、解壓,操作簡單,老少皆宜。目前網(wǎng)上好玩的消除類游戲五花八門,種類繁多,有俄羅斯方塊、開心消消樂、連連看、泡泡龍、呆萌小怪物、珠寶島、尋寶者、糖果傳奇、歡樂碰碰貓、瘋狂糖果爆炸、繽紛碰碰球、圣誕節(jié)消除、神奇廚師等。例如,尋寶者是一款寶藏消除益智游戲,使用寶石來打造海島城市,通過海洋旅游和解決神圣的難題,搭配珠寶的三色球,獲到巨大的寶藏。糖糖消除是一款趣味休閑消除玩法游戲,滑動手指讓三個同色甜點(diǎn)連接在一起即可消除,通過消除多個甜點(diǎn)獲得強(qiáng)力甜點(diǎn),每個強(qiáng)力甜點(diǎn)都有獨(dú)特的爆破效果。圣誕節(jié)消除是一款三消匹配比賽游戲,充滿了許多新的挑戰(zhàn)。點(diǎn)燃蠟燭,清除積雪尋找禮物,抓住跳雪人,填充禮品袋。把圣誕老人放到煙囪里,點(diǎn)燃鞭炮,填滿大襪子,看看冰箱里有什么。可見,每一款游戲都有眾多精心設(shè)計的關(guān)卡和任務(wù)[4-6],一旦開始,讓人愛不釋手。
本文設(shè)計的鍵盤指法練習(xí)軟件,是一款休閑學(xué)習(xí)的消除類游戲,使用Java 的Swing 框架編程,采用Eclipse 集成開發(fā)環(huán)境進(jìn)行設(shè)計。第一關(guān)功能是根據(jù)出現(xiàn)的大小寫字母和數(shù)字,在鍵盤上按鍵可以消除對應(yīng)的字母或數(shù)字,在限定時間內(nèi),盡可能地輸入正確的字母或數(shù)字,每輸對一個得10 分,挑戰(zhàn)高分。后面關(guān)卡可以增加難度,消除單詞。
首先定義背景圖片bg,初始化bg,設(shè)置其存儲路徑為d:\temp\jpg\bg2.jpg。并在 public void paint(Graphics g)中設(shè)置背景圖片隨主窗體的大小自適應(yīng)顯示。在public void run()方法中,使用repaint()刷新界面時,需重新加載圖片,出現(xiàn)閃爍現(xiàn)象,解決辦法之一是定義Graphics 對象g,改成使用Graphics g=getGraphics()和paint(g)。代碼如下:
主窗體框架設(shè)計界面,如圖1 所示。隨機(jī)生成若干個大寫字母A-Z、小寫字母a-z 和數(shù)字字符0-9,并調(diào)用getRandomColor()方法設(shè)置為隨機(jī)色顯示。初始成績設(shè)置為0。添加鍵盤響應(yīng)事件,檢測到一個正確的按鍵,則對應(yīng)的字母或數(shù)字消除,相應(yīng)增加成績10 分。
設(shè)置為隨機(jī)色的相關(guān)代碼如下:
隨機(jī)生成acount 個大寫字母A-Z、小寫字母a-z 和數(shù)字字符0-9,第i 個字符c[i]的顯示位置(x[i],y[i])也是隨機(jī)的。這里調(diào)用生成隨機(jī)數(shù),也可以創(chuàng)建隨機(jī)類對象來產(chǎn)生隨機(jī)數(shù)[7]。相關(guān)代碼如下:
主窗體界面成績以及各字符隨機(jī)色顯示的代碼如下:
當(dāng)前一組acount 個字符被消除或下落超出窗體邊界,重新產(chǎn)生另一組acount 個字符。
鍵盤按下的響應(yīng)事件代碼如下:
定義一個KeyListenerθ1 類,繼承JFrame 類,在其構(gòu)造方法中添加代碼如下:
當(dāng)創(chuàng)建線程t,并通過t.start()啟動線程后,自動會調(diào)用run()方法運(yùn)行產(chǎn)生字符消除動畫效果。
多彩字符消消樂游戲軟件是一款簡單休閑的消除類游戲,也適合于鍵盤指法練習(xí)。第1 關(guān)卡的設(shè)計僅僅是通過鍵盤操作消除大小寫字母或數(shù)字,每輸對一個字符得10 分。也可以對沒有被消除就下落的字符,設(shè)計減分操作??梢栽O(shè)置不同難度關(guān)卡,比如第2 關(guān)可以通過增加消除單詞的操作來增加游戲過關(guān)難度。進(jìn)一步的改進(jìn)可以是用圖片代替字符,比如隨機(jī)出現(xiàn)的魚或飛機(jī),而改用左右箭頭控制按鍵位置,以射擊方式標(biāo)示出火力;還可以添加字母消除或下落的游戲音效和背景音樂設(shè)置等。本文用到的編程技術(shù)可以運(yùn)用到更多游戲開發(fā)中,并加以改進(jìn)推廣,也可以應(yīng)用到嵌入式開發(fā)或基于Android 平臺的移動應(yīng)用開發(fā)中,期望開發(fā)出更多更強(qiáng)的軟件來。