用数组和循环实现蛇形移动,贪吃蛇的初版,不能吃豆子,问题虽然还有很多,对我来说这是一个成功!!我才学C一个月....我都被这个蛇骚扰两天了...
#include <windows.h>#include <stdio.h>
#include <conio.h>
#define N 23
#define M 80
main()
{
int a[N][M];
int i, j, x, y,q,k,u,p,t,e;
char c;
x=10;
y=2;
q=x;
k=y-1;
u=x;
p=y-2;
while(1)
{
system("cls");
for(i = 0; i <N ; i++)
{
for(j = 0; j <M ; j++)
{
a[i][j]=0;
}
}
a[x][y]=1;
a[q][k]=2;
a[u][p]=2;
for(i = 0; i < N; i++)
{
for(j = 0; j < M; j++)
{
if(i==0||j==79||j==0||i==22)
printf("-");
else if(a[i][j]==0)
printf(" ");
if(a[i][j]==1||a[i][j]==2)
printf("*");
}
printf("\n");
}
c=getch();
if(c=='w')
{
if(k==t&&q>x)
{
q-=1;
}
if(p==t&&u>q)
{
u-=1;
}
x=x-1;
t=y;
if(k<t)
{k+=1;
}
else if(k>t)
{
k-=1;
}
if(p<t)
{
p+=1;
}
else if(p>t)
{
p-=1;
}
if(x==0)
{
printf("游戏结束\n");
Sleep(1000);
break;}
}
else
if(c=='a')
{
if(k>=t&&q>x)
{
q-=1;
}
else if(k>=t&&q<x)
{
q+=1;
}
if(q==x&&k>y)
{ k-=1;
}
if(p>=k&&u>q)
{
u-=1;
}
else if(p>=k&&u<q)
{
u+=1;
}
if(u==x&&p>k)
{
p-=1;
}
else if(u!=x&&p<k)
{
p+=1;
}
t=y;
y=y-1;
if(y==0)
{
printf("游戏结束\n");
Sleep(1000);
break;
}
}
else
if(c=='s')
{
if(k==t&&q<x)
{
q+=1;
}
if(p==t&&u<q)
{
u+=1;
}
x=x+1;
t=y;
if(k<t)
{
k+=1;
}
else if(k>t)
{
k-=1;
}
if(p<k)
{
p+=1;
}
else if(p>k)
{
p+=1;
}
if(x==22)
{
printf("游戏结束\n");
Sleep(1000);
break;
}
}
else
if(c=='d')
{
if(k<=t&&q>x)
{
q-=1;
}
else if(k<=t&&q<x)
{
q+=1;
}
else if(q==x&&k<y)
{
k+=1;
}
if(p<=k&&u>x)
{
u-=1;
}
else if(p<=k&&u<x)
{
u+=1;
}
else if(u==q&&p<k)
{
p+=1;
}
t=y;
y=y+1;
if(y==79)
{
printf("游戏结束\n");
Sleep(1000);
break;}
}
if(c=='t') break;
Sleep(500);
}
}