#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <Windows.h>
#define MAX 14
#define GOAL 8
enum colorName
{
BLACK,
D_BLUE,
D_GREEN,
D_SKYBLUE,
D_RED,
D_VIOLET,
D_YELLOW,
GRAY,
D_GRAY,
BLUE,
GREEN,
SKYBLUE,
RED,
VIOLET,
YELLOW,
WHITE,
};
void color(int bgColor, int textColor)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), bgColor*16+textColor);
}
int main(void)
{
int map[15][15]=
{
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,1,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,1,0,1,1,1,1,1,1,1,1,1,0,1},
{1,0,1,0,1,0,0,0,0,0,0,0,1,0,1},
{1,0,1,0,1,0,1,1,1,1,1,0,1,0,1},
{1,0,1,0,1,0,1,0,0,0,0,0,1,0,1},
{1,0,1,0,1,0,1,1,1,1,1,0,1,0,1},
{1,0,1,0,1,0,1,3,0,0,1,0,1,0,1},
{1,0,1,0,1,0,1,1,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,0,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0,1,1,1,0,1,0,1},
{1,0,1,0,1,0,1,0,0,0,0,0,1,0,1},
{1,0,1,0,1,0,1,1,1,1,1,1,1,0,1},
{1,0,0,0,1,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},
};
int myPosition_X=1, myPosition_Y=1;
int i, j, k;
int wallDetected=0;
int moveCount=0;
int loop=1;
char input = 0;
do
{
map[myPosition_Y][myPosition_X]=2;
for (i=0;i<=MAX;i++)
{
for (j=0;j<=MAX;j++)
{
if (map[i][j]==1)
{
color(BLACK, WHITE);
}
else if (map[i][j]==0)
{
color(BLACK, WHITE);
}
else if (map[i][j]==2)
{
color(BLACK, RED);
}
else if (map[i][j]==3)
{
color(BLACK, RED);
}
}
for (k=0;k<=MAX;k++)
{
}
}
color(BLACK,YELLOW);
color(BLACK,WHITE);
printf("%d\t", myPosition_X
+1);
color(BLACK,YELLOW);
color(BLACK,WHITE);
printf("%d\n\n", -(myPosition_Y
+1));
color(BLACK,YELLOW);
color(BLACK,WHITE);
if (wallDetected==1)
{
color(BLACK,YELLOW);
color(BLACK,WHITE);
}
input=_getch();
switch (input)
{
case 72 :
moveCount++;
wallDetected=0;
map[myPosition_Y][myPosition_X]=0;
myPosition_Y--;
if (map[myPosition_Y][myPosition_X]==1)
{
moveCount--;
wallDetected=1;
myPosition_Y++;
}
else if (map[myPosition_Y][myPosition_X]==3)
loop=0;
break;
case 75 :
moveCount++;
wallDetected=0;
map[myPosition_Y][myPosition_X]=0;
myPosition_X--;
if (map[myPosition_Y][myPosition_X]==1)
{
moveCount--;
wallDetected=1;
myPosition_X++;
}
else if (map[myPosition_Y][myPosition_X]==3)
loop=0;
break;
case 77 :
moveCount++;
wallDetected=0;
map[myPosition_Y][myPosition_X]=0;
myPosition_X++;
if (map[myPosition_Y][myPosition_X]==1)
{
moveCount--;
wallDetected=1;
myPosition_X--;
}
else if (map[myPosition_Y][myPosition_X]==3)
loop=0;
break;
case 80 :
moveCount++;
wallDetected=0;
map[myPosition_Y][myPosition_X]=0;
myPosition_Y++;
if (map[myPosition_Y][myPosition_X]==1)
{
moveCount--;
wallDetected=1;
myPosition_Y--;
}
else if (map[myPosition_Y][myPosition_X]==3)
loop=0;
break;
case 27 :
loop=0;
break;
}
} while(loop);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxjb25pby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxXaW5kb3dzLmg+CiAKI2RlZmluZSBNQVggMTQKI2RlZmluZSBHT0FMIDgKIAogCmVudW0gY29sb3JOYW1lCnsKICAgICAgICBCTEFDSywKICAgICAgICBEX0JMVUUsCiAgICAgICAgRF9HUkVFTiwKICAgICAgICBEX1NLWUJMVUUsCiAgICAgICAgRF9SRUQsCiAgICAgICAgRF9WSU9MRVQsCiAgICAgICAgRF9ZRUxMT1csCiAgICAgICAgR1JBWSwKICAgICAgICBEX0dSQVksCiAgICAgICAgQkxVRSwKICAgICAgICBHUkVFTiwKICAgICAgICBTS1lCTFVFLAogICAgICAgIFJFRCwKICAgICAgICBWSU9MRVQsCiAgICAgICAgWUVMTE9XLAogICAgICAgIFdISVRFLAp9OwogCnZvaWQgY29sb3IoaW50IGJnQ29sb3IsIGludCB0ZXh0Q29sb3IpCnsKICAgICAgICBTZXRDb25zb2xlVGV4dEF0dHJpYnV0ZShHZXRTdGRIYW5kbGUoU1REX09VVFBVVF9IQU5ETEUpLCBiZ0NvbG9yKjE2K3RleHRDb2xvcik7Cn0KIAogCmludCBtYWluKHZvaWQpCnsKICAgICAgICBpbnQgbWFwWzE1XVsxNV09CiAgICAgICAgewogICAgICAgICAgICAgICAgezEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxfSwKICAgICAgICAgICAgICAgIHsxLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMX0sCiAgICAgICAgICAgICAgICB7MSwwLDEsMCwxLDEsMSwxLDEsMSwxLDEsMSwwLDF9LAogICAgICAgICAgICAgICAgezEsMCwxLDAsMSwwLDAsMCwwLDAsMCwwLDEsMCwxfSwKICAgICAgICAgICAgICAgIHsxLDAsMSwwLDEsMCwxLDEsMSwxLDEsMCwxLDAsMX0sCiAgICAgICAgICAgICAgICB7MSwwLDEsMCwxLDAsMSwwLDAsMCwwLDAsMSwwLDF9LAogICAgICAgICAgICAgICAgezEsMCwxLDAsMSwwLDEsMSwxLDEsMSwwLDEsMCwxfSwKICAgICAgICAgICAgICAgIHsxLDAsMSwwLDEsMCwxLDMsMCwwLDEsMCwxLDAsMX0sCiAgICAgICAgICAgICAgICB7MSwwLDEsMCwxLDAsMSwxLDEsMCwxLDAsMSwwLDF9LAogICAgICAgICAgICAgICAgezEsMCwxLDAsMSwwLDEsMCwwLDAsMSwwLDEsMCwxfSwKICAgICAgICAgICAgICAgIHsxLDAsMSwwLDEsMCwxLDAsMSwxLDEsMCwxLDAsMX0sCiAgICAgICAgICAgICAgICB7MSwwLDEsMCwxLDAsMSwwLDAsMCwwLDAsMSwwLDF9LAogICAgICAgICAgICAgICAgezEsMCwxLDAsMSwwLDEsMSwxLDEsMSwxLDEsMCwxfSwKICAgICAgICAgICAgICAgIHsxLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMX0sCiAgICAgICAgICAgICAgICB7MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDF9LAogICAgICAgIH07CiAKICAgICAgICBpbnQgbXlQb3NpdGlvbl9YPTEsIG15UG9zaXRpb25fWT0xOwogICAgICAgIGludCBpLCBqLCBrOwogICAgICAgIGludCB3YWxsRGV0ZWN0ZWQ9MDsKICAgICAgICBpbnQgbW92ZUNvdW50PTA7CiAgICAgICAgaW50IGxvb3A9MTsKIAogICAgICAgIGNoYXIgaW5wdXQgPSAwOwogCiAgICAgICAgZG8KICAgICAgICB7CiAgICAgICAgICAgICAgICBzeXN0ZW0oImNscyIpOwogCiAgICAgICAgICAgICAgICBtYXBbbXlQb3NpdGlvbl9ZXVtteVBvc2l0aW9uX1hdPTI7CiAKICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8PU1BWDtpKyspCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaj0wO2o8PU1BWDtqKyspCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwW2ldW2pdPT0xKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yKEJMQUNLLCBXSElURSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIuKWoCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1hcFtpXVtqXT09MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcihCTEFDSywgV0hJVEUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCLjgIAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtYXBbaV1bal09PTIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IoQkxBQ0ssIFJFRCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIuKZgiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1hcFtpXVtqXT09MykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcihCTEFDSywgUkVEKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50Zigi4pmAIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJcdFx0Iik7CiAKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChrPTA7azw9TUFYO2srKykKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiJWQgIixtYXBbaV1ba10pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICBwcmludGYoIlxuIik7CiAKICAgICAgICAgICAgICAgIGNvbG9yKEJMQUNLLFlFTExPVyk7CiAgICAgICAgICAgICAgICBwcmludGYoInggOiAiKTsKIAogICAgICAgICAgICAgICAgY29sb3IoQkxBQ0ssV0hJVEUpOwogICAgICAgICAgICAgICAgcHJpbnRmKCIlZFx0IiwgbXlQb3NpdGlvbl9YKzEpOwogCiAgICAgICAgICAgICAgICBjb2xvcihCTEFDSyxZRUxMT1cpOwogICAgICAgICAgICAgICAgcHJpbnRmKCJ5IDogIik7CiAKICAgICAgICAgICAgICAgIGNvbG9yKEJMQUNLLFdISVRFKTsKICAgICAgICAgICAgICAgIHByaW50ZigiJWRcblxuIiwgLShteVBvc2l0aW9uX1krMSkpOwogCiAgICAgICAgICAgICAgICBjb2xvcihCTEFDSyxZRUxMT1cpOwogICAgICAgICAgICAgICAgcHJpbnRmKCLsm4Dsp4Hsnbgg7Zqf7IiYIDogIik7CiAKICAgICAgICAgICAgICAgIGNvbG9yKEJMQUNLLFdISVRFKTsKICAgICAgICAgICAgICAgIHByaW50ZigiJWRcblxuIiwgbW92ZUNvdW50KTsKIAogICAgICAgICAgICAgICAgaWYgKHdhbGxEZXRlY3RlZD09MSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IoQkxBQ0ssWUVMTE9XKTsKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJTWVNURU0gOiAiKTsKIAogICAgICAgICAgICAgICAgICAgICAgICBjb2xvcihCTEFDSyxXSElURSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50Zigi7Jy87JWFISDrsr3snbTri6QuIFxuXG4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlucHV0PV9nZXRjaCgpOwogCiAgICAgICAgICAgICAgICBzd2l0Y2ggKGlucHV0KQogICAgICAgICAgICAgICAgewogCiAgICAgICAgICAgICAgICBjYXNlIDcyIDoKICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgbW92ZUNvdW50Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIHdhbGxEZXRlY3RlZD0wOwogCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcFtteVBvc2l0aW9uX1ldW215UG9zaXRpb25fWF09MDsKICAgICAgICAgICAgICAgICAgICAgICAgbXlQb3NpdGlvbl9ZLS07CiAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXBbbXlQb3NpdGlvbl9ZXVtteVBvc2l0aW9uX1hdPT0xKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZUNvdW50LS07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FsbERldGVjdGVkPTE7CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVBvc2l0aW9uX1krKzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1hcFtteVBvc2l0aW9uX1ldW215UG9zaXRpb25fWF09PTMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD0wOwogCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICBjYXNlIDc1IDoKICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgbW92ZUNvdW50Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIHdhbGxEZXRlY3RlZD0wOwogCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcFtteVBvc2l0aW9uX1ldW215UG9zaXRpb25fWF09MDsKICAgICAgICAgICAgICAgICAgICAgICAgbXlQb3NpdGlvbl9YLS07CiAKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcFtteVBvc2l0aW9uX1ldW215UG9zaXRpb25fWF09PTEpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlQ291bnQtLTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWxsRGV0ZWN0ZWQ9MTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15UG9zaXRpb25fWCsrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobWFwW215UG9zaXRpb25fWV1bbXlQb3NpdGlvbl9YXT09MykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wPTA7CiAKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgIGNhc2UgNzcgOgogCiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVDb3VudCsrOwogICAgICAgICAgICAgICAgICAgICAgICB3YWxsRGV0ZWN0ZWQ9MDsKIAogICAgICAgICAgICAgICAgICAgICAgICBtYXBbbXlQb3NpdGlvbl9ZXVtteVBvc2l0aW9uX1hdPTA7CiAgICAgICAgICAgICAgICAgICAgICAgIG15UG9zaXRpb25fWCsrOwogCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXBbbXlQb3NpdGlvbl9ZXVtteVBvc2l0aW9uX1hdPT0xKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZUNvdW50LS07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FsbERldGVjdGVkPTE7CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVBvc2l0aW9uX1gtLTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1hcFtteVBvc2l0aW9uX1ldW215UG9zaXRpb25fWF09PTMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD0wOwogCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICBjYXNlIDgwIDoKIAogICAgICAgICAgICAgICAgICAgICAgICBtb3ZlQ291bnQrKzsKICAgICAgICAgICAgICAgICAgICAgICAgd2FsbERldGVjdGVkPTA7CiAKICAgICAgICAgICAgICAgICAgICAgICAgbWFwW215UG9zaXRpb25fWV1bbXlQb3NpdGlvbl9YXT0wOwogICAgICAgICAgICAgICAgICAgICAgICBteVBvc2l0aW9uX1krKzsKIAogICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwW215UG9zaXRpb25fWV1bbXlQb3NpdGlvbl9YXT09MSkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVDb3VudC0tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhbGxEZXRlY3RlZD0xOwogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlQb3NpdGlvbl9ZLS07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtYXBbbXlQb3NpdGlvbl9ZXVtteVBvc2l0aW9uX1hdPT0zKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9MDsKIAogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgY2FzZSAyNyA6CiAKICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD0wOwogCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogCiAgICAgICAgfSB3aGlsZShsb29wKTsKIAogICAgICAgIHJldHVybiAwOwp9