999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Java的俄羅斯方塊游戲的設(shè)計與實現(xiàn)

2017-05-22 21:23:54高成珍
科技經(jīng)濟市場 2017年2期
關(guān)鍵詞:游戲

高成珍

摘要:俄羅斯方塊是一款簡單有趣的益智類小游戲,通過對游戲中包含的元素及其關(guān)系的分析,抽象出相應的類和接口,通過對游戲過程的分析,抽象出關(guān)鍵的流程,并通過Java語言編程實現(xiàn)。

關(guān)鍵詞:俄羅斯方塊;Java

0引言

俄羅斯方塊是一款經(jīng)久不衰的益智類小游戲,游戲規(guī)則簡單、有趣,老少皆宜。對于Java初學者來說是一個不錯的練習項目,難度適中,不僅可以檢驗知識的綜合運用,提升開發(fā)技能,培養(yǎng)面向?qū)ο缶幊趟季S,同時還可以激發(fā)學習興趣,增強自我效能感。

1俄羅斯方塊游戲中核心元素

游戲中核心元素包括3個:各種形狀的方塊、底部障礙物以及游戲面板。游戲主要是控制方塊在面板上的移動與變化以及障礙物的增加和消除。

1.1方塊

經(jīng)典的俄羅斯方塊游戲中方塊主要有7種類型,如圖1所示,每一種類型又有若干種變形,如圖2所示。

根據(jù)圖2形狀的分析可以得出,所有的方塊都可以用一個4*4的格子表示,格子有兩種狀態(tài):空白和填充。對于不同的形狀,填充部分不同而已,所以可以用一個包含16個整型元素的一維數(shù)組來表示一種具體的形狀。當需要填充時,對應的位置上的數(shù)字為1,否則位置上的數(shù)字為0。采用二維數(shù)組存儲一種類型的方塊,第一維表示的是第幾種變體,第二維表示具體形狀的數(shù)值。采用三維數(shù)組存儲所有的方塊,第一維表示哪一種類型,第二維表示該類型的第幾種變體,第三維表示具體形狀的數(shù)值。對于方塊來說除了要知道它的形狀以外,還需要知道它的位置,并且能夠根據(jù)需要進行移動和變形,所以方塊類(Shape)的設(shè)計如圖3所示。

1.2障礙物

障礙物實際上就是不能移動的方塊組合,障礙物會隨著游戲執(zhí)行過程而不斷增加或減少。與方塊類似可以采用一個二維數(shù)組來保存障礙物,數(shù)組的大小即為整個面板中橫向和縱向上格子的個數(shù),對于需要填充的格子數(shù)值標記為1,空白格子對應的數(shù)值為0。障礙物添加后需要判斷是否超出邊界,如果超出則游戲結(jié)束,同時需要判斷是否有滿行,有則需要刪除等等,障礙物類(Ground)的關(guān)鍵屬性和方法如圖4所示。

1.3游戲面板

游戲面板主要用于顯示方塊以及障礙物,需要指定寬度和高度,為了使程序更為靈活,面板的寬度和高度不指定為具體的數(shù)值,而是以格子為單位,指定包含多少個格子,通過靜態(tài)常量指定格子個數(shù)以及格子的邊長。游戲面板類的關(guān)鍵屬性和方法如圖5所示。

2俄羅斯方塊游戲關(guān)鍵流程

俄羅斯方塊游戲的主要流程為:游戲開始后,隨機生成方塊,啟動線程讓方塊定時下落,監(jiān)聽用戶的按鍵操作控制方塊的移動和變形,及時刷新方塊位置,方塊位置變化后需重新判斷是否可以繼續(xù)移動,如果不能移動則將其轉(zhuǎn)換成障礙物。轉(zhuǎn)換后需判斷是否可以消除障礙物,以及是否游戲結(jié)束。具體流程如圖6所示,程序運行效果如圖7所示。

3關(guān)鍵功能分析與設(shè)計

3.1如何實現(xiàn)方塊的移動

方塊移動有兩種類型:一種是定時自由下落;另一種是根據(jù)用戶的按鍵操作進行變化,如左移、右移、下移或者旋轉(zhuǎn)。對于第一種移動類型,通過單獨啟動一個線程來完成,線程每隔一定的時間,執(zhí)行Shape的下移方法,下移后需通知面板及時刷新。因為Shape類和GamePanel面板類不在同一個文件,二者之間不能直接通信,可借助于中介一控制器Controller。為Shape對象添加一個監(jiān)聽變化的監(jiān)聽器ShapeListener,而Controller實現(xiàn)了該接口,在創(chuàng)建Controller對象時傳遞GamePanel對象,形狀發(fā)生變化時,會調(diào)用Controller的相應方法,在該方法內(nèi)可調(diào)用GamePanel的顯示方法。對于第二種移動類型,主要是通過監(jiān)聽用戶按鍵的操作,然后根據(jù)所按的鍵,執(zhí)行相應的操作(←表示左移,↓表示右移,↓表示下移,↑表示旋轉(zhuǎn)),最后同樣調(diào)用GamePanel的顯示方法,刷新界面。

