C語言構建的鍊錶貪吃蛇

2021-10-07 07:04:11 字數 4371 閱讀 7521

借助遊戲內容分析貪吃蛇所需的功能主要包括這幾塊:

移動游標模組

列印地圖模組和基本規則資訊

讀取最高分檔案
列印初始蛇模組

列印時給予蛇的初始移動方向
產生食物模組

1)、保證食物在地圖內產生

2)、保證食物不能出現在蛇體

蛇的生命狀態判斷模組

1)、撞牆導致死亡

2)、頭撞身體部位死亡

6.執行模組

1)、讓蛇移動

2)、根據按鍵來改變蛇的移動方向

3)、對待分數的增加遊戲難度的增加

4)、蛇在吃食物後分數的增加

7.結束模組

在遇到撞牆或者撞自己部位死亡時結束程式,並進行分數與歷史最高分作比較,最終達到最高分的更新
#include

#include

#include

//控制台輸入和輸出

#include

//視窗函式

#include

#define w 1

//蛇的運動方向w:上 s:下 a: 左 d:右

#define s 2

#define a 3

#define d 4

/*定義全域性變數

*/typedef

struct

place;

//定義座標結構體

typedef

struct zbsnake;

//定義蛇的鍊錶

/*定義全域性鍊錶

*/snake *head,

*p,*q,

*h;//

place food;

//定義食物座標

int score=

0,bestscore,game_flag=

0,ch,sleep=

400;

//定義得分score死亡判斷game_flag方向判斷ch蛇的速度sleep

/*函式宣告

*/void

gotoxy

(int x,

int y)

;//定位游標

void

map_creat()

;//運用定位函式列印地圖

void

ini_snack()

;//隨機產生蛇

void

cre_food()

;//隨機產生食物

void

live_jud_1()

;//判斷自己是否撞牆死亡

void

live_jud_2()

;//判斷自己是否撞到自己

void

move()

;//蛇的移動

void

rungame()

;//遊戲執行

void

gameover()

;//遊戲結束介面

void

changch()

;//改變方向

intcolor

(int c)

;//改顏色函式

/*構建定位函式

*/int

color

(int c)

void

gotoxy

(int x,

int y)

//定位游標

/*列印地圖

*/void

map_creat()

//運用定位函式列印地圖

for(j=

0;j<

26;j++

)gotoxy(54

,10);

printf

("遊戲規則:");

gotoxy(54

,12);

printf

("向上移動:↑\n");

gotoxy(54

,14);

printf

("向下移動:↓\n");

gotoxy(54

,16);

printf

("向左移動:←\n");

gotoxy(54

,18);

printf

("向右移動:→\n");

gotoxy(54

,20);

printf

("吃乙個食物分數加10");

gotoxy(54

,22);

printf

("按空格鍵暫停遊戲");

gotoxy(54

,24);

printf

("按esc直接結束遊戲");

}/*構建初始蛇

*/void

ini_snack()

//產生蛇

p->next=

null;/*

將蛇列印出來

*/h=head;

while

(h!=

null

) ch=w;

//蛇的初始方向}/*

隨機產生食物

*/void

cre_food()

//隨機產生食物

gotoxy

(food.x,food.y)

;color(1

);printf

("$");

//列印食物}/*

判斷是否死亡

*/void

live_jud_1()

//判斷自己是否撞牆死亡

}void

live_jud_2()

//判斷自己是否撞到自己

break;}

q=q->next;}}

/*遊戲進行介面

*/void

move()

score+=10

;cre_food()

;//構建新的食物

}else

gotoxy

(q->next->data.x,q->next->data.y)

;printf

(" ");

//將蛇尾去掉

free

(q->next)

; q->next=

null;}

}if(ch==a)

score+=10

;cre_food()

;}else

gotoxy

(q->next->data.x,q->next->data.y)

;printf

(" ");

free

(q->next)

; q->next=

null;}

}if(ch==s)

score+=10

;cre_food()

;}else

gotoxy

(q->next->data.x,q->next->data.y)

;printf

(" ");

free

(q->next)

; q->next=

null;}

}if(ch==d)

score+=10

;cre_food()

;}else

gotoxy

(q->next->data.x,q->next->data.y)

;printf

(" ");

free

(q->next)

; q->next=

null;}

}live_jud_2()

;//判斷是否撞自己死亡

}void

rungame()

//執行遊戲

}elseif(

getasynckeystate

(vk_escape)

)//輸入esc直接結束遊戲

sleep

(sleep)

;move()

;}}/*

遊戲結束介面

*/void

gameover()

//遊戲結束介面

system

("pause");

exit(0

);}/*

主函式*/

intmain()

C語言貪吃蛇實現 鍊錶學習

以下 片段就是整個源 主要是github上大佬寫的,附上位址 我又在這基礎上優化了點,釋放漏釋放的記憶體,禁止蛇反向運動 include include include include include include define src width 70 define src height 20 ...

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