#include <iostream>
#include<conio.h>
using namespace std;
int displaymap(int i_arry[20][20])
{
system("CLS");
for (int i = 0; i < 20; i++)
{
for (int k = 0; k < 20; k++)
{
if (i_arry[i][k] == 1)
{
int j = 1;
cout << j;
}
else if (i_arry[i][k] == 2)
{
char *j_1 = "*";
cout << j_1;
}
else if (i_arry[i][k] == 0)
{
char *j_1 = " ";
cout << j_1;
}
if (i_arry[i][k] == 3)
{
char *j_2 = "H";
cout << j_2;
}
}
cout << endl;
}
return 0;
}
int main()
{
bool array = true;
int x = 9;
int y = 9;
int x_box = 0;
int y_box = 0;
int i_arry[20][20] = {
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
{ 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1 },
{ 1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1 },
{ 1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1 },
{ 1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1 },
{ 1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1 },
{ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 },
{ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 },
{ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 },
{ 1,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,1 },
{ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 },
{ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 },
{ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 },
{ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 },
{ 1,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,1 },
{ 1,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,1 },
{ 1,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,1 },
{ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 },
{ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 },
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
};
i_arry[y][x] = 2;
/* i_arry[y_box][x_box] = 3;*/
char c;
while (1)
{
displaymap(i_arry);
c = _getch();
switch (c)
{
case 'w':
if (i_arry[y - 1][x] != 1 && i_arry[y - 1][x] != 3)
{
y = y - 1;
i_arry[y][x] = 2;
i_arry[y + 1][x] = 0;
displaymap(i_arry);
}
else if (y > 2 && i_arry[y_box - 1][x_box] != 1 && i_arry[y - 1][x] == 3)
{
x_box = x;
y_box = y - 1;
y = y - 1;
y_box = y_box - 1;
i_arry[y_box][x_box] = 3;
i_arry[y][x] = 2;
i_arry[y + 1][x] = 0;
displaymap(i_arry);
}
break;
case 'a':
if (i_arry[y][x - 1] != 1 && i_arry[y][x - 1] != 3)
{
x = x - 1;
i_arry[y][x] = 2;
i_arry[y][x + 1] = 0;
displaymap(i_arry);
}
else if (x > 2 && i_arry[y_box][x_box - 1] != 1 && i_arry[y][x - 1] == 3)
{
x_box = x - 1;
y_box = y;
x = x - 1;
x_box = x_box - 1;
i_arry[y_box][x_box] = 3;
i_arry[y][x] = 2;
i_arry[y][x + 1] = 0;
displaymap(i_arry);
}
break;
case 's':
if (i_arry[y + 1][x] != 1 && i_arry[y + 1][x] != 3)
{
y = y + 1;
i_arry[y][x] = 2;
i_arry[y - 1][x] = 0;
displaymap(i_arry);
}
else if (y < 19 && i_arry[y_box + 1][x_box] != 1 && i_arry[y + 1][x] == 3)
{
x_box = x;
y_box = y + 1;
y = y + 1;
y_box = y_box + 1;
i_arry[y_box][x_box] = 3;
i_arry[y][x] = 2;
i_arry[y - 1][x] = 0;
displaymap(i_arry);
}
break;
case 'd':
if (i_arry[y][x + 1] != 1 && i_arry[y][x + 1] != 3)
{
x = x + 1;
i_arry[y][x] = 2;
i_arry[y][x - 1] = 0;
displaymap(i_arry);
}
else if (/*x < 18 &&*/ i_arry[y_box][x_box + 1] != 1 && i_arry[y][x + 1] == 3)
{
x_box = x + 1;
y_box = y;
x = x + 1;
x_box = x_box + 1;
i_arry[y_box][x_box] = 3;
i_arry[y][x] = 2;
i_arry[y][x - 1] = 0;
displaymap(i_arry);
}
break;
}
}
system("pause");
}