上一次用construct2做了一款類似打飛機的遊戲,這次用C語言寫一個簡單的命令行窗口遊戲–貪吃蛇。
比起面向對象編程的construct2,用面向過程的C語言寫起來自然更有難度。
考慮到程序的複雜性。我決定先用置頂向下的方法分析一下貪吃蛇程序所需的代碼。
學習記錄
複雜的程序要儘量分解成小問題
0.主程序
如果 遊戲還在運行
打印地圖
輸入控制指令
讓蛇運動
打印地圖
否則
讓遊戲結束.
1.打印遊戲界面
我們將整個遊戲地圖(包括牆,空地,蛇和食物)儲存在一個二維數組裏。然後逐行進行打印即可。當數組裏的數據不斷更新,我們不斷清屏打印地圖出來時,就可以讓人的眼睛以爲是連續的動畫畫面。
學習難點記錄:
打印地圖時是(Y,X)型的打印,而不是熟悉的(X,Y)座標。
清屏的操作。
2.控制蛇移動
我們通過鍵盤上的”WSAD”來對應蛇移動方向的“上下左右”。
然後在蛇走之前先判斷蛇的下一步是什麼,如果是牆或者是自己的身體,則讓蛇死亡,如果是食物則讓蛇長長一節。
3.放置食物
我們採用隨機函數來產生食物的座標,若新的座標上已有物體,則重新生成
學習難點記錄
控制蛇的長大,食物的隨機產生
智能蛇
但是這樣的貪吃蛇並不能自己移動,所以我們得藉助kbhit函數。該函數能檢查是否有鍵盤輸入但是不阻止weile循環的繼續,這樣蛇就能動了。
此外,我們還可以寫一個讓蛇自動跑的智能算法。
讓蛇判斷四個方向哪個是可行的並且能最快到達食物。
學習難點
無阻塞的輸入控制
蛇的智能判斷
放張動圖看下效果吧。