做遊戲,學編程(C語言) 9 貪吃蛇

這個案例給出了14級同學大一時實現的貪吃蛇小遊戲,分步驟代碼、遊戲素材可以從百度雲盤下載:pan.baidu.com/s/1c1lYKQ

首先可以打開Exe_final目錄下的Exe_final.dsw工程文件,編譯運行,以下為對應的遊戲動圖效果:

主要實現內容包括:貪吃蛇移動 、道具判定、加速減速、生命條處理、分數處理、暫停處理、鍵盤或滑鼠操控。

代碼中Loop函數主要控制貪吃蛇的移動及每一幀的必須要完成的指令,其中小蛇的移動和轉彎是貪吃蛇遊戲實現的難點。

假設小蛇初始狀態為:

上圖左側是對應遊戲數據的二維數組存儲狀態,右側為小蛇顯示效果,蛇頭為1,蛇身依次加1。

要讓小蛇移動,首先遍歷二維數組所有元素,元素為正 則加1:

對全局變數dir進行判斷,比如dir==1 表示方向向右,則在元素2的右方設置為1,並且把最大元素歸零:

以上就實現了小蛇向右的移動,向其他方向的移動實現類似。

雙人遊戲比較簡單,在二維數組中實現即可:

Loop函數中除了貪吃蛇的移動,還實現了:減速包的隨機出現、加速包的隨機出現、血包的隨機出現、障礙物的隨機出現、蘋果的隨機出現、小爬蟲的移動、無敵,加速,減速的判定。

Game函數是核心判定單元。根據貪吃蛇的移動方向dir的1 2 3 4, 分別對蛇頭的右左上下方的元素進行判定:

是-1則吃了蘋果,蛇身增長 並加分;

是-2則撞牆了,歸零g1 遊戲結束;

是-3則吃了葡萄, 蛇身增長 如果(wudi==0)也就是 並非無敵狀態 g2減少;

是-4則吃了愛心, g2增加 wudi賦值為wuditimen,使貪吃蛇進入無敵狀態 。

吃果子後貪吃蛇的增長,和貪吃蛇的移動差不多,唯一的區別是增長不需要把最大元素歸零。

Show函數:

Start函數:

各個參數的初始化、二維數組a的元素初始化、對圖片樹的輸出、分數顯示、生命值顯示的初始化、生命條的顯示、倒計時畫面

Interact函數:有兩種操作模式 但本質一樣都是對方向dir的修改

第一種 鍵盤 :根據wasd 把dir修改為1(d右)2(a左)3(w上)4(s下)、按p鍵暫停

第二種 滑鼠n:在Loop函數中會計算出蛇頭元素的下標it,jt、根據滑鼠點擊的橫坐標m.x 縱坐標m.y修改dir

hello函數n:顯示封面及遊戲操作 道具使用說明

bye函數n:顯示封底及最終分數

fs函數(記分記血系統):對貪吃蛇生命狀態的判定和死亡提示

ryj函數n:獲取包括滑鼠左鍵在內的任意鍵

同學實現的代碼不是很規範,大家可以先自己嘗試實現,再參考網盤上的分步驟代碼。

推薦閱讀:

黑客自學者工具集成系統推薦與選擇自己喜歡的集成系統
前端組件化開發中的陷阱
為什麼CPU越來越多地採用硅脂而不是焊錫散熱?
如果我想要深入的學習計算機目標跟蹤方向的內容,應該從哪個方面開始入手,比如說看什麼書?
那麼我想知道那些計算機語言的創始人是如何創造這門語言的?

TAG:C编程语言 | 计算机技术 | 游戏开发 |