C/C++編程筆記:C語言貪吃蛇源代碼控制臺(一),會動的那種哦!
前幾天有個同學加我QQ私聊我說他們老師布置了一個貪吃蛇,他不知道怎么寫所以來找我求解,我給他簡單講解了思路和一些難點之后他也能夠自己獨立將項目完成了!考慮到更多同學可能有貪吃蛇上的問題,今天有時間就來寫一下題解。我將分幾步來教大家寫一個貪吃蛇小游戲。由于大家可能C語言未學完,這個教程只涉及數組和函數等知識點。

一、畫地圖
首先我們使用宏定義來定義兩個常數,地圖的高(H)和地圖的寬(W)
#defineH 20
#defineW 20
這樣寫的好處是以后改變地圖的大小就不用更改寫好的代碼了,只要修改下宏定義。節(jié)省了時間又避免改出bug
接下來,我們定義一個二維數組,這個二維數組的每一個值剛好對應了平面的每一個點,這樣就可以方便地自定義地圖了??梢栽O置障礙物什么的了。然后我們用數組a[H][W]來存儲地圖情況,如果a[i][j]==0,就說明第i+1行,第j+1列是空的,如果a[i][j]==1,就說明這個點是障礙物。
然后我們使用下面的代碼來把地圖數組的邊框做出來,就是讓數組邊緣等于1。(int全局變量默認為0)。

這個只是最簡單的地圖,如果你有其他想法可以自由發(fā)揮,畫出自己的地圖。
地圖畫好了,剩下的就是畫出地圖了。我們把畫地圖的過程也寫為一個函數,這樣能使代碼結構更清晰,更容易找出bug。畫地圖就簡單了,就是遍歷整個數組,然后值為0的地方輸出空格,值為1的地方輸出一個符號,符號按自己喜好,我這里使用了#。

然后我們發(fā)現(xiàn)長寬不合適,我們可以修改剛開始的H和W的值。
按自己喜好調整,比如這樣
#defineH 23
#defineW 75
然后看看是不是比剛才好看了。知道宏定義的好處了吧。

好了,到這里為止,我們已經學會了畫地圖。
這只是最簡單的地圖,通過修改地圖數組,我們就能做出很多不一樣的地圖。
下面附上第一步的完整代碼。


二、畫蛇
蛇的身體就是一些點,我們可以用二維數組把這些點的坐標存起來。
先聲明一個足夠大的二維數組。雖然我覺得你們玩不了這么長(手動滑稽)。
int s[H*W][2];
這樣s[0][0]表示蛇頭的i坐標,s[0][1]表示蛇頭的j坐標。s[i][0]表示蛇第i+1個點的i坐標。s[i][1]同理。
然后再聲明一個int變量存儲蛇的長度。然后把這些初始化操作都放進上面init函數里面。
int sLength;? ? ? ? //蛇的長度
sLength=4;? ? ? ? ? //讓蛇的最初長度為4
?然后給剛開始的蛇身幾個初始坐標

然后接下來我們把蛇畫出來,我這里有一個函數,可以實現(xiàn)移動光標到指定點。注:要添加頭文件windows.h
如下:

然后就可以先畫地圖,然后通過移動光標在地圖上畫出蛇。

好,看看效果

蛇確實出來了,但是那個光標很礙事,在init函數開始時加入下面代碼可隱藏關標
CONSOLE_CURSOR_INFO cursor_info = {1, 0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);

這樣就沒有光標了。
到現(xiàn)在為止的代碼。



今天先到這里吧!大家不要著急,下篇文章我會把蛇剩下的部分分享完整!
微信公眾號:C語言編程學習基地,學習C/C++編程知識的小伙伴可以關注UP哦~
另外,UP在主頁上傳了一些學習C/C++編程的視頻教程,有興趣或者正在學習的小伙伴一定要去看一看哦!會對你有幫助的~