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

基于JAVA的拼圖游戲開發(fā)

2021-07-25 11:00:37管敏
科技尚品 2021年3期

管敏

摘 要:文章基于JAVA的拼圖游戲開發(fā)進(jìn)行設(shè)計(jì),主要運(yùn)用JAVA中繪制圖形界面的Swing包進(jìn)行拼圖游戲界面設(shè)計(jì),通過設(shè)計(jì)圖片移動(dòng)算法實(shí)現(xiàn)拼圖游戲主體功能滑塊移動(dòng)的實(shí)現(xiàn)以獲得圖片按鈕移動(dòng)功能。在進(jìn)行菜單功能設(shè)計(jì)時(shí),使用了監(jiān)聽方法使得菜單按鈕能夠正常使用,并使用lang包中的異常處理類以及線程類進(jìn)一步優(yōu)化拼圖游戲界面,最后提出了一些界面算法優(yōu)化的問題。

關(guān)鍵詞:Swing包;拼圖游戲;圖片移動(dòng)算法;lang包

中圖分類號(hào):TP312 文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1674-1064(2021)03-044-02

DOI:10.12310/j.issn.1674-1064.2021.03.020

拼圖游戲的趣味源遠(yuǎn)流長(zhǎng)[1]。拼圖游戲深受大眾喜愛,不僅有趣休閑,還能鍛煉人的思維能力。隨著計(jì)算機(jī)、手機(jī)的普及,人們已不再滿足于線下拼圖游戲。從玩家角度來看,線上拼圖游戲不僅操作方便,而且可以通過提升游戲難度激起讀者的挑戰(zhàn)心。拼圖游戲?qū)和某砷L(zhǎng)十分有利,在娛樂游戲盛行的游戲市場(chǎng),拼圖等益智類小游戲似乎更適合兒童使用。從編程初學(xué)者來說,課堂上以做拼圖游戲項(xiàng)目為中心進(jìn)行有關(guān)JAVA的學(xué)習(xí),更加吸引人,有利于提高學(xué)生的學(xué)習(xí)興趣[2],進(jìn)而對(duì)JAVA進(jìn)行深入研究[3]。

1 JAVA Swing簡(jiǎn)介

其是用來設(shè)計(jì)界面的工具包,是對(duì)AWT包的擴(kuò)展,組件以J開頭,并且Swing界面在不同平臺(tái)上的外觀完全一樣,真正做到了平臺(tái)獨(dú)立,可以用來對(duì)拼圖游戲的圖形用戶界面進(jìn)行設(shè)計(jì)[4-5]。

2 拼圖游戲的設(shè)計(jì)過程及功能驗(yàn)證

2.1 拼圖游戲設(shè)計(jì)流程

首先,采用從整體到局部的面向?qū)ο笤O(shè)計(jì)方法,以拼圖游戲軟件功能為核心,對(duì)拼圖游戲軟件進(jìn)行分析、設(shè)計(jì)、實(shí)現(xiàn)。

其中,搭建游戲界面使用的是容器知識(shí)點(diǎn),容器使用頂級(jí)容器和中層容器進(jìn)行搭建。其次,使用布局進(jìn)行界面劃分,拼圖需要把圖分成等分的幾部分。要使得拼圖游戲能夠進(jìn)行,就必須使各個(gè)部分的圖片發(fā)生交換,這時(shí)需要設(shè)計(jì)圖片交換算法。

最后,對(duì)功能部分進(jìn)行設(shè)置。首先設(shè)置的就是菜單欄,以及菜單欄中的菜單項(xiàng),包括菜單、菜單中的開始、結(jié)束、查看背景圖片以及選擇等五個(gè)按鈕鍵。而在程序設(shè)計(jì)時(shí),分四個(gè)部分寫程序,分別為圖片切割程序、頂級(jí)容器界面、中級(jí)容器界面、按鈕界面。然后就是計(jì)算時(shí)間以及步數(shù)。計(jì)算時(shí)間以及步數(shù)需要用到線程知識(shí),注意一下小細(xì)節(jié),就是需要設(shè)置更換圖片以及進(jìn)行等級(jí)后清零的設(shè)置,拼圖游戲設(shè)計(jì)流程如圖1所示。

2.2 拼圖游戲界面設(shè)計(jì)

首先進(jìn)行整體面板布局。直接使用Jframe類下的setTitle()、setDefaultCloseOpearation()、setLocationRelativeTo()、setSize()、setResizable()方法分別設(shè)置窗口的標(biāo)題、關(guān)閉圖標(biāo)、在屏幕的位置、窗口大小以及是否由用戶更改窗口的大小。然后創(chuàng)建中間容器,添加到頂層容器內(nèi),再創(chuàng)建基本組件,添加到中間容器內(nèi)。整體界面搭建好后,對(duì)游戲界面進(jìn)行布局,此次拼圖游戲采用網(wǎng)格布局GridBayLayout,即將中間容器設(shè)置為表格布局,然后設(shè)置按鈕的圖片背景,最后添加按鈕組件至中間容器。

