c語言 貪吃蛇注釋超完整

2021-10-08 23:26:50 字數 3612 閱讀 7198

#include

#include

#include

//windows程式設計標頭檔案

#include

#include

//控制台輸入輸出標頭檔案

#ifndef __cplusplus

//在標頭檔案中實用#ifndef #define #endif能避免標頭檔案的重定義。

//第一次編譯時,編譯#ifndef和 #endif中的內容

typedef

char bool;

//給char乙個新名字bool

#define false 0

#define true 1

#endif

//將游標移動到控制台的(x,y)座標點處

void

gotoxy

(int x,

int y)

#define snakesize 100

//蛇的身體最大節數

#define mapwidth 78

//寬度

#define mapheight 24

//高度

//食物的座標

struct

food;

//蛇的相關屬性

struct

snake;

//繪製遊戲邊框

void

drawmap()

;//隨機生成食物

void

createfood()

;//按鍵操作

void

keydown()

;//蛇的狀態

bool snakestatus()

;//從控制台移動游標

void

gotoxy

(int x,

int y)

;int key =72;

//表示蛇移動的方向,72為按下「↑」所代表的數字

//上 tmp=224 tmp2=72

//下 tmp=224 tmp2=80

//左 tmp=224 tmp2=75

//右 tmp=224 tmp2=77

//用來判斷蛇是否吃掉了食物,這一步很重要,涉及到是否會有蛇身移動的效果以及蛇身增長的效果

int changeflag =0;

int sorce =0;

//記錄玩家的得分

int i;

void

drawmap()

//列印左右邊框

for(i =

1; i < mapheight; i++

)//隨機生成初試食物

while(1

)//將游標移到食物的座標處列印食物

gotoxy

(food.x, food.y)

;printf

("*");

//設定蛇的屬性

snake.len =3;

snake.speed =

200;

//在螢幕中間生成蛇頭

snake.x[0]

= mapwidth /2+

1;//x座標為偶數

snake.y[0]

= mapheight /2;

//列印蛇頭

gotoxy

(snake.x[0]

, snake.y[0]

);printf

("■");

//生成初試的蛇身

for(i =

1; i < snake.len; i++

)//列印完蛇身後將游標移到螢幕最上方,避免游標在蛇身處一直閃爍

gotoxy

(mapwidth -2,

0);return;}

void

keydown()

/* *蛇移動時候先擦去蛇尾的一節

*changeflag為0表明此時沒有吃到食物,因此每走一步就要擦除掉蛇尾,以此營造乙個移動的效果

*為1表明吃到了食物,就不需要擦除蛇尾,以此營造乙個蛇身增長的效果

*/if

(changeflag ==0)

//將蛇的每一節依次向前移動一節(蛇頭除外)

for(i = snake.len -

1; i >

0; i--

)//蛇當前移動的方向不能和前一次的方向相反,比如蛇往左走的時候不能直接按右鍵往右走

//如果當前移動方向和前一次方向相反的話,把當前移動的方向改為前一次的方向

if(pre_key ==

72&& key ==80)

key =72;

if(pre_key ==

80&& key ==72)

key =80;

if(pre_key ==

75&& key ==77)

key =75;

if(pre_key ==

77&& key ==75)

key =77;

/** *控制台按鍵所代表的數字

*「↑」:72

*「↓」:80

*「←」:75

*「→」:77

*///判斷蛇頭應該往哪個方向移動

switch

(key)

//列印出蛇頭

gotoxy

(snake.x[0]

, snake.y[0]

);printf

("■");

gotoxy

(mapwidth -2,

0);//由於目前沒有吃到食物,changflag值為0

changeflag =0;

return;}

void

createfood()

}//隨機生成的食物不能橫座標為奇數,也不能在蛇身,否則重新生成

if(flag && food.x %2==

0)break;}

//繪製食物

gotoxy

(food.x, food.y)

;printf

("*");

snake.len++

;//吃到食物,蛇身長度加1

sorce +=10

;//每個食物得10分

snake.speed -=5

;//隨著吃的食物越來越多,速度會越來越快

changeflag =1;

//很重要,因為吃到了食物,就不用再擦除蛇尾的那一節,以此來造成蛇身體增長的效果

}return;}

bool snakestatus()

return true;

}int

main()

gotoxy

(mapwidth /

2, mapheight /2)

;printf

("game over!\n");

gotoxy

(mapwidth /

2, mapheight /2+

1);printf

("本次遊戲得分為:%d\n"

, sorce)

;sleep

(5000);

return0;

}

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