c 貪吃蛇(含小蛇移動和吃到食物增長的演算法原理

2021-10-05 11:10:34 字數 2602 閱讀 7430

關於貪吃蛇我認為最難實現的部分是如何控制小蛇的移動,還有吃到食物後小蛇變長的問題。

這個圖可以解釋:

小蛇移動:

第一步用12345個數字記錄小蛇的位置,然後使所有的小蛇位置數字加一。

第二步使小蛇的最大值位置處變為0,就相當於那個位置消失了。

第三步使最小值的上/下/左/右位置(根據按鍵判斷)的元素變為1。

小蛇吃到食物後變長:

上面的第二步是使最大值變為0,我們可以試想一下 如果吃到食物,最大值就不變為0了,那麼這不就相當於小蛇變長了嗎?這時,我們只需要加乙個if else判斷是否吃到食物即可。

標頭檔案以及全域性變數

#include

#include

#include

#define high 26

#define width 46

int num[high]

[width]=;

//邊框

int movesnake;

//小蛇移動

int food_x, food_y;

//食物

int score;

//計分

防閃屏

void

gotoxy

(int x,

int y)

隱藏游標

void

hidecursor()

;setconsolecursorinfo

(getstdhandle

(std_output_handle)

,&cursor_info)

;}

初始化介面

void

startup()

for(

int j =

0; j < width; j++

)//小蛇初始化

num[high /2]

[width /2]

=1;for

(int i =

1; i <=

4; i++

) movesnake =4;

//初始化蛇的移動方向

hidecursor()

;//初始化食物

food_x =

rand()

%(high -5)

+2; food_y =

rand()

%(width -5)

+2; num[food_x]

[food_y]=-2;}

主介面顯示

void

show()

else

if(num[i]

[j]==-3

)else

if(num[i]

[j]==0)

else

if(num[i]

[j]==1)

else

if(num[i]

[j]>1)

else

if(num[i]

[j]==-2

)}printf

("\n");

}printf

("得分為:%d\n"

,score)

;}

後台操作

void

movesnakepostion()

if(num[i]

[j]==2)

}}if(movesnake ==1)

//向上

if(movesnake ==2)

//向下

if(movesnake ==3)

//向左

if(movesnake ==4)

//向右

if(num[newhead_i]

[newhead_j]==-

2)//當小蛇沒吃到食物

else num[snakeback_i]

[snakeback_j]=0

;//蛇身最大值的元素也就是蛇尾蛇尾變為0,蛇身就相當於長度不變

if(num[newhead_i]

[newhead_j]

>

0|| num[newhead_i]

[newhead_j]==-

1|| num[newhead_i]

[newhead_j]==-

3)else num[newhead_i]

[newhead_j]=1

;}void

back()

人機互動

void

front()

}

主介面

int

main()

}

實現:

C 貪吃蛇二

小菜學習winform 一 貪吃蛇 說到oo可能一說一大堆,這裡面小菜只是簡單的把貪吃蛇抽象出來,先來說蛇,具有的屬性和行為,屬性比如蛇的長度 蛇的寬度 蛇的行動方向等 行為比如是否吃到食物 是否撞牆等,那我們可以抽象乙個蛇的類,這樣實現 1 using system 2using system.c...

C 貪吃蛇設計

class map enum char map row col 地圖 map void drawmap 繪製地圖 bool isvaildpoint int x,int y 1.利用列舉來定義常量,在類外部可以通過作用域解析來獲取列舉常量,便於所有類的交流.2.通過二維陣列儲存地圖,在構造的時候讀取...

C語言貪吃蛇

include include include include include include define screen width 40 遊戲螢幕寬度 define screen length 15 遊戲螢幕長度 define start x 16 螢幕起始x座標 define start y ...