该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include
#include
#define RIGHT 77
#define LEFT 75
#define UP 72
#define DOWN 80
const int D=20;
const int X=3;
const int R=7;
const int W=2;
const int NUM=5;
int a[D][D]={
{19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19},
{19,8,1,1,1,1,1,1,1,1,1,1,1,1,W,19,1,W,W,19},
{19,1,1,1,1,19,1,1,1,1,19,1,1,1,1,19,1,1,1,19},
{19,1,1,1,1,19,1,1,1,19,1,19,1,1,1,19,1,1,1,19},
{19,1,1,1,1,19,1,1,19,1,1,1,19,1,1,19,1,1,1,19},
{19,1,1,1,1,19,1,1,1,1,1,1,1,1,1,19,1,1,1,19},
{19,1,1,1,1,19,1,1,1,1,1,1,1,W,19,19,1,1,1,19},
{19,1,1,1,1,1,1,1,1,1,1,1,1,1,1,X+1,1,1,1,19},
{19,1,1,1,1,1,1,1,1,1,1,1,1,1,X+1,1,1,1,1,19},
{19,1,1,19,19,19,19,19,1,1,1,1,19,1,1,1,1,1,1,19},
{19,1,1,1,1,1,1,19,1,1,1,1,19,1,1,1,1,1,1,19},
{19,1,1,1,1+X,1,1,19,1,1,1,1,19,19,1,1,1,1,1,19},
{19,1,1,1,1,1,1,19,1+X,1,1,1,1,19,1,1,1,1,1,19},
{19,1,1,1,1,1,1,19,1,1,1,1,1,19,1,1,1,1,1,19},
{19,1,1,1,1,1,1,19,1,1,1,1,1,19,1,1,1,1,1,19},
{19,1,1,1,1,19,19,19,1,1,1,1,1,19,1,1,1,1,1,19},
{19,1,1,1,1,19,1,1,1,1,1,1,1,19,19,1,1,1,1,19},
{19,1,1,19,19,19,1,1+X,1,1,1,1,1,1,19,1,1,1,1,19},
{19,1,1,19,1,1,1,1,1,1,1,1,1,W,19,1,1,1,1,19},
{19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19}
};
int move(int *x, int *y, int i, int j);
int outPut(int a[D][D]);
int main()
{
int x, y, i, j;
x = 1;
y = 1;
system("color 0B");
char ch;
outPut(a);
while(1)
{
fflush(stdin);
ch = getch();
switch(ch)
{
case RIGHT: move(&x, &y, 0, 1);break;
case LEFT: move(&x, &y, 0, -1);break;
case DOWN: move(&x, &y, 1, 0);break;
case UP: move(&x, &y, -1, 0);break;
}
int count = 0;
count = outPut(a);
if(NUM == count)
{
printf(" 成功!若智商是时间,那你便是永恒!! ");
printf("\n");
system("pause");
return 0;
}
}
}
int move(int *x, int *y, int i, int j)
{
if(a[*x + i][*y + j] < X + 1)
{
a[*x][*y] -= R;
a[*x + i][*y + j] += R;
*x += i;
*y += j;
}
else if(a[*x + i][*y + j] == X + 1 && a[*x + i + i][*y + j + j] < X)
{
a[*x][*y] -= R;
a[*x + i][*y + j] -= X;
a[*x + i + i][*y + j + j] += X;
a[*x + i][*y + j] += R;
*x += i;
*y += j;
}
else if(a[*x + i][*y + j] == X + W && a[*x + i + i][*y + j + j] < X)
{
a[*x][*y] -= R;
a[*x + i][*y + j] -= X;
a[*x + i + i][*y + j + j] += X;
a[*x + i][*y + j] += R;
*x += i;
*y += j;
}
return 1;
}
int outPut(int a[D][D])
{
system("cls");
int count = 0;
int i, j;
int min=1,sec=0,n;
n=60*min+sec;
while(n!=0)
{
for (i = 0 ; i < D; i++)
{
for (j = 0; j < D; j++)
{
if(W + X == a[i][j])
{
count++;
}
switch(a[i][j])
{
case 19 : printf("▓");;break;
case 2 : printf("□");break;
case 8 : printf("*");break;
case 4 : printf("¤");break;
case 5 : printf("※");break;
case 1 : printf(" ");break;
default: printf(" ");
}
}
printf("\n");
}
printf(" 上:↑ 下:↓ 左:← 右:→\n " );
printf(" ▓墙 *人 ¤箱子 □放箱子的空位 ※箱子占用的位置\n ");
printf(" 剩余时间:%2d分:%2d秒" ,n/60,n%60);
n=n-1;
Sleep(1000);
system("cls");
}
return count;
}