国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Java的飛行棋的設(shè)計(jì)與實(shí)現(xiàn)

2018-01-28 13:06鄭艷
電子技術(shù)與軟件工程 2017年18期
關(guān)鍵詞:界面設(shè)計(jì)

鄭艷

摘要

隨著科技的不斷發(fā)展,越來(lái)越多的人們將玩游戲作為主要的休閑方式。飛行棋作為一款經(jīng)典的小游戲,一直都很受大家的喜歡。該文章用JAVA來(lái)編寫(xiě)一個(gè)簡(jiǎn)單的飛行棋游戲。

【關(guān)鍵詞】飛行棋 JAVA 界面設(shè)計(jì) 游戲地圖

隨著科技的不斷發(fā)展,人們?cè)絹?lái)越喜歡電腦游戲或者手機(jī)游戲。作為經(jīng)典游戲之一的飛行棋一直深受人們的喜歡。

相傳飛行棋是中國(guó)人的發(fā)明的,是中國(guó)玩具公司生產(chǎn)的,據(jù)說(shuō)是為了紀(jì)念二戰(zhàn)時(shí)飛虎隊(duì)的卓越功勛,是pachisi游戲的變種。飛行棋棋盤(pán)上這種轉(zhuǎn)圈式的路程設(shè)計(jì)來(lái)自于空戰(zhàn)中的“拉弗伯雷圓圈”。參加編隊(duì)的飛機(jī)不但保持在一個(gè)水平面上飛行,而且可繞圓圈盤(pán)旋爬高。這樣就可以利用防御隊(duì)形進(jìn)行盤(pán)旋以取得高度優(yōu)勢(shì),伺機(jī)進(jìn)行攻擊。

飛行棋游戲開(kāi)發(fā)是為了方便玩家在電腦上和其他玩家聯(lián)網(wǎng)下棋,這樣更加方便快捷。讓更多的人參與進(jìn)來(lái)。

1飛行棋規(guī)則

棋盤(pán)上有紅黃藍(lán)綠四個(gè)顏色,表示可以有四個(gè)人進(jìn)行游戲。每個(gè)玩家有4架飛機(jī),哪個(gè)玩家的4架飛機(jī)全部飛進(jìn)目的地,誰(shuí)就臝得了這場(chǎng)游戲。

在游戲地圖上一共有四個(gè)狀態(tài):1、正常狀態(tài);2、碰見(jiàn)地雷,后退6格;3、暫停,原地停止一回合;4、營(yíng)運(yùn)輪盤(pán),有6種幸運(yùn)設(shè)置:前進(jìn)、后退、交換位置、轉(zhuǎn)移、暫停一次、獎(jiǎng)勵(lì)一次、設(shè)置地雷、轟炸(將對(duì)方飛機(jī)炸退6格)。

4個(gè)玩家按照事先約定好的順序扔骰子,剛開(kāi)始時(shí),玩家可以連扔三次骰子,只有扔到6點(diǎn),才能啟動(dòng)一架飛機(jī)。之后玩家按順序扔骰子,扔到幾點(diǎn)就順時(shí)針走幾步。在游戲過(guò)程中,只要飛機(jī)的最后落腳點(diǎn)落在了其他玩家的飛機(jī)上,就可以把該玩家的飛機(jī)請(qǐng)回停機(jī)場(chǎng)。在游戲進(jìn)行過(guò)程中,扔得骰子點(diǎn)數(shù)為6的玩家可以繼續(xù)扔骰子,直至骰子點(diǎn)數(shù)不是6或者游戲結(jié)束。飛行棋在地圖上行走時(shí),如果落在了是和自己顏色相同的格子里,可以跳到前一個(gè)和自己顏色相同的格子里。

在游戲過(guò)程中會(huì)出現(xiàn)“迭子”現(xiàn)象,所謂“迭子”現(xiàn)象就是一方玩家的兩架及以上的飛機(jī)飛在了同一個(gè)格內(nèi),這時(shí)幾架飛機(jī)會(huì)重疊式的落在一起。這時(shí)的對(duì)方玩家的飛機(jī)不能從此飛過(guò),如果對(duì)方玩家的飛機(jī)正好落在了此格中,則對(duì)方飛機(jī)和“迭子”飛機(jī)一起請(qǐng)回停機(jī)場(chǎng)。如果所仍的骰子點(diǎn)數(shù)大于到達(dá)“迭子”處所需的步數(shù),則多余步數(shù)從“迭子”處往回走剩下的格數(shù)。如果其他玩家所仍得點(diǎn)數(shù)為6并且他的飛機(jī)與“迭子”處的步數(shù)小于6時(shí),此時(shí)其他玩家的飛機(jī)會(huì)停留在“迭子”處的上方,按照游戲規(guī)則,該玩家可以繼續(xù)扔骰子,然后按照扔得的點(diǎn)數(shù)繼續(xù)往前前進(jìn)。如果棋子在準(zhǔn)備通過(guò)虛線時(shí)有其他棋子停留在虛線和通往終點(diǎn)線路的交叉點(diǎn)時(shí):A、如果對(duì)方是一個(gè)棋子,則將該棋子逐回基地,本方棋子繼續(xù)行進(jìn)到對(duì)岸;B、如果對(duì)方是兩個(gè)棋子重疊則該棋子不能穿越虛線、必須繞行。

