C語言實現貪吃蛇

2021-09-24 20:34:59 字數 3401 閱讀 3875

#include

#include

#include

#include

#include

#define up 『w』

#define down 『s』

#define left 『a』

#define right 『d』

#define quit 『q』

//函式宣告

void welcome(); //開始介面

void chose(); //選擇難度

void creatmap(); //建造地圖

void creatbar(); //建立障礙物

void gotoxy(int x, int y); //移動游標

void creatsnake(); //建立蛇的身體

void creatfood(); //隨機產生食物

void creatpoint(); //隨機建立獎勵性食物

int keyboard(); //從鍵盤獲得輸入訊號

void move_snake(); //蛇的移動

void eatfood(); //蛇吃到食物後身長

void snakebody(int a,int b); //蛇在移動中的座標的變換

int endgame(); //判斷遊戲是否違反規則來結束遊戲

void end(); //結束介面

//結構體

typedef struct snakes //蛇身結構體

snake;

struct foods //食物結構體

food;

struct points //獎勵性食物結構體

point;

struct bars //障礙物結構體

bar;

//全域性變數

snake *head,*tail;

int score = 0;

char key = 1; //key用來接收使用者按下的按鍵

int speed=200,count=0; //speed為蛇的速度,count用來計算獎勵性食物出現的次數

//主函式

int main()

//開始介面

void welcome()

}//難度選擇,通過改變蛇的移動速度改變難度

void chose()

welcome();

}//座標改變

void gotoxy(int x,int y)

//地圖建立

void creatmap()

for(i=1;i<26;i++)

}//蛇身建立

void creatsnake()

//食物建立

void creatfood()

while(1) //確保食物不會與蛇身重合

if(food.xbar.x&&food.ybar.y) //確保食物不會與障礙物重合

goto lable;

if(point.xfood.x&&point.yfood.y) //確保食物不會與獎勵性食物重合

goto lable;

gotoxy(food.x,food.y);

printf(「●」);

}//建立獎勵性食物

void creatpoint()

while(1) //確保獎勵性食物不會與蛇身重合

if(point.xbar.x&&point.ybar.y) //確保獎勵性食物不會與障礙物重合

goto lable1;

if(point.xfood.x&&point.yfood.y) //確保獎勵性食物不會與食物重合

goto lable1;

gotoxy(point.x,point.y);

printf(「★」);

}//建立障礙物

void creatbar()

while(1) //確保障礙物不會與蛇身重合

if(bar.x == food.x&&bar.y food.y) //確保障礙物不會與食物重合

goto lable2;

if(bar.xpoint.x&&bar.ypoint.y) //確保障礙物不會與獎勵性食物重合

goto lable2;

gotoxy(bar.x,bar.y);

printf("##");

}//從鍵盤接收按鍵,接收到按鍵則返回1

int keyboard()

move_snake();

eatfood();

}switch(key)

if(key==『s』)

key=『w』;

break;

case down:

if(_kbhit())

if(key==『w』)

key=『s』;

break;

case left:

if(_kbhit())

if(key==『d』)

key=『a』;

break;

case right:

if(_kbhit())

if(key==『a』)

key=『d』;

break;

case quit:

key=『q』;

break;

}move_snake();

eatfood();

}return 1;

}//蛇的移動

void move_snake()

switch(key) //通過從鍵盤接收的按鍵改變蛇的移動方向

p = head;

while(1) //列印蛇身,同時列印右邊的提示

sleep(speed); //sleep函式設定蛇的移動速度

}//吃了食物後的變化

void eatfood()

}if (head->x == food.x&&head->y == food.y) //判斷蛇頭是否吃到了食物,吃到了則伸長

p->next = add; //在蛇身末尾加乙個節點

add->next = tail;

score+=10; //每吃到乙個食物加10分}}

//若蛇改變移動方向的座標改變

void snakebody(int a,int b)

p = head->next;

p->x=a;

p->y=b;

}//遊戲結束的條件,返回0則表示遊戲結束

int endgame()

if(head->xbar.x&&head->ybar.y) //判斷是否撞到障礙物

snake *p = head->next;

while(1)

p = p->next;

}return 1;

}//遊戲結束介面

void end()

求一下積分

C語言實現貪吃蛇

貪吃蛇是我們耳熟能詳的遊戲,遊戲思路很簡單,我們操縱一條蛇在螢幕上游走尋找食物,當吃到食物時蛇就會變長,當蛇頭碰到牆壁或者自己的身體時,此時蛇就會死亡,而遊戲也就結束了。那麼我們設計遊戲的時候,需要注意三點 1 及時重新整理蛇的位置 2 蛇吃到食物時,蛇的身體會變長,同時及時重新整理新的食物 3 蛇...

貪吃蛇 C語言實現

首先 必備知識棧 由於是用c實現,c的基礎就不廢話了 1.鍊錶相關知識的熟練使用 2.動態記憶體的簡單使用與釋放方法 3.隨機數的生成與儲存 4.監聽鍵盤函式的使用 5.window.h中基本的控制台函式 6.時間函式的簡單應用 其次 下面是實現的具體 有詳細的注釋解釋 pragma comment...

C語言實現貪吃蛇

include include easyx圖形庫 include include 視窗大小 enum wincoord 座標 typedef struct coordinate coord 蛇struct snake snake 食物 struct food food 方向 enum positio...