其次,進(jìn)行圖片切割算法設(shè)計(jì)。使用圖片切割方法cutImage,先創(chuàng)建相應(yīng)的圖片文件夾,放置原始圖片至文件夾,然后調(diào)用方法,生成切割文件至相應(yīng)目錄。

在進(jìn)行圖片移動(dòng)算法設(shè)計(jì)前,先用random隨機(jī)生成器隨機(jī)打亂圖片的順序。先創(chuàng)建放置圖片順序的隨機(jī)數(shù)組,根據(jù)隨機(jī)數(shù)組生成圖片位置,創(chuàng)建按鈕組件,并為按鈕設(shè)置圖表,添加按鈕組件至中間容器Jpanel。實(shí)現(xiàn)按鈕組件的移動(dòng),根據(jù)拼圖游戲的規(guī)則,就是點(diǎn)擊空白按鈕相鄰的圖片按鈕,使得空白按鈕和圖片按鈕發(fā)生交換。移動(dòng)算法設(shè)計(jì)的步驟:

按鈕對(duì)象設(shè)計(jì)繼承于JButton,使得其具有橫縱坐標(biāo)屬性,主要用于判斷空白按鈕的周邊按鈕是否為鄰近按鈕;

獲得空白按鈕的橫縱坐標(biāo);

獲得點(diǎn)擊按鈕的橫縱坐標(biāo);

判斷點(diǎn)擊按鈕是否與空白按鈕相鄰[6]。

下一步進(jìn)行菜單組件的繪制。首先創(chuàng)建菜單JMenu、菜單欄JMenubar以及菜單項(xiàng)JMenuItem,然后進(jìn)行菜單各功能的設(shè)計(jì)。為了實(shí)現(xiàn)功能,對(duì)菜單和菜單項(xiàng)添加監(jiān)聽。

最后一步在設(shè)置時(shí)間和步數(shù)的顯示前,先對(duì)菜單欄的開始和結(jié)束按鈕功能進(jìn)行設(shè)計(jì)。開始按鈕可獲得設(shè)置的圖片及難度級(jí)別,進(jìn)行圖片切割,然后為按鈕設(shè)置監(jiān)聽。而結(jié)束按鈕則是當(dāng)所有按鈕的坐標(biāo)位置和隨機(jī)數(shù)組的位置相符時(shí),則拼圖成功,游戲結(jié)束。時(shí)間和步數(shù)就是設(shè)置兩個(gè)菜單項(xiàng),然后對(duì)其進(jìn)行線程設(shè)置,能夠使其在開始游戲時(shí)進(jìn)行執(zhí)行。而在開始后,能夠重置時(shí)間與步數(shù)[7]。

2.3 拼圖游戲功能實(shí)現(xiàn)及驗(yàn)證

在進(jìn)行拼圖游戲的過程中,程序運(yùn)行結(jié)果框中出現(xiàn)了圖片的原始順序,但是在移動(dòng)滑塊的時(shí)候,并沒有根據(jù)算法的基本思路運(yùn)行,而是未完成拼圖就顯示了“拼圖完成”的消息框。原算法的思路如下:隨機(jī)打亂圖片順序,然后移動(dòng)圖片滑塊,當(dāng)圖片滑塊的順序與按鈕的順序相同時(shí),即按鈕的順序是0~9,而圖片滑塊的順序是亂序。當(dāng)亂序變成順序,與按鈕順序一一對(duì)應(yīng)時(shí),則表示拼圖完成,如圖2所示。

在進(jìn)行拼圖游戲的過程中,時(shí)間與步數(shù)正常顯示。

選擇另一個(gè)能夠正常進(jìn)行拼圖游戲的代碼進(jìn)行算法思路比較。

對(duì)比結(jié)果顯示:數(shù)組維度的區(qū)別。

點(diǎn)擊“菜單”下的“背景”,則背景圖片正常顯示。

點(diǎn)擊“選擇”,然后點(diǎn)擊“圖片更換”,最后點(diǎn)擊“開始”,則此功能正常使用、無異常,并且時(shí)間與步數(shù)會(huì)清零。

點(diǎn)擊“選擇”,然后進(jìn)行“等級(jí)”切換,點(diǎn)擊“開始”,切換正常,并且時(shí)間與步數(shù)正常清零。

3 結(jié)語

目前,對(duì)于拼圖游戲的開發(fā)并不局限于JAVA,還包括各類語言如C#、matlab等,不過主要以JAVA為主。但是,JAVA在開發(fā)拼圖游戲時(shí)還存在一些算法優(yōu)化問題:判斷游戲是否結(jié)束的算法,以及圖片問題:圖片大小根據(jù)窗口大小進(jìn)行縮放。

