#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <string.h>
#include <iostream>
#include <fstream>
#define MAX 13
#define LEFT 75
#define RIGHT 77
#define UP 72
#define DOWN 80
using namespace std;
int map[MAX][MAX];
void map_loading(int s, int map[MAX][MAX]) {
char mapdata[MAX*MAX + 1];
ifstream Readfile("map.txt");
for (int i = 0; i < s; i++) {
Readfile.getline(mapdata, sizeof(char) * 170);
}
Readfile.close();
int n = 0;
for (int i = 0; i <= 12; i++) {
for (int j = 0; j <= 12; j++) {
map[i][j] = mapdata[n] - 48;
n++;
}
}
}
void printMap(int map[MAX][MAX]) {
for(int i = 0; i<=12; i++) {
for(int j = 0; j<=12; j++) {
switch(map[i][j]) {
case 0:
printf(" ");
break;
case 1:
printf("▨");
break;
case 3:
printf("☆");
break;
case 5:
printf("●");
break;
case 6:
printf("◇");
break;
case 7:
printf("◆");
break;
}
}
printf("\n");
}
}
int main() {
int s = 1;
map_loading(s,map);
int x = 4;
int y = 3;
int tmp = 0;
while(1) {
printMap(map);
int p_key = getch();
switch(p_key) {
case LEFT: //left
if(map[y][x-1] == 0) {
map[y][x] = tmp;
tmp = 0;
map[y][x-1] = 3;
x--;
}
else if(map[y][x-1] == 5 && map[y][x-2] == 0) {
map[y][x] = tmp;
tmp = 0;
map[y][x-1] = 3;
map[y][x-2] = 5;
x--;
}
else if(map[y][x-1] == 5 && map[y][x-2] == 6) {
map[y][x] = tmp;
tmp = 0;
map[y][x-1] = 3;
map[y][x-2] = 7;
x--;
}
else if(map[y][x-1] == 6) {
map[y][x] = tmp;
tmp = 6;
map[y][x-1] = 3;
x--;
}
else if(map[y][x-1] == 7 && map[y][x-2] == 0) {
map[y][x] = tmp;
tmp = 6;
map[y][x-1] = 3;
map[y][x-2] = 5;
x--;
}
else if(map[y][x-1] == 7 && map[y][x-2] == 6) {
map[y][x] = tmp;
tmp = 6;
map[y][x-1] = 3;
map[y][x-2] = 7;
x--;
}
break;
case RIGHT: //right
if(map[y][x+1] == 0) {
map[y][x] = tmp;
tmp = 0;
map[y][x+1] = 3;
x++;
}
else if(map[y][x+1] == 5 && map[y][x+2] == 0) {
map[y][x] = tmp;
tmp = 0;
map[y][x+1] = 3;
map[y][x+2] = 5;
x++;
}
else if(map[y][x+1] == 5 && map[y][x+2] == 6) {
map[y][x] = tmp;
tmp = 0;
map[y][x+1] = 3;
map[y][x+2] = 7;
x++;
}
else if(map[y][x+1] == 6) {
map[y][x] = tmp;
tmp = 6;
map[y][x+1] = 3;
x++;
}
else if(map[y][x+1] == 7 && map[y][x+2] == 0) {
map[y][x] = tmp;
tmp = 6;
map[y][x+1] = 3;
map[y][x+2] = 5;
x++;
}
else if(map[y][x+1] == 7 && map[y][x+2] == 6) {
map[y][x] = tmp;
tmp = 6;
map[y][x+1] = 3;
map[y][x+2] = 7;
x++;
}
break;
case UP: //up
if(map[y-1][x] == 0) {
map[y][x] = tmp;
tmp = 0;
map[y-1][x] = 3;
y--;
}
else if(map[y-1][x] == 5 && map[y-2][x] == 0) {
map[y][x] = tmp;
tmp = 0;
map[y-1][x] = 3;
map[y-2][x] = 5;
y--;
}
else if(map[y-1][x] == 5 && map[y-2][x] == 6) {
map[y][x] = tmp;
tmp = 0;
map[y-1][x] = 3;
map[y-2][x] = 7;
y--;
}
else if(map[y-1][x] == 6) {
map[y][x] = tmp;
tmp = 6;
map[y-1][x] = 3;
y--;
}
else if(map[y-1][x] == 7 && map[y-2][x] == 0) {
map[y][x] = tmp;
tmp = 6;
map[y-1][x] = 3;
map[y-2][x] = 5;
y--;
}
else if(map[y-1][x] == 7 && map[y-2][x] == 6) {
map[y][x] = tmp;
tmp = 6;
map[y-1][x] = 3;
map[y-2][x] = 7;
y--;
}
break;
case DOWN: //down
if(map[y+1][x] == 0) {
map[y][x] = tmp;
tmp = 0;
map[y+1][x] = 3;
y++;
}
else if(map[y+1][x] == 5 && map[y+2][x] == 0) {
map[y][x] = tmp;
tmp = 0;
map[y+1][x] = 3;
map[y+2][x] = 5;
y++;
}
else if(map[y+1][x] == 5 && map[y+2][x] == 6) {
map[y][x] = tmp;
tmp = 0;
map[y+1][x] = 3;
map[y+2][x] = 7;
y++;
}
else if(map[y+1][x] == 6) {
map[y][x] = tmp;
tmp = 6;
map[y+1][x] = 3;
y++;
}
else if(map[y+1][x] == 7 && map[y+2][x] == 0) {
map[y][x] = tmp;
tmp = 6;
map[y+1][x] = 3;
map[y+2][x] = 5;
y++;
}
else if(map[y+1][x] == 7 && map[y+2][x] == 6) {
map[y][x] = tmp;
tmp = 6;
map[y+1][x] = 3;
map[y+2][x] = 7;
y++;
}
break;
}
system("cls");
}
}



