樱花视频在线观看-西西人体大胆4444ww张筱雨-久久网免费视频-国产99页-91高清视频在线-日日干夜夜干-91社区视频-中文高清av-久久成人国产-亚洲日韩欧洲乱码av夜夜摸-97人人射-亚洲视频观看-理论片亚洲-亚洲精品99999-免费能看的黄色片-精人妻无码一区二区三区-奇米影视播放器

游戲產(chǎn)業(yè)研究網(wǎng)

找一個(gè)貪吃蛇游戲

找一個(gè)貪吃蛇游戲

看看這個(gè)是不是?

devc++貪吃蛇小游戲

#include<graphics.h>

#include<stdlib.h>

#include<dos.h>

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define DOWN 0x5000

#define UP 0x4800

#define ESC 0x011b

int i,key;

int score=0;

int gamespeed=32000;

struct Food /*食物的結(jié)構(gòu)體*/

{

int x; /*食物的橫坐標(biāo)*/

int y; /*食物的縱坐標(biāo)*/

int yes; /*食物是否出現(xiàn)的變量*/

}food;

struct Snack /*蛇的結(jié)構(gòu)體*/

{

int x[N];

int y[N];

int node; /*蛇的節(jié)數(shù)*/

int direction; /*蛇的方向*/

int life; /*蛇的生命,0活著,1死亡*/

}snake;

void Init(void); /*圖形驅(qū)動(dòng)*/

void Close(void); /*關(guān)閉游戲函數(shù)*/

void DrawK(void); /*畫圖函數(shù)*/

void GameOver(void);/*輸出失敗函數(shù)*/

void GamePlay(); /*游戲控制函數(shù) 主要程序*/

void PrScore(void); /*分?jǐn)?shù)輸出函數(shù)*/

DELAY(char ch)/*調(diào)節(jié)游戲速度*/

{

if(ch=='3')

{

delay(gamespeed); /*delay是延遲函數(shù)*/

delay(gamespeed);

}

else if(ch=='2')

{

delay(gamespeed);

}

}

Menu()/*游戲開(kāi)始菜單*/

{

char ch;

printf(Please choose the gamespeed:\n);

printf(1-Fast 2-Normal 3-Slow\n);

printf(\nPlease Press The numbers..\n);

do

{ch=getch();}

while(ch!='1'&&ch!='2'&&ch!='3');

clrscr();

return(ch);

}

/*主函數(shù)*/

void main(void)

{

int ch;

ch=Menu();

Init();

DrawK();

GamePlay(ch);

Close();

}

void Init(void)

{

int gd=DETECT,gm;

initgraph(&gd,&gm,c:\\tc);

cleardevice();

}

void DrawK(void)

{

setcolor(11);

setlinestyle(SOLID_LINE,0,THICK_WIDTH);

for(i=50;i<=600;i+=10)

{

rectangle(i,40,i+10,49); /*畫出上邊框*/

rectangle(i,451,i+10,460); /*畫出下邊框*/

}

for(i=40;i<=450;i+=10)

{

rectangle(50,i,59,i+10); /*畫出左邊框*/

rectangle(601,i,610,i+10); /*畫出右邊框*/

}

}

void GamePlay(char ch)

{

randomize(); /*隨機(jī)數(shù)發(fā)生器*/

food.yes=1; /*1代表要出現(xiàn)食物,0表示以存在食物*/

snake.life=0;

snake.direction=1;

snake.x[0]=100;snake.y[0]=100;

snake.x[1]=110;snake.y[1]=100;

snake.node=2;

PrScore();

while(1) /*可以重復(fù)游戲*/

{

while(!kbhit()) /*在沒(méi)有按鍵的情況下蛇自己移動(dòng)*/

{

if(food.yes==1) /*需要食物*/

{

food.x=rand()%400+60;

food.y=rand()%350+60; /*使用rand函數(shù)隨機(jī)產(chǎn)生食物坐標(biāo)*/

while(food.x%10!=0)

food.x++;

while(food.y%10!=0)

food.y++; /*判斷食物是否出現(xiàn)在整格里*/

food.yes=0; /*現(xiàn)在有食物了*/

}

if(food.yes==0) /*有食物了就要顯示出來(lái)*/

{

setcolor(GREEN);

rectangle(food.x,food.y,food.x+10,food.y-10);

}

for(i=snake.node-1;i>0;i--) /*貪吃蛇的移動(dòng)算法*/

{

snake.x[i]=snake.x[i-1];

snake.y[i]=snake.y[i-1]; /*貪吃蛇的身體移動(dòng)算法*/

}

switch(snake.direction) /*貪吃蛇的頭部移動(dòng)算法,以此來(lái)控制移動(dòng)*/

{

case 1:snake.x[0]+=10;break;

case 2:snake.x[0]-=10;break;

case 3:snake.y[0]-=10;break;

case 4:snake.y[0]+=10;break;

}

for(i=3;i<snake.node;i++) /*判斷是否頭部與身體相撞*/

{

if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])

{

GameOver();

snake.life=1;

break;

}

}

/*下面是判斷是否撞到墻壁*/

if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455)

{

GameOver();

snake.life=1;

}

if(snake.life==1) /*如果死亡就退出循環(huán)*/

break;

if(snake.x[0]==food.x&&snake.y[0]==food.y) /*判斷蛇是否吃到食物*/

{

setcolor(0);

rectangle(food.x,food.y,food.x+10,food.y-10); /*吃的食物后用黑色將食物擦去*/

snake.x[snake.node]=-20;snake.y[snake.node]=-20; /*現(xiàn)把增加的一節(jié)放到看不到的地方去*/

snake.node++;

food.yes=1;

score+=10;

PrScore();

}

setcolor(4); /*每次移動(dòng)后將后面的身體擦去*/

for(i=0;i<snake.node;i++)

rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);

delay(gamespeed);

DELAY(ch);

setcolor(0);

rectangle(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);

}

if(snake.life==1)

break;

key=bioskey(0); /*接受按鍵*/

if(key==ESC)

break;

else

if(key==UP&&snake.direction!=4)/*判斷是否改變方向*/

snake.direction=3;

else

if(key==RIGHT&&snake.direction!=2)

snake.direction=1;

else

if(key==LEFT&&snake.direction!=1)

snake.direction=2;

else

if(key==DOWN&&snake.direction!=3)

snake.direction=4;

}

}

void GameOver(void)

{

cleardevice();

setcolor(RED);

settextstyle(0,0,4);

outtextxy(200,200,GAME OVER);

getch();

}

void PrScore(void)

{

char str[10];

setfillstyle(SOLID_FILL,YELLOW);

bar(50,15,220,35);

setcolor(6);

settextstyle(0,0,2);

sprintf(str,scord:%d,score);

outtextxy(55,20,str);

}

void Close(void)

{

getch();

closegraph();

沙洋县| 屏东县| 建瓯市| 华容县| 都兰县| 金川县| 舞钢市| 淳安县| 丁青县| 广灵县| 西乡县| 灵武市| 渑池县| 义乌市| 德兴市| 岐山县| 昌黎县| 佛山市| 乌苏市| 峨边| 晋州市| 安顺市| 应用必备| 饶阳县| 九江县| 大新县| 当雄县| 湟源县| 繁峙县| 闽侯县| 丹阳市| 湖州市| 正安县| 洪江市| 万宁市| 开封市| 昌图县| 平乡县| 博白县| 南江县| 类乌齐县|