零基礎教做貪吃蛇 (3)部分函式講解

2021-10-02 14:11:20 字數 2130 閱讀 3948

為啥子不按照順序先從initmap開始講嘞?因為initmap這個函式需要定點輸出,而且我之前說了,在這個專案中我不會使用「\n」這種來輸出介面,所以我們採用定點輸出的方式,為了方便它的使用,當然是把它打包成乙個函式啦。

這個函式沒啥子講的,只是死套模板罷了,只不過我們把x和y作為函式的輸入就可以了:

void

gotoxy

(int x,

int y)

這樣,我們在主函式中匯入snake.h標頭檔案後就可以直接呼叫這個函式了,而且在snake.c檔案中也是。

如果你大概玩了下這個小遊戲你就會知道,我們在剛開啟這個遊戲的時候,會有個問你玩遊戲還是退出的介面,這個函式就是用來顯示這個介面的。

不知大家還記不記得我們在snake.h裡面定義的乙個ret變數,它就是在這裡用來當這個函式的返回值的。

int

menu()

else

}system

("cls");

//把螢幕清空下,方便接下來的顯示介面

return ret;

//把ret的值返回

這個函式是用來顯示地圖介面的,它用來初始化蛇的各種資訊,果子的座標,和遊戲邊框等地方,是非常重要的函式。我的注釋會打的非常詳細,幫助大家理解

void

initmap

(void

)//初始化地圖

for(j =

0; j

)//初始化寬

for(i =

1; i

1; i++

)//初始化長

這個函式主要是顯示一些遊戲資訊啊神馬的東西與遊戲內容無關,主要是加強遊戲體驗的東西。為了方便,這個函式的入口引數就弄了倆,其他輸出地點的座標直接計算出來,emm至於計算公式,,不用太深究,,慢慢調出來的,主要是為了美觀。

void

printfont

(int x,

int y,

int speed)

else

if(speed ==

175)

else

if(speed ==

150)

else

if(speed ==

100)

else

gotoxy

(x +

2* add, y)

;printf

("上下左右操作鍵分別是:w,s,a,d");

gotoxy

(x +

3* add, y)

;printf

("當吃到自己身體或者撞牆時遊戲結束");

gotoxy

(x +

4* add, y)

;printf

("按空格鍵暫停,在按空格鍵繼續");

}

這個函式主要是用來更新了食物的,它用來判斷食物是否被吃,如果被吃掉了就再隨機出乙個新的食物。。

至於怎麼判斷食物是否被吃掉了,很簡單,直接判斷蛇頭的座標是否和食物的座標一樣就可與了,,emm,,但是後來我玩這個遊戲的時候,發現這個bug,因為食物是全圖生成的,如果生成的食物在蛇的身上,它會隨著蛇的移動,輸出的食物圖示「!」被覆蓋,隨後消失。而且不會生成新的食物。。。說白了,按照上面的邏輯,這個bug就是食物沒了,而且不再生成。

所以我把它的判斷邏輯小改了下——當食物的座標在蛇的身體中時,它才判定食物被吃掉了。

void

updatafood()

}if(iseat)

//當食物被吃了後,再次隨機新的食物

}

好了,今天就先講解這麼多,剩下的明天再講吧,,,畢竟打字打的手有點疼

零基礎教做貪吃蛇 (1)準備知識

大家可以先大概看下這個圖,心裡大概有個底,這樣寫起程式來才不會無從下手。通過上面這個圖,我們可以大致了解到,這次的東西並不怎麼複雜,主要難度都集中在蛇的移動上面。大家剛學完c語言基礎的童鞋可能現在會有些懵逼了,怎麼才能在用c語言輸入能動的東西欸。以前都沒學過這種東西啊,毫無頭緒欸。其實我們遇到的大多...

零基礎教做貪吃蛇 (4)剩餘函式講解

emmm,昨天沒有更新,這個嘛。還是因為stm32的原因,昨天弄它的串列埠通訊弄了一下午加半個晚上,再加上降溫了。手冷,昨天就沒寫。今天因為妹妹開網課了,我又給她把家裡以前的台式拼起來,所以耽誤的不少時間。好了,話不多說,我們來開始今天的主題,這是最後一章了,我會把剩餘的函式都講了它。大家看完後可以...

vb做的貪吃蛇

dim q as integer dim w as integer dim sq as integer dim sw as integer dim cq as integer dim cw as integer dim ss as long dim c as integer dim a as int...