2飛行棋設(shè)計(jì)思路

2.1棋盤(pán)設(shè)計(jì)

參照紙質(zhì)版地圖來(lái)進(jìn)行電子版地圖設(shè)計(jì)。游戲界面設(shè)計(jì)盡量和紙質(zhì)版相似,這樣玩家不會(huì)覺(jué)得陌生。停機(jī)場(chǎng):對(duì)應(yīng)顏色的大方格就是停機(jī)場(chǎng),每個(gè)玩家有4架飛機(jī)。終點(diǎn):棋盤(pán)正中間的位置。每個(gè)玩家的4架飛機(jī)都飛入相應(yīng)顏色的終點(diǎn)就贏得了游戲。骰子:正方體,六個(gè)面分別對(duì)應(yīng)一個(gè)點(diǎn)、兩個(gè)點(diǎn)、三個(gè)點(diǎn)、四個(gè)點(diǎn)、五個(gè)點(diǎn)、六個(gè)點(diǎn)。扔骰子面朝上的點(diǎn)數(shù)就是玩家走的步數(shù)。

2.2游戲設(shè)計(jì)

此游戲所使用的軟件開(kāi)發(fā)工具是Eclipse,所用編程語(yǔ)言是JAVA。主要用的是JAVA的基礎(chǔ)圖形用戶界面Swing。通過(guò)Swing可以設(shè)計(jì)游戲界面,導(dǎo)入繪制好的圖片,或者加入文字信息或者聲音信息等等,并且可以結(jié)合JDBC和I/O操作進(jìn)行相關(guān)的數(shù)據(jù)保存。

該游戲設(shè)計(jì)采用模塊化設(shè)計(jì)方式。由實(shí)現(xiàn)功能來(lái)進(jìn)行模塊劃分,把系統(tǒng)的主要功能劃分成幾個(gè)關(guān)鍵模塊,分別加以實(shí)現(xiàn)。由頂層模塊調(diào)用它的各個(gè)子模塊來(lái)實(shí)現(xiàn)整個(gè)功能,而每個(gè)下層模塊再調(diào)用它的子模塊,以此類(lèi)推。

該飛行棋程序要實(shí)現(xiàn)四大功能:飛機(jī)起飛,迭子情況,幸運(yùn)輪盤(pán),重新開(kāi)始,游戲結(jié)束。

游戲玩家主要通過(guò)鼠標(biāo)來(lái)操作,所以設(shè)置了16個(gè)對(duì)象,骰子和16架飛機(jī),由這17個(gè)對(duì)象引發(fā)相關(guān)的操作。

該游戲主要由玩家操作鼠標(biāo)完成,所以要調(diào)用MouseEvent類(lèi)。MouseEvent類(lèi)是公共類(lèi)。這個(gè)類(lèi)里封裝了有關(guān)鼠標(biāo)操作的相關(guān)事件,包括單擊鼠標(biāo)事件、拖動(dòng)鼠標(biāo)事件等等。首先要對(duì)17個(gè)對(duì)象添加事件監(jiān)視器this.addMouseListener(this),一旦受監(jiān)視的對(duì)象有相關(guān)的操作,就會(huì)引發(fā)相關(guān)的事件響應(yīng),發(fā)送MouseEvent類(lèi)的實(shí)例給鼠標(biāo)監(jiān)視器事件用來(lái)幫助處理鼠標(biāo)事件首先判斷是否該玩家飛機(jī)己停止前進(jìn)以及游戲是否是結(jié)束或開(kāi)始狀態(tài)。如果輪到玩家的飛機(jī)要落下,則首先要的到飛機(jī)落下的坐標(biāo)(即鼠標(biāo)單擊的坐標(biāo)),然后將此坐標(biāo)轉(zhuǎn)換成窗口坐標(biāo)并調(diào)用相應(yīng)的方法讓飛機(jī)停在該格子當(dāng)中。

JAVA編寫(xiě)的程序可以在網(wǎng)絡(luò)環(huán)境下運(yùn)行,主要是因?yàn)镴AVA提供了兩種功能強(qiáng)大的網(wǎng)絡(luò)支持機(jī)制來(lái)滿足不同的要求,訪問(wèn)網(wǎng)絡(luò)資源的類(lèi)URL和用于通訊的類(lèi)Socket。URL用來(lái)訪問(wèn)Internet網(wǎng)上資源的應(yīng)用,Socket用來(lái)對(duì)客戶端/服務(wù)器模式的應(yīng)用以及實(shí)現(xiàn)某些特殊的協(xié)議的應(yīng)用。

