function make_map(n,m,char,obj){
//지도 초기화하기
//각 지도 가로/세로 두칸 외벽을 포함한 크기만큼 추가하기(각 끝 한칸씩)
let world_map = [];
for(let i=0; i<m+2; i++){
world_map.push(Array(n+2).fill(0));
}
//지도 외벽 그리기
for(let i in world_map){
for(let j in world_map[0]){
if (i==0 || j==world_map[0].length-1 || j==0 || i==world_map.length-1) {
world_map[i][j] = 2;
}
}
}
//지도에 캐릭터 추가하기/ 외벽으로 인해 좌표에 +1을 해줍니다.
world_map[char[0]+1][char[1]+1] = 1;
//지도에 장애물 추가하기
for (let i of obj){
if (world_map[i[0]+1][i[1]+1] != 1){
world_map[i[0]+1][i[1]+1] = 2;
} else {
world_map[i[0]+1][i[1]+1] = 1;
}
}
//장애물을 추가하려는 자리에 캐릭터가 있을 시 캐릭터는 그대로둔다
//마찬가지 외벽으로 인한 좌표 조정을 해준다.
for(let i of world_map) {
console.log(i);
}
return world_map;
}
function move(world_map, moving){
let x = 0;
let y = 0;
for(let i of world_map){
if(i.includes(1)){
x = world_map.indexOf(i);
y = i.indexOf(1);
}
}
world_map[y][x] = 0;
for(let i of moving){
if (i == 1 && world_map[y-1][x]!=2){
y -= 1;
} else if (i==2 && world_map[y+1][x]!=2){
y += 1;
} else if (i==3 && world_map[y][x-1]!=2){
x -= 1;
} else if (i==4 && world_map[y][x+1]!=2){
x += 1;
}
}
world_map[y][x] = 1;
for (let i of world_map){
console.log(i);
}
return [x,y];
}
console.log('캐릭터 이동 전 지도');
const world_map = make_map(4, 5, [0, 0], [[0,1],[1,1],[2,3],[1,3]]);
const moving = [2,2,2,4,4,4];
console.log('캐릭터 이동 후 지도');
console.log('캐릭터위치 :',move(world_map, moving));