在開發(fā)JAVA的過程中,出現(xiàn)了必須要將窗口大小設(shè)置成圖片大小的情況,當(dāng)插入的圖片大小不同時(shí),怎么控制圖片大小根據(jù)窗口大小進(jìn)行調(diào)整呢?再者,判斷拼圖游戲完成的算法在思路上并未有什么問題,但是在實(shí)施的情況下,卻出現(xiàn)了圖片還未拼成原圖就顯示“拼圖完成”的信息提示框。

根據(jù)第二個(gè)問題,對(duì)比了一個(gè)拼圖游戲開發(fā)的代碼,發(fā)現(xiàn)兩者的區(qū)別在于數(shù)組維度的區(qū)別,兩者都是通過位置對(duì)比的算法進(jìn)行判斷拼圖是否完成。而通過二維數(shù)組進(jìn)行位置對(duì)比時(shí),游戲能夠正常識(shí)別出拼圖是否完成。而一維數(shù)組卻不能識(shí)別,甚至出現(xiàn)任意位置都可顯示拼圖完成。

由于開發(fā)游戲時(shí)使用的是JAVA語言,所以這個(gè)拼圖軟件可以在很多平臺(tái)上運(yùn)行,比如PC端以及安卓系統(tǒng)等,在各個(gè)系統(tǒng)上都可兼容。

參考文獻(xiàn)

[1] 宋愛新,桂鵬飛.基于MFC的數(shù)字拼圖游戲設(shè)計(jì)與實(shí)現(xiàn)[J].智慧密集,2015(18):35-38.

[2] 劉立云,趙慧勤.基于自主探究理念的拼圖教育游戲的設(shè)計(jì)開發(fā)[J].數(shù)字社區(qū),2017(20):70-71.

[3] 余戰(zhàn)秋.基于App Inventor的九宮格拼圖游戲設(shè)計(jì)與實(shí)現(xiàn)[J].智慧密集,2017(18):34-36.

[4] 茍雨晴,蘭全祥.基于Java的拼圖游戲設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2019,2(15):45-47.

[5] 秦鵬珍.基于Java的拼圖游戲?qū)崿F(xiàn)[J].電子技術(shù)與軟件工程,2019(13),237-238.

[6] 張國(guó)榮.拼圖游戲APP的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2019,3(15):1009-3044.

[7] 劉丹.基于Android的拼圖游戲設(shè)計(jì)與實(shí)現(xiàn)[J].湖北理工學(xué)院學(xué)報(bào),2019,6(35):2095-4565.

主站蜘蛛池模板: 欧美激情第一欧美在线| 视频在线观看一区二区| 91口爆吞精国产对白第三集| 真人免费一级毛片一区二区| 国产日韩久久久久无码精品| 成人午夜视频在线| 国产毛片不卡| 精品亚洲欧美中文字幕在线看| 亚洲欧美h| 亚洲日本韩在线观看| 天天色综合4| 国产精品亚欧美一区二区| 国产小视频网站| 91在线激情在线观看| 国产精品欧美亚洲韩国日本不卡| 欧美乱妇高清无乱码免费| 国产好痛疼轻点好爽的视频| 日韩免费毛片| jizz亚洲高清在线观看| 日韩av高清无码一区二区三区| 91久久国产综合精品女同我| 欧美成人a∨视频免费观看| 国产欧美自拍视频| 91精品情国产情侣高潮对白蜜| 国产美女精品在线| 88av在线| 麻豆a级片| 国产成a人片在线播放| 91在线播放国产| 国产精品亚洲天堂| 欧美在线一级片| 亚洲一区免费看| AV不卡国产在线观看| 亚洲欧美一区二区三区图片 | 欧美天堂在线| 青青草原国产av福利网站| 亚洲永久精品ww47国产| 98超碰在线观看| 九月婷婷亚洲综合在线| 天天做天天爱夜夜爽毛片毛片| 国产打屁股免费区网站| 91精品国产麻豆国产自产在线| 欧美成人日韩| a亚洲天堂| 亚洲aaa视频| 色偷偷一区| 成人福利在线视频免费观看| 国产精女同一区二区三区久| 538国产在线| 欧美伊人色综合久久天天| 99视频精品全国免费品| 婷婷亚洲天堂| 青草国产在线视频| 9cao视频精品| 少妇露出福利视频| 国产视频入口| 九九这里只有精品视频| 亚洲 欧美 日韩综合一区| 亚洲国产综合精品一区| 国产在线观看第二页| 狼友视频一区二区三区| 国产亚洲精品在天天在线麻豆 | 国产精品午夜福利麻豆| 久久久精品国产SM调教网站| 天天综合网色| 幺女国产一级毛片| 午夜福利视频一区| 日本成人在线不卡视频| 成年人国产视频| 亚洲精品午夜天堂网页| 在线观看免费人成视频色快速| 波多野结衣无码中文字幕在线观看一区二区| 亚洲第七页| 亚洲国产精品国自产拍A| 中文字幕亚洲第一| 无码综合天天久久综合网| 色婷婷成人网| 亚洲男人的天堂在线| 69视频国产| 欧美亚洲国产视频| a免费毛片在线播放| 狠狠做深爱婷婷综合一区|