大神版本C語言貪吃蛇

2021-10-04 11:26:05 字數 2963 閱讀 8170

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