C語言控制面板貪吃蛇

2021-08-18 17:46:49 字數 2212 閱讀 1421

第一次用c語言寫貪吃蛇
#include#include#include#include#include#define n 27 //邊長 2個單位存放邊界 

#define m 52

#define circle 1 //主迴圈

#define l 1250

void init_map(char map[m]);

void init_snake(char map[m]);

void init_food(char map[m],int a,int b);

void show_map(char map[m]);

void snake_move(char map[m],char c);

void reload(char map[m]);

struct food

food;

struct snake

snake;

void init_map(char map[m])

map[m][n] = ' ';

if(ch == 'd') snake.body[0].y++;

if(ch == 'w') snake.body[0].x--;

if(ch == 'a') snake.body[0].y--;

if(ch == 's') snake.body[0].x++;

}void reload(char map[m])

system("cls");

show_map(map);

}int main()

,ch;

int a,b,c,d;

int m,n,i;

srand(time(null));

a = (rand() % 25) + 1;

b = (rand() % 50) + 1;

init_snake(map,a,b);

srand(time(null));

c=((rand()+10) % 25) + 1;

d=((rand()+10) % 50) + 1;

while(map[c][d]=='a')

///初始函式及資料

init_map(map);

init_food(map,c,d);

food.iseaten = 0;

snake.exist = 1;

//開始主迴圈

while(circle)

init_food(map,c,d);

}if(kbhit())

sleep(50);

m = snake.body[0].x;

n = snake.body[0].y;

if(m == c && n == d && food.iseaten==0)

if(snake.direction == 's') snake.body[0].x++;

if(snake.direction == 'w') snake.body[0].x--;

if(snake.direction == 'a') snake.body[0].y--;

if(snake.direction == 'd') snake.body[0].y++;

reload(map);

}system("cls");

} return 0;

}

c語言是乙個面對過程的高階語言。

所以寫貪吃蛇,有以下幾個難點:

1. 蛇的移動。

2. 食物生成以及蛇變長。

第一代貪吃蛇我實現的方式有:

1. 地圖用二維座標表示。

2. 利用不斷重新整理螢幕的方式達到動態移動。

3. 建立結構體來儲存蛇的位置,長度,方向。其中蛇的位置又用乙個子結構(食物結構體裡食物的座標x,y)來表示。

4. 重新整理地圖前,將蛇的位置資訊傳給二維座標,然後用'a'列印出來。

5. 蛇的移動類似佇列,後端的座標資訊=前端的座標資訊,當蛇移動或者轉向時,只需改變蛇頭的座標資訊。

我在編寫時出現的問題:

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 ...

C語言 貪吃蛇

include include include define framewidght 22 define frameheight 22 short generaterandnumber short a,short b void posconsolecursor short x,short y voi...

C語言貪吃蛇

親測devc 編譯器完美執行 define crt secure no warnings include include include include void readini file fphead,int score,char argv 建立或開啟乙個和執行檔案對應的ini檔案,讀取最高紀錄 ...