這是乙個很早之前做的專案,今天突然在資料夾中看到,突然有想去試一下這個小遊戲,就給它執行了一遍,順便回味了一下當初寫這個專案的經歷。
在我編寫的遊戲中的蛇是用乙個雙向鍊錶來實現的。為什麼要選擇用雙向鍊錶呢?
1.使用乙個帶頭節點和尾節點的雙向鍊錶可以把蛇身體的每乙個結點用乙個鍊錶節點來表示。
2.在蛇向前移動的過程中,可以在蛇頭部位新增乙個節點,而把蛇尾的乙個節點刪去,這樣的話就模擬出了蛇的前進。
3.當蛇吃到食物時,只需要取消刪除最後乙個節點,這樣蛇既向前移動了乙個單位,而蛇身也增加了乙個單位的長度。
4.最後乙個,使用雙向鍊錶而不用單鏈表是因為用雙向鍊錶可以更好的記錄蛇尾的節點,在刪除最後乙個節點的時候操作也會變得方便很多。
總的而言,雙向鍊錶這一資料結構對我的貪吃蛇遊戲幫助也是很大的。當然,如果不選擇用雙向鍊錶的話,佇列等資料結構應該也是可以的。
說到遊戲的具體實現,很大一部分在上面選用雙向鍊錶的原因中已經有所涉及。那麼怎麼判斷遊戲失敗及得分情況也是**中比較重要的一部分。首先,關於吃到食物得分。在**中,預先定義了那麼兩個結構體,乙個是用來代表方向的(x和y兩個方向),另乙個是用來代表鍊錶節點的,用來確定蛇的位置。當蛇頭的下乙個位置(當前位置加上運動方向)正好是食物的位置時,便吃到食物,進行加分;而當蛇頭的下乙個位置正好是四周牆壁的位置時,則碰撞身亡。還有另一種情況是蛇碰到了自己的身體,具體實現方法是這樣的:之前每乙個蛇的身體部位都會顯示乙個**『*』**,用以直觀的顯示蛇的身體,當判斷到蛇頭的下乙個位置處有**『*』**時,即碰撞到自身,遊戲失敗,結束。
QT專案 貪吃蛇
學習qt之後便找了貪吃蛇這個小專案來練習,因為沒有使用ui,因此在繪製方面工程量較大 首先了解貪吃蛇的遊戲邏輯 1.食物隨機出現,蛇頭與蛇尾隨機 完成遊戲初始化 2.蛇碰到食物蛇身變長 3.不按鍵時蛇按照當前方向前進 4.按鍵轉向 5.蛇觸碰到自己和邊緣遊戲結束 第一階段初步完成時,完成情況如下 第...
整理專案 貪吃蛇
從今天開始,我要整理整理之前學習的時候寫的一些小demo了和記的一些重點筆記了,自己也順便複習一下 回憶一下當初的主要思路 1 頁面分為兩個區域 使用者介面區和遊戲區 2 使用者介面區有顯示得分功能和開始 暫停 重新遊戲按鈕 3 用div css布局規劃頁面 4 建立地圖 蛇 食物 5 用鍵盤方向鍵...
《結對 貪吃蛇遊戲 結對專案總結》
首先安裝pygame,可以使用pip安裝pygame pip install pygame 之所以用python實現貪吃蛇遊戲 感覺很有意思,發現python非常靈活,應用比較廣泛,通重載入模組,可以完成很多功能。看了一些關於基於貪吃蛇的python的各種方法,最後進行的完整的實現,將其中的思路進行...