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