C語言寫貪吃蛇與智慧型蛇

2021-08-14 06:38:58 字數 4235 閱讀 6154

貪吃蛇

寫手動貪吃蛇的時候我用了比較醜陋的方式

#include 

#include

#include

#include

#include

#include

#include

void getfood(char map[25])

int main() ;

getfood(map);

intm; for(m = 0;m

<20;++m)

intlength = 5;

int snakey[400] = ;

int snakex[400] = ;

for( ;length != 0;)

-- snakey[0];

++ length;

getfood(map);

continue;

}if(map[snakey[0]-1][snakex[0]] == '*' || map[snakey[0]-1][snakex[0]] == 'x')

for(m = 0;m

< length - 1;++ m)

map[snakey[m]][snakex[m]] = ' ' ;

map[snakey[m-1]][snakex[m-1]] ='x';

for(m = 0;m

< length - 1;++ m)

-- snakey[0];

} if(dir == 's' || dir =='s')

++ snakey[0];

length++;

getfood(map);

continue;

}if(map[snakey[0]+1][snakex[0]] == '*' || map[snakey[0]+1][snakex[0]] == 'x')

for(m = 0;m

< length - 1;++ m)

map[snakey[m]][snakex[m]] = ' ' ;

map[snakey[m-1]][snakex[m-1]] ='x';

for(m = 0;m

< length - 1;++ m)

++ snakey[0];

}if(dir == 'a' || dir == 'a')

-- snakex[0];

++ length;

getfood(map);

continue;

}if(map[snakey[0]][snakex[0]-1] == '*' || map[snakey[0]][snakex[0]-1] == 'x')

for(m = 0;m

< length - 1;++ m)

map[snakey[m]][snakex[m]] = ' ' ;

map[snakey[m-1]][snakex[m-1]] ='x';

for(m = 0;m

< length - 1;++ m)

-- snakex[0];

}if(dir == 'd' || dir == 'd')

++ snakex[0];

++ length;

getfood(map);

continue;

}if(map[snakey[0]][snakex[0]+1] == '*' || map[snakey[0]][snakex[0]+1] == 'x')

for(m = 0;m

< length - 1;++ m)

map[snakey[m]][snakex[m]] = ' ' ;

map[snakey[m-1]][snakex[m-1]] ='x';

for(m = 0;m

< length - 1;++ m)

++ snakex[0];

}system("cls");

for(m = 0;m

<20;++m)

}printf("game over!");

}

寫智慧型蛇的時候我參照了網上大神的**,整體風格好了很多

智慧型蛇

#include 

#include

#include

#include

#include

#include

#include

void food();

void show();

void move();

void turn();

void check();

void ini();

void calculate();

int movable[4] = ; //陣列的下標表示方向,0123分別表示上下左右,下同

int distance[4] = ;

int dy[4] = ;

int dx[4] = ;

int sum = 5; //蛇總長度

int over = 0;

int speed;

int foodx, foody; //食物的座標

char

map[17][17];

struct snake a[100];

void ini()

a[0].x = 1; a[0].y = 1; //地圖左上角設定一條長度為5的蛇

a[1].x = 1; a[1].y = 2;

a[2].x = 1; a[2].y = 3;

a[3].x = 1; a[3].y = 4;

a[4].x = 1; a[4].y = 5; a[4].dir = 1;

srand(time(0));

for (i = 0; i < 17; i++)

}for (i = 1; i < 16; i++)

}//map[6][5] = '*'; map[6][6] = '*'; map[6][7] = '*';

//map[7][5] = '*'; map[7][7] = '*';

map[a[4].x][a[4].y] = 'h'; //設定蛇頭

for (i = 0; i < sum - 1; i++)

food();

calculate();

}void show()

printf("\n");

}while (1)

else

if (ch == 114) }}

system("cls"); //清屏

for (i = 0; i < 17; i++)

printf("\n");

}calculate(); //計算並記錄蛇頭與食物距離

}}void food()

}}void move()

else

map[a[i].x][a[i].y] = 'x'; //把地圖上蛇身座標處的字元設定成『x』

}a[sum - 1].x = a[sum - 1].x + dx[a[sum - 1].dir]; //蛇頭按當前方向移動一格

a[sum - 1].y = a[sum - 1].y + dy[a[sum - 1].dir];

map[a[sum - 1].x][a[sum - 1].y] = 'h'; //把地圖上蛇頭座標處的字元設定成『h』

}else

for(i = 0; i < 4; i++) else else }}

}void check()

printf("\n");

}printf("input 'r' to restart\ninput 'q' to quit\n");

over = 1;}}

else

if (map[x][y] == 'o')

}void turn()

}switch (k)

}void calculate() else

}}int main()

貪吃蛇高階 智慧型蛇

做完了人工操控的貪吃蛇,由於太懶了 我們來設計乙個可以自動尋找食物的智慧型蛇吧w 思路 我們只需對原來人工操作的貪吃蛇 稍作修改即可。首先,我們要讓蛇能夠根據食物的位置自動判斷自己移動的方向。注意,此時如果只是簡單判斷蛇的head與食物的距離,蛇就非常容易把自己繞死。這時有乙個比較簡單的思路 遍歷全...

智慧型貪吃蛇

include include include include include include include include void food void show void move void turn void check void ini void calculate int movable...

C語言貪吃蛇

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