求解贪吃蛇如何动起来
程序代码:#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#define LEFT L
#define RIGHT R
#define UP U
#define DOWN D
void init();
void show();
int start();
void creat();
void move();
void judge();
//蛇的初始坐标及食物的坐标,蛇的长度
int m=0,n=0,z,w,count=0;
const char Shead='@';
const char Sbody='#';
const char Sfood='*';
int a[15][15]={0};
bool Food=true;
char c;
static int i;
int main()
{
init();
start();
judge();
getch();
return 0;
}
void init()
{
printf("\t\t贪吃蛇游戏\n");
srand(time(0));
//蛇的初始坐标及食物的初始坐标,
//随机产生蛇头
m=rand()%15;
n=rand()%15;
a[m][n]=Shead;
//随机产生食物
z=rand()%15;
w=rand()%15;
if(m==z&&n==w)
{
z=rand()%15;
w=rand()%15;
}
a[z][w]=Sfood;
show();
printf("Press any button to start:\n");
Food=false;
putchar('\n');
}
//开始游戏
int start()
{
int count=0;
if(m!=z&& n!=w)
move();
else
{
Food=true;
creat();
move();
}
_sleep(500);
system("CLS");
show();
return 0;
}
//游戏移动
void move()
{
getch();
if(kbhit() != 0) //检查当前是否有键盘输入,若有则返回一个非0值,否则返回0
{
while(kbhit() != 0) //可能存在多个按键,要全部取完,以最后一个为主
c= getch();
switch(c)
{
default:break;
case 'R':
m++;
break;
case 'L':
m--;
break;
case 'U':
n++;
break;
case 'D':
n--;
break;
}
}
show();
}
显示游戏
void show()
{
for(i=0;i<15;i++)
printf("_");
for( i=0;i<15;i++)
{
for(int j=0;j<15;j++)
if(i==m&&j==n)
{
printf("%c",Shead);
}
else if(i==z&&j==w)
{
printf("%c",Sfood);
}
else if(i&&j==14)
{
printf("|");
}
else if(i==14&&j>=0&&j<=14)
printf("_");
else
printf(" ");
putchar('\n');
}
}
//游戏判断
void judge()
{
if(m!=z&&n!=w)
{
move();
judge();
}
//吃到食物再创建
else if(m==z&&n==w)
{
a[m++][n++]=Sbody;
a[m][n]=Shead;
Food=true;
creat();
count++;
move();
judge();
}
//自吃或撞墙则判断输了
else if(m>15||m<0||n>15||n<0||a[m][n]!=' ')
printf("Game over!");
}
//食物创建
void creat()
{
if(Food)
{
z=rand()%15;//随机产生食物
w=rand()%15;
if(m==z&&n==w)
{
z=rand()%15;
w=rand()%15;
}
a[z][w]=Sfood;
Food=false;
}
}