客戶基于服務(wù)器之間使用的大部分通訊組件都是基于Socket接口來(lái)實(shí)現(xiàn)的。Socket是兩個(gè)程序之間進(jìn)行雙向數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)通訊端點(diǎn),有一個(gè)地址和一個(gè)端口號(hào)來(lái)標(biāo)識(shí)。每個(gè)服務(wù)程序在提供服務(wù)時(shí)都要在一個(gè)端口進(jìn)行,而想使用該服務(wù)的客戶機(jī)也必須連接該端口。Socket因?yàn)槭腔趥鬏攲?,所以它是比較原始的通訊協(xié)議機(jī)制。通過(guò)Socket的數(shù)據(jù)表現(xiàn)形式為字節(jié)流信息,因此通訊雙方要想完成某項(xiàng)具體的應(yīng)用則必須按雙方約定的方式進(jìn)行數(shù)據(jù)的格式化和解釋?zhuān)哂懈鼜?qiáng)的靈活性和更廣泛的使用領(lǐng)域。

3飛行棋游戲的實(shí)現(xiàn)和測(cè)試

在游戲開(kāi)始前必須要清理掉沒(méi)有用的數(shù)據(jù),并檢查一下有沒(méi)有錯(cuò)誤的數(shù)據(jù)也一并清除,這樣做的目的是為了后面的正常運(yùn)行,以免引起不必要的錯(cuò)誤。

該飛行棋游戲軟件測(cè)試主要測(cè)試隨意點(diǎn)擊飛機(jī)和棋盤(pán)程序的健壯性。在游戲未開(kāi)始前,隨意點(diǎn)擊飛機(jī)和棋盤(pán)都不會(huì)引起程序的崩潰或者飛機(jī)位置的更改。然后在游戲過(guò)程當(dāng)中,當(dāng)扔骰子之后,只能對(duì)當(dāng)前玩家的飛機(jī)進(jìn)行相關(guān)的操作,別的玩家的飛機(jī)不能操作。

4總結(jié)

通過(guò)完成飛行棋游戲的編寫(xiě),使我更加深入的了解了系統(tǒng)架構(gòu)和設(shè)計(jì)模式的重要性。編程之前首先要最大化的,最深入的了解客戶需求,然后根據(jù)客戶的需求來(lái)完成程序功能的劃分。程序的模塊化可以更好地去添加或刪除功能??蛻舻墓δ苄枨笸ㄟ^(guò)系統(tǒng)的架構(gòu)更加合理的組織在一起,使程序員編寫(xiě)代碼更加有條理性,更加邏輯性。

程序編寫(xiě)的不足是沒(méi)有進(jìn)行下一步棋的時(shí)間限制,當(dāng)時(shí)是因?yàn)榭紤]到可以邊下棋邊聊天,重點(diǎn)放在了聊天的設(shè)置編程上,而忽略了下每一步棋的時(shí)間控制。還有一個(gè)不足就是沒(méi)有講悔棋放在程序中,雖然在需求分析中提到了悔棋這個(gè)操作,但是因其開(kāi)銷(xiāo)很大,過(guò)程比較復(fù)雜,所以沒(méi)有考慮進(jìn)去。

參考文獻(xiàn)

[1][美]羅林斯.[美]莫里斯著,付煜等譯.游戲架構(gòu)與設(shè)計(jì)[M].紅旗出版社,2005.

[2]朱福喜.Java語(yǔ)言基礎(chǔ)教程[M].北京:清華大學(xué)出版社,2008(04).endprint

猜你喜歡
界面設(shè)計(jì)
《京燕兒》APP界面設(shè)計(jì)
中醫(yī)養(yǎng)生APP界面設(shè)計(jì)
“共享員工”平臺(tái)界面設(shè)計(jì)
中國(guó)傳統(tǒng)元素在界面設(shè)計(jì)中的應(yīng)用
面向智能手機(jī)的UI界面設(shè)計(jì)
手機(jī)UI界面設(shè)計(jì)中視覺(jué)藝術(shù)元素的構(gòu)成
郓城县| 东安县| 平泉县| 延寿县| 维西| 湘阴县| 扬州市| 延川县| 集贤县| 德化县| 北流市| 吉木乃县| 如皋市| 新余市| 灵璧县| 浠水县| 丘北县| 永仁县| 宜州市| 龙川县| 马山县| 那坡县| 远安县| 泰和县| 尚义县| 衡南县| 保定市| 祁阳县| 鹤岗市| 高雄县| 腾冲县| 开原市| 册亨县| 庄河市| 绥宁县| 疏勒县| 阜新市| 无为县| 建昌县| 太仓市| 亳州市|