最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 實(shí)現(xiàn)貪吃蛇游戲的示例

 更新時(shí)間:2021年03月04日 08:33:44   作者:半夏~心平  
這篇文章主要介紹了Java 如何實(shí)現(xiàn)貪吃蛇游戲,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下

游戲界面基本布局

貪吃蛇是基于JFrame的一款小游戲。它主要有兩部分組成,一個(gè)是顯示區(qū)域,一個(gè)是按鈕區(qū)域。這兩個(gè)區(qū)域都用JPanel來(lái)實(shí)現(xiàn)。

首先需要?jiǎng)?chuàng)建一個(gè)基于JFrame的類(lèi),例如創(chuàng)建一個(gè)MyFrame,讓其繼承于JFrame。

然后創(chuàng)建一個(gè)顯示區(qū)域的類(lèi)MyPanel,一個(gè)按鈕區(qū)域的類(lèi)Button,當(dāng)然了這兩個(gè)類(lèi)都基于JPanel。

第三步:在MyFrame類(lèi)中實(shí)例化兩個(gè)JPanel類(lèi)。并在MyFrame構(gòu)造方法中設(shè)置窗體的logo、窗體的標(biāo)題、窗體初始位置、窗體的大小、窗體的背景顏色、窗體的關(guān)閉方式等。

第四步:繼續(xù)清空MyFrame的布局管理器、設(shè)置窗體為固定大小不可更改、添加兩個(gè)區(qū)域并顯示、設(shè)置鍵盤(pán)監(jiān)聽(tīng)焦點(diǎn)(控制貪吃蛇的移動(dòng))等。

游戲顯示區(qū)域

MyPanle實(shí)現(xiàn)思路:

  1. 在構(gòu)造方法中注冊(cè)鍵盤(pán)監(jiān)聽(tīng)事件、設(shè)置容器的坐標(biāo)及大小、設(shè)置容器的背景顏色。如果想要添加背景圖片,可以重寫(xiě)paintComponent方法。
  2. 創(chuàng)建一個(gè)食物類(lèi)Food,創(chuàng)建一個(gè)貪吃蛇類(lèi)Snake,并在MyPanel里實(shí)例化這兩個(gè)類(lèi)。
  3. 在MyPanel里創(chuàng)建一個(gè)貪吃蛇的線程,并在構(gòu)造方法里啟動(dòng)該線程。
  4. 重寫(xiě)paint方法,繪制容器。并設(shè)置相應(yīng)的顏色、畫(huà)線、調(diào)用貪吃蛇的移動(dòng)方法和繪畫(huà)方法、調(diào)用食物的繪畫(huà)方法。

配置文件類(lèi):

  1. 定義布局所需要的行和列,定義上下左右四個(gè)方向
  2. 定義死亡檢測(cè)標(biāo)識(shí)、定義游戲狀態(tài)檢測(cè)標(biāo)識(shí)。

貪吃蛇線程類(lèi):

重寫(xiě)線程啟動(dòng)的方法
在啟動(dòng)方法里時(shí)刻檢測(cè)貪吃蛇是否死亡,如果死亡則彈出“游戲結(jié)束”的對(duì)話框。

食物類(lèi):

  1. 定義食物的坐標(biāo)。
  2. 定義食物的繪畫(huà)方法
  3. 當(dāng)食物被吃掉后,我們需要隨機(jī)生成一個(gè)位置來(lái)展示食物,因此需要一個(gè)生成隨機(jī)位置的方法repair()
  4. 定義獲取食物坐標(biāo)的方法。在構(gòu)造方法里隨機(jī)生成食物的坐標(biāo)

結(jié)點(diǎn)類(lèi):

蛇有蛇頭和蛇身、蛇尾,我們用節(jié)點(diǎn)來(lái)實(shí)現(xiàn)。

  1. 創(chuàng)建一個(gè)結(jié)點(diǎn)類(lèi),屬性包括所在行、所在列、上個(gè)結(jié)點(diǎn)、下個(gè)節(jié)點(diǎn)、前進(jìn)方向。
  2. 在有參構(gòu)造方法中初始化貪吃蛇的位置信息,指定貪吃和前進(jìn)的方向。
  3. 定義繪畫(huà)方法,蛇頭顏色為黃色、其余為藍(lán)色。

