- 很简单的 可能存在一些bug 大牛不要嘲笑
#include "stdafx.h"
#include <conio.h>
#include "head.h"
#include <Windows.h>
#include <time.h>
int x=-1,y=-1,m=0;//m为蛇的长度 n为食物个数
int nx=-1,ny=-1,n=0;
int chengji=0;
void 游戏开始();
void 显示();
void 画蛇();
void 蛇头运动();
void 蛇身运动();
void 初始蛇的随机位置();
void 改变蛇的方向();
void 是否死亡();
void 画食物();
void 蛇吃食物();
void 蛇变长();
void 成绩();
void 打印墙体();
int _tmain(int argc, _TCHAR* argv[])
{
游戏开始();
初始蛇的随机位置();
while (1)
{
system("cls");
画蛇();
画食物();
显示();
蛇身运动();
改变蛇的方向();
蛇头运动();
改变蛇的方向();
蛇吃食物();
成绩();
是否死亡();
Sleep(200);
}
return 0;
}
void 成绩()
{
printf("总分为:%d 长度为:%d\n",chengji,m);
}
void 蛇变长()
{
if(she[m-1][2]==1)
{
she[m][0]=she[m-1][0];
she[m][1]=she[m-1][1]-1;
she[m][2]=she[m-1][2];
}
else if(she[m-1][2]==2)
{
she[m][0]=she[m-1][0];
she[m][1]=she[m-1][1]+1;
she[m][2]=she[m-1][2];
}
else if(she[m-1][2]==3)
{
she[m][0]=she[m-1][0]-1;
she[m][1]=she[m-1][1];
she[m][2]=she[m-1][2];
}
else if(she[m-1][2]==4)
{
she[m][0]=she[m-1][0]+1;
she[m][1]=she[m-1][1];
she[m][2]=she[m-1][2];
}
}
void 蛇吃食物()
{
if(qipan[ny][nx]==2)
{
n=0;
蛇变长();
chengji+=10;
m++;
}
}
void 画食物()
{
if(n==0)
{
do
{
nx=rand()%21+1;
ny=rand()%21+1;
}
while(qipan[ny][nx]==2);
qipan[ny][nx]=3;
n++;
}
}
void 是否死亡()
{
int sum=0;
for(int i=0;i<23;i++)
{
for(int j=0;j<23;j++)
{
if (qipan[i][j]==1)
{
sum++;
}
}
}
if (sum!=88)
{
printf("游戏结束\n");
system("pause");
exit(0);
}
}
void 游戏开始()
{
printf("\t\t\t 《贪吃蛇》\n");
printf("\t\t\t 按任意键开始游戏\n");
getch();
}
void 显示()
{
for(int i=0;i<23;i++)
{
for(int j=0;j<23;j++)
{
if (qipan[i][j]==1)
{
printf("■");//墙
}
else if(qipan[i][j]==0)
{
printf(" ");//空
}
else if(qipan[i][j]==2)
{
printf("■");//蛇
}
else if(qipan[i][j]==3)
{
printf("* ");
}
}
printf("\n");
}
}
void 初始蛇的随机位置()
{
srand(time(0));
x=rand()%16+3;
y=rand()%21+1;
//生成初始蛇
she[0][0]=x;
she[0][1]=y;
she[0][2]=3;
she[1][0]=x+1;
she[1][1]=y;
she[1][2]=3;
she[2][0]=x+2;
she[2][1]=y;
she[2][2]=3;
m=3;
}
void 画蛇()
{
for (int i=0;i<70;i++)
{
if(she[i][0]!=0)
{
qipan[she[i][1]][she[i][0]]=2;
}
}
}
void 蛇头运动()
{
if (she[0][2]==1)
{//上
she[0][1]=she[0][1]-1;
}
else if (she[0][2]==2)
{//下
she[0][1]=she[0][1]+1;
}
else if (she[0][2]==3)
{//左
she[0][0]=she[0][0]-1;
}
else if (she[0][2]==4)
{//右
she[0][0]=she[0][0]+1;
}
}
void 蛇身运动()
{
for(int i=69;i>=1;i--)
{
if(she[i][0]!=0)
{
if(m==i+1)
{
qipan[(she[i][1])][(she[i][0])]=0;
}
she[i][0]=she[i-1][0];
she[i][1]=she[i-1][1];
she[i][2]=she[i-1][2];
}
}
}
void 改变蛇的方向()
{
if(kbhit() != 0)
{
int key;
while(kbhit() != 0)
key = getch();
if(key==72)//上
{
if(she[0][2]!=2)
{
she[0][2]=1;
}
}
if(key==80)//下
if(she[0][2]!=1)
{
she[0][2]=2;
}
if(key==75)//左
if(she[0][2]!=4)
{
she[0][2]=3;
}
if(key==77)//右
if(she[0][2]!=3)
{
she[0][2]=4;
}
}
}
0