自己写的贪吃蛇,没有注释只供娱乐
c4droid吧
全部回复
仅看楼主
level 7
sundgxdsd 楼主
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define size 15
int a[size+2][size+2];
int mov;
void findmax (int* i,int* j);
void findmin (int* i,int *j);
void init ();
void print ();
void join ();
int move ();
int main ()
{
int tem = 0;
init ();
while (1)
{
print();
printf("\033[?25l");
sleep (1);
fflush(stdout);
if (kbhit())
{
while(kbhit())
{
tem = getch();
}
tem = tem - '0';
if (tem>0 && (tem%2==0) && tem<9)
{
if ((mov ==6&& tem==4)||(mov==4&&tem==6)||(mov==2&&tem==8)||(mov==8&&tem==2))
{
}
else
{
mov = tem;
}
}
}
if (move () == -1)
{
break;
}
}
printf("你输了");
return 0;
}
void findmax (int* imax,int* jmax)
{
*imax = 1;
*jmax = 1;
int i = 0;
int j = 0;
for (i = 1;i < size+1;i++)
{
for (j = 1;j < size+1;j++)
{
if (a[i][j] > a[*imax][*jmax])
{
*imax = i;
*jmax = j;
}
}
}
}
void findmin (int* imin,int* jmin)
{
int min = 2147483647;
*imin = 1;
*jmin = 1;
int i = 0;
int j = 0;
for (i = 1;i < size+1;i++)
{
for (j = 1;j < size+1;j++)
{
if (a[i][j]>0 && a[i][j] < min)
{
min = a[i][j];
*imin = i;
*jmin = j;
}
}
}
}
void init ()
{
mov = 4;
int i = 0;
int j = 0;
for (i = 0;i < size+2;i++)
{
for (j = 0;j < size+2;j++)
{
if (i==0 || i==size+1 || j==0 || j==size+1)
{
a[i][j] = 1;
}
else
{
a[i][j] = 0;
}
}
}
a[size][size] = 3;
a[size][size-1] = 4;
join();
}
void print ()
{
printf("\033[0;0H");
int i = 0;
int j = 0;
for (i = 0;i < size+2;i++)
{
for (j = 0;j < size+2;j++)
{
if (a[i][j] == 0)
{
printf(" ");
}
if (a[i][j] == -1)
{
printf("\033[41m\033[31m \033[0m");
}
if (a[i][j] > 0)
{
printf("\033[47m \033[0m");
}
}
printf("\n");
}
}
void join ()
{
int i = 0;
int j = 0;
while (i==0 || j==0 || a[i][j]!=0)
{
srand((unsigned) time(NULL));
i = rand() % (size+1);
srand(((unsigned) time(NULL))*2);
j = rand() % (size+1);
}
a[i][j] = -1;
}
int move ()
{
int imax = 0;
int imin = 0;
int jmax = 0;
int jmin = 0;
int flag = 0;
findmax(&imax,&jmax);
findmin(&imin,&jmin);
switch (mov)
{
case 4:
{
if (a[imax][jmax-1] > 0)
{
return -1;
}
if (a[imax][jmax-1] == -1)
{
flag = -1;
}
a[imax][jmax-1] = a[imax][jmax]+1;
break;
}
case 6:
{
if (a[imax][jmax+1] > 0)
{
return -1;
}
if (a[imax][jmax+1] == -1)
{
flag = -1;
}
a[imax][jmax+1] = a[imax][jmax]+1;
break;
}
case 2:
{
if (a[imax-1][jmax] > 0)
{
return -1;
}
if (a[imax-1][jmax] == -1)
{
flag = -1;
}
a[imax-1][jmax] = a[imax][jmax]+1;
break;
}
case 8:
{
if (a[imax+1][jmax] > 0)
{
return -1;
}
if (a[imax+1][jmax] == -1)
{
flag = -1;
}
a[imax+1][jmax] = a[imax][jmax]+1;
break;
}
}
if (flag == -1)
{
join();
}
else
{
a[imin][jmin] = 0;
}
return 0;
}
2017年01月07日 04点01分 1
level 7
sundgxdsd 楼主
跑起来是这样的
2017年01月07日 04点01分 2
level 7
sundgxdsd 楼主
由于百度自己转换格式导致界面改变了
2017年01月07日 04点01分 3
搬了,太棒了
2017年01月09日 09点01分
level 13
为啥我的跑起来地图不是正方形的?[呼~]
2017年01月09日 15点01分 6
1