# include <stdio.h>
# include <malloc.h>
# include <time.h>
# include <stdlib.h>
# include <windows.h>
# include <conio.h>
void Gameover(void);
void button(void);
void Move(void);
void Disfood(void);
void Show(void);
char * snake;
int a,b;
int x[320],y[320];
int a1,b1;//记忆a,b的变量
int lenght=1;
int key=5;
char GameMap[12][30]={ {'&','&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&'},
{'&','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','&'},
{'&','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','&'},
{'&','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','&'},
{'&','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','&'},
{'&','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','&'},
{'&','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','&'},
{'&','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','&'},
{'&','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','&'},
{'&','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','&'},
{'&','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','&'},
{'&','&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&'}};
int main()
{
int i,j;
//地图
//蛇的初始地址
snake=&GameMap[10][19];
x[0]=10;
y[0]=19;
//蛇头
*snake='@';
Show();
return 0;
}
//随机分布食物
void Disfood(void)
{
int i,j;
int n=0;
int tru;
for(i=1;i<11;i++)
{
for(j=1;j<29;j++)
{
if(GameMap[i][j]=='*')
n++;
}
}
//if(n<7)
if(n<2)
{
tru=0;
srand(time(0));
while(tru!=1)
{
a=rand()%8+2;
b=rand()%26+2;
if(GameMap[a][b]!='@'||GameMap[a][b]!='*'||GameMap[a][b]!='#')
{
GameMap[a][b]='*';
break;
}
else
tru=1;
}
}
}
//键盘按钮
void button(void)
{
int i,j;
//记忆蛇头坐标
x[1]=x[0];
y[1]=y[0];
if(kbhit()!=0)
{
key = getch();
switch(key)
{
case 'b'://向左
y[0]--;
break;
case 'h'://向上
x[0]--;
break;
case 'n'://向下
x[0]++;
break;
case 'm'://向右
y[0]++;
break;
}
Move();
}
if(kbhit()==0)
{
switch(key)
{
case 'b'://向左
y[0]--;
Move();
break;
case 'h'://向上
x[0]--;
Move();
break;
case 'n'://向下
x[0]++;
Move();
break;
case 'm'://向右
y[0]++;
Move();
break;
}
}
}
//蛇移动
void Move(void)
{
int i,j;
if(GameMap[x[0]][y[0]]=='*')
{
GameMap[x[0]][y[0]]='@';
lenght++;
for(i=1;i<lenght+1;i++)
{
x[i+1]=x[i];
y[i+1]=y[i];
GameMap[x[i]][y[i]]='#';
}
}
if(GameMap[x[0]][y[0]]=='\0')
{
GameMap[x[0]][y[0]]='@';
for(i=1;i<lenght;i++)
{
x[i+1]=x[i];
y[i+1]=y[i];
GameMap[x[i]][y[i]]='#';
}
printf("%d %d\n", x[i],y[i]);
GameMap[x[i]][y[i]]='\0';
}
if(GameMap[x[0]][y[0]]=='&')
{
Gameover();
}
}
void Show(void)//显示地图
{
int i, j;
while(1)
{
for(i=0;i<12;i++)
{
for(j=0;j<30;j++)
{
printf("%c",GameMap[i][j]);
}
printf("\n");
}
Disfood();
printf("欢迎进入关山月创作的贪吃蛇1.0版!!!\n");
printf("游戏控制:b-向左,h-向上,n-向下,m-向右\n");
button();
Sleep(1000);
system("cls");
}
}
void Gameover(void)
{
printf("\tGame over!\n");
exit(-1);
}
这个是两年(2017)前刚学编程写的贪吃蛇,纪念一下