3.2方塊與障礙物的轉(zhuǎn)換及消除障礙物

障礙物實際上就是不能移動的方塊,當方塊不能向下移動時,就需要將其轉(zhuǎn)換成障礙物,只需獲取方塊的位置,然后將障礙物中該位置對應的值設(shè)置為1,然后重新繪制即可。轉(zhuǎn)換成障礙物后,循環(huán)遍歷每一行數(shù)據(jù),如果一行中所有的數(shù)據(jù)都為1,則表明這一行為滿格,需要消除,只需要將該行上面的所有數(shù)據(jù)集體向下移動即可。

4總結(jié)

本文從面向?qū)ο缶幊趟枷氤霭l(fā),分析俄羅斯方塊游戲中主要的元素及其關(guān)系,抽象出相應的類和接口,整體采用MVC模式,通過控制器控制對象間的通信與數(shù)據(jù)傳遞,具有較好的擴展性和靈活性。對于提升初學者綜合運用Java知識設(shè)計簡單的系統(tǒng)具有一定的借鑒意義。

猜你喜歡
游戲
做游戲
夜間游戲
游戲
送信游戲
數(shù)獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
第八章直接逃出游戲
小學科學(2015年7期)2015-07-29 22:29:00
第八章 直接逃出游戲
小學科學(2015年6期)2015-07-01 14:30:14
游戲五計算
主站蜘蛛池模板: a毛片在线| 亚洲国产91人成在线| 国产成人免费高清AⅤ| 欧美一级高清视频在线播放| 国产又粗又猛又爽视频| 视频一本大道香蕉久在线播放| 亚洲精品欧美日本中文字幕| 婷婷综合缴情亚洲五月伊| 91视频国产高清| 丰满人妻中出白浆| 国产一区二区三区在线无码| 亚洲视频欧美不卡| 天堂岛国av无码免费无禁网站 | 欧美无遮挡国产欧美另类| 99久久人妻精品免费二区| 91美女在线| 国产精品自拍露脸视频| 日韩第九页| 国产欧美日韩在线在线不卡视频| 2022国产91精品久久久久久| 午夜影院a级片| 国产女人爽到高潮的免费视频 | 先锋资源久久| 亚洲伦理一区二区| 午夜a视频| 91一级片| 国产欧美日韩91| 国产激情无码一区二区APP| 色偷偷综合网| 欧美日韩一区二区三区在线视频| 免费AV在线播放观看18禁强制| 国产精品香蕉| 亚洲第一黄片大全| 成人伊人色一区二区三区| 91精品福利自产拍在线观看| 精久久久久无码区中文字幕| 日韩无码真实干出血视频| 欧美性久久久久| 久久综合久久鬼| 国产成人精品高清在线| 日韩专区欧美| 思思热精品在线8| 91欧美亚洲国产五月天| 男女精品视频| 午夜一区二区三区| 香蕉国产精品视频| 在线精品视频成人网| 欧美无遮挡国产欧美另类| 日本三级精品| 亚洲午夜综合网| 天天综合天天综合| 日本免费一区视频| 97久久超碰极品视觉盛宴| 国产一区二区三区日韩精品| 国产自产视频一区二区三区| 欧美成人午夜视频| 欧美无专区| 日韩精品一区二区三区免费| 婷婷色中文网| 无码精油按摩潮喷在线播放| 久久精品国产精品青草app| 国内精品久久人妻无码大片高| 国产丝袜91| 久久五月天综合| 在线观看网站国产| 香蕉在线视频网站| 亚洲精品无码AV电影在线播放| 国产成人成人一区二区| 精品国产免费第一区二区三区日韩| 丝袜无码一区二区三区| 亚洲精品麻豆| 久久久久久高潮白浆| 久久精品嫩草研究院| 97se亚洲综合在线韩国专区福利| 久久久精品国产亚洲AV日韩| 免费A∨中文乱码专区| 国产成人免费| 天堂成人在线| 日本国产精品| 国产精品美女在线| 九九香蕉视频| 二级毛片免费观看全程|