求C语言的蛇代码运行。

//?ConsoleApplication1.cpp:?定义控制台应用程序的入口点。

//

#包含?" stdafx.h "

#包含?& ltstdio.h & gt

#包含?& ltwindows.h & gt

#包含?& lttime.h & gt

#包含?& ltconio.h & gt

#定义?框架_高度?20?//定义?地图?大小

#定义?框架_宽度?40

#定义?向上?什么?//定义?操作?键

#定义?下来?“s”

#定义?向左?一个

#定义?对吗?迪

int?我,?j,?k;

夏尔?ch?=?向上;?//初始?方向

int?成长?=?0;?//标志:?如果?蛇?生长

struct?食物?{

int?x;

int?y;

}食物;

struct?蛇?{

int?x[50];

int?y[50];

int?len

int?速度;

}蛇;?//snake[0]?是吗?头

作废?init _ map(void);

作废?更新_食物(void);

作废?move _ snake(void);

int?is _ alive(void);

作废?get _ speed(void);

作废?gotoxy(int?x,?int?y);

int?主()

{

init _ map();?//初始化地图

什么时候?(1)

{

更新_食物();

//它生产食物吗?

get _ speed();?//获得速度

move _ snake();?//移动蛇的身体

睡眠(snake . speed);

//移动速度

如果?(!(is_alive()))

//蛇的生死(撞墙还是吃)

打破;

}

printf("游戏?完了!”);

_ getch();

回归?0;

}

//初始化

作废?初始化映射(无效)

{

//初始?食物

srand(time(NULL));

food.x?=?兰德()?%?(frame_height?-?2)?+?1;

食物. y?=?兰德()?%?(frame_width?-?2)?+?1;

gotoxy(food.x,?food . y);

printf("!");

//初始?蛇

snake.x[0]?=?框架_高度?/?2;

snake.y[0]?=?框架_宽度?/?2;

gotoxy(snake.x[0],?snake . y[0]);

printf(“@”);

斯内克.莱恩?=?3;

蛇。速度?=?200;

为了什么?(k?=?1;?k & ltsnake.len?k++)

{

snake.x[k]?=?snake.x[k?-?1]?+?1;

snake.y[k]?=?snake.y[k?-?1];

gotoxy(snake.x[k],?snake . y[k]);

printf(“@”);

}

//初始?酒吧

为了什么?(j?=?0;?j & lt框架_宽度;?j++)

{

gotoxy(0,j);

printf(" # ");

gotoxy(frame_height?-?1,?j);

printf(" # ");

}

为了什么?(我?=?1;?我& lt框架_高度?-?1;?i++)

{

gotoxy(我,0);

printf(" # ");

gotoxy(我,框架_宽度?-?1);

printf(" # ");

}

}

//生成?食物

作废?更新_食物()

{

如果?(snake.x[0]?==?食品& amp& ampsnake.y[0]?==?food.y)

{

srand(time(NULL));

food.x?=?兰德()?%?(frame_height?-?2)?+?1;

食物. y?=?兰德()?%?(frame_width?-?2)?+?1;

gotoxy(food.x,?food . y);

printf("!");

snake . len++;

成长?=?1;

}

}

//移动?蛇

作废?move_snake()

{

如果?(_kbhit())

ch?=?_ getch();

如果?(!成长)

{

gotoxy(snake.x[snake.len?-?1],?snake . y【snake . len?-?1]);

printf("?);

}

为了什么?(k?=?斯内克.莱恩?-?1;?k & gt0;?k -)

{

snake.x[k]?=?snake.x[k?-?1];

snake.y[k]?=?snake.y[k?-?1];

}

切换?(ch)

{

案子?向上:?snake . x[0]-;?打破;

案子?向下:?snake . x[0]++;?打破;

案子?左:?snake . y[0]-;?打破;

案子?对不对:?snake . y[0]++;?打破;

默认:?打破;

}

gotoxy(snake.x[0],?snake . y[0]);

printf(“@”);

成长?=?0;

gotoxy(frame_height,?0);

}

//是?活着的

int?is_alive(void)

{

如果?(snake.x[0]?==?0?||?snake.x[0]?==?框架_高度?-?1?||?snake.y[0]?==?框架_宽度?-?1?||?snake.y[0]?==?0)

回归?0;

为了什么?(k?=?1;?k & ltsnake.len?k++)

如果?(snake.x[k]?==?snake.x[0]?& amp& amp?snake.y[k]?==?snake.y[0])

回归?0;

回归?1;

}

//速度?向上

作废?获取_速度(无效)

{

如果?(snake.len?& lt=?6)

蛇。速度?=?200;

不然呢?如果?(snake.len?& lt=?10)

蛇。速度?=?100;

不然呢?如果?(snake.len?& lt=?20)

蛇。速度?=?50;

不然呢?如果?(snake.len?& lt=?30)

蛇。速度?=?30;

不然呢?蛇。速度?=?20;

}

//移动?光标

作废?gotoxy(int?x,?int?y)

{

手柄?hout

坐标?cor

豪特?=?GetStdHandle(STD _ OUTPUT _ HANDLE);

天哪。x?=?y;

天哪。y?=?x;

SetConsoleCursorPosition(hout,cor);

}