Java 實(shí)現(xiàn)貪吃蛇游戲的示例
游戲界面基本布局
貪吃蛇是基于JFrame的一款小游戲。它主要有兩部分組成,一個是顯示區(qū)域,一個是按鈕區(qū)域。這兩個區(qū)域都用JPanel來實(shí)現(xiàn)。
首先需要創(chuàng)建一個基于JFrame的類,例如創(chuàng)建一個MyFrame,讓其繼承于JFrame。
然后創(chuàng)建一個顯示區(qū)域的類MyPanel,一個按鈕區(qū)域的類Button,當(dāng)然了這兩個類都基于JPanel。
第三步:在MyFrame類中實(shí)例化兩個JPanel類。并在MyFrame構(gòu)造方法中設(shè)置窗體的logo、窗體的標(biāo)題、窗體初始位置、窗體的大小、窗體的背景顏色、窗體的關(guān)閉方式等。
第四步:繼續(xù)清空MyFrame的布局管理器、設(shè)置窗體為固定大小不可更改、添加兩個區(qū)域并顯示、設(shè)置鍵盤監(jiān)聽焦點(diǎn)(控制貪吃蛇的移動)等。
游戲顯示區(qū)域
MyPanle實(shí)現(xiàn)思路:
- 在構(gòu)造方法中注冊鍵盤監(jiān)聽事件、設(shè)置容器的坐標(biāo)及大小、設(shè)置容器的背景顏色。如果想要添加背景圖片,可以重寫paintComponent方法。
- 創(chuàng)建一個食物類Food,創(chuàng)建一個貪吃蛇類Snake,并在MyPanel里實(shí)例化這兩個類。
- 在MyPanel里創(chuàng)建一個貪吃蛇的線程,并在構(gòu)造方法里啟動該線程。
- 重寫paint方法,繪制容器。并設(shè)置相應(yīng)的顏色、畫線、調(diào)用貪吃蛇的移動方法和繪畫方法、調(diào)用食物的繪畫方法。
配置文件類:
- 定義布局所需要的行和列,定義上下左右四個方向
- 定義死亡檢測標(biāo)識、定義游戲狀態(tài)檢測標(biāo)識。
貪吃蛇線程類:
重寫線程啟動的方法
在啟動方法里時刻檢測貪吃蛇是否死亡,如果死亡則彈出“游戲結(jié)束”的對話框。
食物類:
- 定義食物的坐標(biāo)。
- 定義食物的繪畫方法
- 當(dāng)食物被吃掉后,我們需要隨機(jī)生成一個位置來展示食物,因此需要一個生成隨機(jī)位置的方法repair()
- 定義獲取食物坐標(biāo)的方法。在構(gòu)造方法里隨機(jī)生成食物的坐標(biāo)
結(jié)點(diǎn)類:
蛇有蛇頭和蛇身、蛇尾,我們用節(jié)點(diǎn)來實(shí)現(xiàn)。
- 創(chuàng)建一個結(jié)點(diǎn)類,屬性包括所在行、所在列、上個結(jié)點(diǎn)、下個節(jié)點(diǎn)、前進(jìn)方向。
- 在有參構(gòu)造方法中初始化貪吃蛇的位置信息,指定貪吃和前進(jìn)的方向。
- 定義繪畫方法,蛇頭顏色為黃色、其余為藍(lán)色。
貪吃蛇類
- 創(chuàng)建一個貪吃蛇類,屬性包括頭、身、尾、食物。
- 定義有參構(gòu)造方法,參數(shù)為食物。并初始化貪吃蛇的初始坐標(biāo)、以及設(shè)置結(jié)點(diǎn)之間的關(guān)系。
- 定義繪畫方法,遍歷貪吃蛇的每個節(jié)點(diǎn),然后把每個節(jié)點(diǎn)繪畫出來。
- 定義獲取貪吃蛇坐標(biāo)的方法,用于獲取貪吃蛇的坐標(biāo)。
- 定義貪吃蛇的移動方法。貪吃蛇怎么移動?添加蛇頭——去蛇尾——吃食物——死亡檢測
- 定義添加蛇頭的方法,設(shè)置一個Node臨時變量。根據(jù)前進(jìn)方向判斷,如何添加蛇頭。
- 定義去除蛇尾的方法,把蛇尾的前一個結(jié)點(diǎn)的后指針設(shè)置為空,把蛇尾的前一個結(jié)點(diǎn)設(shè)置為蛇尾即可。
- 定義吃食物的方法,三步走。首先判斷貪吃蛇坐標(biāo)和食物坐標(biāo)是否重合,如果重合就添加蛇頭然后重新布局食物。
- 定義死亡檢測方法,兩步走。第一步判斷是否越界,第二步判斷頭是否和尾重合。
- 定義鍵盤控制方法。當(dāng)用戶按下WASD鍵,貪吃蛇才可改變方向移動且不能逆向移動。(比如開始向上移動,我不能直接按S鍵讓它向下移動)。
按鈕區(qū)域
- 創(chuàng)建屬性:myPanel、暫停、繼續(xù)、重新開始、退出。
- 創(chuàng)建帶參數(shù)的構(gòu)造方法,參數(shù)為myPanel.
- 在構(gòu)造方法中設(shè)置初始位置及大小、創(chuàng)建四個按鈕并添加。
- 在構(gòu)造方法里注冊按鈕監(jiān)聽。
- 重寫actionPerformed方法。檢測按下按鈕。
- 如果按下繼續(xù)游戲,那么需要重寫設(shè)置鍵盤監(jiān)聽焦點(diǎn)
- 如果是重新開始游戲,那么需要停止當(dāng)前線程,然后重新生成蛇和食物,并把控制條件還原到初始狀態(tài)。最后創(chuàng)建新的線程對象并啟動,最后再設(shè)置鍵盤監(jiān)聽焦點(diǎn)。
代碼獲取
https://github.com/XinPingLover/MyCode.git
以上就是Java 實(shí)現(xiàn)貪吃蛇游戲的詳細(xì)內(nèi)容,更多關(guān)于Java 貪吃蛇的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
IDEA中HTML通過servlet3.0注解名提交表單到servlet類找不到頁面的問題
這篇文章主要介紹了IDEA中HTML通過servlet3.0注解名提交表單到servlet類找不到頁面的問題,本文通過場景描述及問題解析,給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07SpringBoot讀取yml文件中配置數(shù)組的2種方法
這篇文章主要介紹了SpringBoot讀取yml文件中配置數(shù)組的2種方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12Java Maven settings.xml中私有倉庫配置詳解
這篇文章主要介紹了詳解Maven settings.xml配置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2021-10-10java 鍵盤輸入一個數(shù),輸出數(shù)組中指定元素的示例
今天小編就為大家分享一篇java 鍵盤輸入一個數(shù),輸出數(shù)組中指定元素的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07springboot配置開發(fā)和測試環(huán)境并添加啟動路徑方式
這篇文章主要介紹了springboot配置開發(fā)和測試環(huán)境并添加啟動路徑方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11