貪吃蛇類(lèi)

  1. 創(chuàng)建一個(gè)貪吃蛇類(lèi),屬性包括頭、身、尾、食物。
  2. 定義有參構(gòu)造方法,參數(shù)為食物。并初始化貪吃蛇的初始坐標(biāo)、以及設(shè)置結(jié)點(diǎn)之間的關(guān)系。
  3. 定義繪畫(huà)方法,遍歷貪吃蛇的每個(gè)節(jié)點(diǎn),然后把每個(gè)節(jié)點(diǎn)繪畫(huà)出來(lái)。
  4. 定義獲取貪吃蛇坐標(biāo)的方法,用于獲取貪吃蛇的坐標(biāo)。
  5. 定義貪吃蛇的移動(dòng)方法。貪吃蛇怎么移動(dòng)?添加蛇頭——去蛇尾——吃食物——死亡檢測(cè)
  6. 定義添加蛇頭的方法,設(shè)置一個(gè)Node臨時(shí)變量。根據(jù)前進(jìn)方向判斷,如何添加蛇頭。
  7. 定義去除蛇尾的方法,把蛇尾的前一個(gè)結(jié)點(diǎn)的后指針設(shè)置為空,把蛇尾的前一個(gè)結(jié)點(diǎn)設(shè)置為蛇尾即可。
  8. 定義吃食物的方法,三步走。首先判斷貪吃蛇坐標(biāo)和食物坐標(biāo)是否重合,如果重合就添加蛇頭然后重新布局食物。
  9. 定義死亡檢測(cè)方法,兩步走。第一步判斷是否越界,第二步判斷頭是否和尾重合。
  10. 定義鍵盤(pán)控制方法。當(dāng)用戶按下WASD鍵,貪吃蛇才可改變方向移動(dòng)且不能逆向移動(dòng)。(比如開(kāi)始向上移動(dòng),我不能直接按S鍵讓它向下移動(dòng))。

按鈕區(qū)域

  1. 創(chuàng)建屬性:myPanel、暫停、繼續(xù)、重新開(kāi)始、退出。
  2. 創(chuàng)建帶參數(shù)的構(gòu)造方法,參數(shù)為myPanel.
  3. 在構(gòu)造方法中設(shè)置初始位置及大小、創(chuàng)建四個(gè)按鈕并添加。
  4. 在構(gòu)造方法里注冊(cè)按鈕監(jiān)聽(tīng)。
  5. 重寫(xiě)actionPerformed方法。檢測(cè)按下按鈕。
  6. 如果按下繼續(xù)游戲,那么需要重寫(xiě)設(shè)置鍵盤(pán)監(jiān)聽(tīng)焦點(diǎn)
  7. 如果是重新開(kāi)始游戲,那么需要停止當(dāng)前線程,然后重新生成蛇和食物,并把控制條件還原到初始狀態(tài)。最后創(chuàng)建新的線程對(duì)象并啟動(dòng),最后再設(shè)置鍵盤(pán)監(jiān)聽(tīng)焦點(diǎn)。

代碼獲取

https://github.com/XinPingLover/MyCode.git

以上就是Java 實(shí)現(xiàn)貪吃蛇游戲的詳細(xì)內(nèi)容,更多關(guān)于Java 貪吃蛇的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 深入理解JVM自動(dòng)內(nèi)存管理

    深入理解JVM自動(dòng)內(nèi)存管理

    對(duì)于Java虛擬機(jī)在內(nèi)存分配與回收的學(xué)習(xí),本文主要介紹了JVM自動(dòng)內(nèi)存管理,文中通過(guò)圖文示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • java 實(shí)現(xiàn)鏈棧存儲(chǔ)的方法

    java 實(shí)現(xiàn)鏈棧存儲(chǔ)的方法

    下面小編就為大家?guī)?lái)一篇java 實(shí)現(xiàn)鏈棧存儲(chǔ)的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • 最新評(píng)論

    色达县| 屏东县| 健康| 石楼县| 宁夏| 双桥区| 雷州市| 息烽县| 竹山县| 商水县| 平舆县| 固始县| 科技| 高青县| 同仁县| 阿图什市| 岑溪市| 大冶市| 旅游| 沙洋县| 汪清县| 固始县| 潮安县| 利辛县| 满洲里市| 汉阴县| 宁国市| 广平县| 武川县| 宜兰市| 正宁县| 仙游县| 永济市| 庆安县| 太原市| 玉溪市| 桃江县| 高淳县| 仁化县| 长泰县| 北京市|