第一次用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檔案,讀取最高紀錄 ...