文章詳情頁
Java 實現貪吃蛇游戲的示例
瀏覽:4日期:2022-08-15 16:14:22
游戲界面基本布局
貪吃蛇是基于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://github.com/XinPingLover/MyCode.git
以上就是Java 實現貪吃蛇游戲的詳細內容,更多關于Java 貪吃蛇的資料請關注好吧啦網其它相關文章!
標簽:
Java
相關文章:
排行榜