天天看點

java控制台貪食蛇,Java實作貪吃蛇

遊戲界面基本布局

java控制台貪食蛇,Java實作貪吃蛇

貪吃蛇是基于JFrame的一款小遊戲。它主要有兩部分組成,一個是顯示區域,一個是按鈕區域。這兩個區域都用JPanel來實作。

首先需要建立一個基于JFrame的類,例如建立一個MyFrame,讓其繼承于JFrame。

然後建立一個顯示區域的類MyPanel,一個按鈕區域的類Button,當然了這兩個類都基于JPanel。

第三步:在MyFrame類中執行個體化兩個JPanel類。并在MyFrame構造方法中設定窗體的logo、窗體的标題、窗體初始位置、窗體的大小、窗體的背景顔色、窗體的關閉方式等。

第四步:繼續清空MyFrame的布局管理器、設定窗體為固定大小不可更改、添加兩個區域并顯示、設定鍵盤監聽焦點(控制貪吃蛇的移動)等。

遊戲顯示區域

MyPanle實作思路:

在構造方法中注冊鍵盤監聽事件、設定容器的坐标及大小、設定容器的背景顔色。如果想要添加背景圖檔,可以重寫paintComponent方法。

建立一個食物類Food,建立一個貪吃蛇類Snake,并在MyPanel裡執行個體化這兩個類。

在MyPanel裡建立一個貪吃蛇的線程,并在構造方法裡啟動該線程。

重寫paint方法,繪制容器。并設定相應的顔色、畫線、調用貪吃蛇的移動方法和繪畫方法、調用食物的繪畫方法。

配置檔案類:

定義布局所需要的行和列,定義上下左右四個方向

定義死亡檢測辨別、定義遊戲狀态檢測辨別。

貪吃蛇線程類:

重寫線程啟動的方法

在啟動方法裡時刻檢測貪吃蛇是否死亡,如果死亡則彈出“遊戲結束”的對話框。

食物類:

定義食物的坐标。

定義食物的繪畫方法

當食物被吃掉後,我們需要随機生成一個位置來展示食物,是以需要一個生成随機位置的方法repair()

定義擷取食物坐标的方法。在構造方法裡随機生成食物的坐标

結點類:

蛇有蛇頭和蛇身、蛇尾,我們用節點來實作。

建立一個結點類,屬性包括所在行、所在列、上個結點、下個節點、前進方向。

在有參構造方法中初始化貪吃蛇的位置資訊,指定貪吃和前進的方向。

定義繪畫方法,蛇頭顔色為黃色、其餘為藍色。

貪吃蛇類

建立一個貪吃蛇類,屬性包括頭、身、尾、食物。

定義有參構造方法,參數為食物。并初始化貪吃蛇的初始坐标、以及設定結點之間的關系。

定義繪畫方法,周遊貪吃蛇的每個節點,然後把每個節點繪畫出來。

定義擷取貪吃蛇坐标的方法,用于擷取貪吃蛇的坐标。

定義貪吃蛇的移動方法。貪吃蛇怎麼移動?添加蛇頭——去蛇尾——吃食物——死亡檢測

定義添加蛇頭的方法,設定一個Node臨時變量。根據前進方向判斷,如何添加蛇頭。

定義去除蛇尾的方法,把蛇尾的前一個結點的後指針設定為空,把蛇尾的前一個結點設定為蛇尾即可。

定義吃食物的方法,三步走。首先判斷貪吃蛇坐标和食物坐标是否重合,如果重合就添加蛇頭然後重新布局食物。

定義死亡檢測方法,兩步走。第一步判斷是否越界,第二步判斷頭是否和尾重合。

定義鍵盤控制方法。當使用者按下WASD鍵,貪吃蛇才可改變方向移動且不能逆向移動。(比如開始向上移動,我不能直接按S鍵讓它向下移動)。

按鈕區域

建立屬性:myPanel、暫停、繼續、重新開始、退出。

建立帶參數的構造方法,參數為myPanel.

在構造方法中設定初始位置及大小、建立四個按鈕并添加。

在構造方法裡注冊按鈕監聽。

重寫actionPerformed方法。檢測按下按鈕。

如果按下繼續遊戲,那麼需要重寫設定鍵盤監聽焦點

如果是重新開始遊戲,那麼需要停止目前線程,然後重新生成蛇和食物,并把控制條件還原到初始狀态。最後建立新的線程對象并啟動,最後再設定鍵盤監聽焦點。

代碼擷取

原文:https://www.cnblogs.com/weiXinp/p/14477510.html