求C语言的蛇代码运行。
//
#包含?" 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);
}