| int play(int a[][10])
{
loop = 0;
print(a);
find(a); //通过find函数寻找人物的x, y坐标
do
{
switch(getch()) //获取键盘
{
case 'w':
case 'W':move(a, -1, 0); break; //上移
case 'a':
case 'A':move(a, 0, -1); break; //左移
case 'd':
case 'D':move(a, 0, 1); break; //右移
case 's':
case 'S':move(a, 1, 0); break; //下移
case 'r':
case 'R':
case ' ':loop = 1; return 0; //重新开始当前关
case 27:exit(0); break; //结束游戏
case 0:
case 0xE0: //如果是方向键
switch(getch()) //再次获取键盘
{
case 72:move(a, -1, 0); break;
case 75:move(a, 0, -1); break;
case 77:move(a, 0, 1); break;
case 80:move(a, 1 , 0);
}
}
}while(!win(a)); //通过win函数判断是否通过
man2(60 * x, 60 * y); //画一个开心的皮卡丘
getch();
return 0;
} | void move(int a[][10], int x1, int y1)
{
if(a[x + x1][y + y1] == 0 || a[x + x1][y + y1] == 3)
{
a[x][y]--;
a[x + x1][y + y1]++;
for(int i = 0; i < 60; i++)
{
blank(60 * x + i * x1, 60 * y + i * y1); //擦掉
man(60 * x + (i + 1) * x1, 60 * y + (i + 1) * y1);
Sleep(1); //为了降低CPU且保存流畅
}
if(a[x][y] == 3)
dest(60 * x, 60 * y);
x += x1;
y += y1;
if(a[x][y] == 4)
man1(60 * x, 60 * y);
}
else if((a[x + x1][y + y1] == 2 || a[x + x1][y + y1] == 5) && (a[x + 2 * x1][y + 2 * y1] == 0 || a[x + 2 * x1][y + 2 * y1] == 3))
{
a[x][y]--;
a[x + x1][y + y1]--;
a[x + 2 * x1][y + 2 * y1] += 2;
for(int i = 0; i < 60; i++)
{
blank(60 * (x + x1) + i * x1, 60 * (y + y1) + i * y1); //擦掉
box(60 * (x + x1) + (i + 1) * x1, 60 * (y + y1) + (i + 1) * y1);
blank(60 * x + i * x1, 60 * y + i * y1); //擦掉
man(60 * x + (i + 1) * x1, 60 * y + (i + 1) * y1);
Sleep(1); //为了降低CPU且保存流畅
}
if(a[x][y] == 3)
dest(60 * x, 60 * y);
x += x1;
y += y1;
if(a[x][y] == 4)
man1(60 * x, 60 * y);
if(a[x+x1][y+y1] == 5)
box1(60 * (x + x1), 60 * (y + y1));
}
} | 在每一次获取键盘使用move函数以后,我都想保存当前的数组状态。求助 | |
| - | - | - | - |
举报
怎么保存当前数组,要用哪个函数。在线等
举报
格式太乱、无法编译、不知道你说什么。
用 {;} 按钮插入代码,而且要保证你的代码能编译,再详细说说你要做什么。