include
#include
#include //windows程式設計標頭檔案
#include
#include //控制台輸入輸出標頭檔案
#ifndef __cplusplus
typedef 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為按下「↑」所代表的數字
//用來判斷蛇是否吃掉了食物,這一步很重要,涉及到是否會有蛇身移動的效果以及蛇身增長的效果
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);
return 0;
}在這裡插入**片
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檔案,讀取最高紀錄 ...