KimMinJun
Coding Note
KimMinJun
전체 방문자
오늘
어제
  • 분류 전체보기 (486)
    • ALGORITHM (11)
      • 정렬 (6)
      • 최단경로 (1)
      • 자료구조 (1)
      • 슬라이딩 윈도우 (1)
      • etc (2)
    • Git (5)
    • Web (24)
      • Vanilla JS (13)
      • TS (2)
      • React (7)
      • ETC (1)
    • React 공식문서 (번역, 공부) (11)
      • Quick Start (2)
      • Installation (0)
      • Describing the UI (9)
      • Adding Interactivity (0)
      • Managing State (0)
      • Escape Hatches (0)
    • Next.js 공식문서 (번역, 공부) (3)
      • Getting Started (2)
      • Building Your Application (1)
    • PS (431)
      • 백준 (187)
      • Programmers (104)
      • CodeUp (21)
      • STL (3)
      • 제코베 JS 100제 (50)
      • SWEA (0)
      • LeetCode (65)
    • IT (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 관리

공지사항

인기 글

태그

  • Level 1
  • string
  • 문자열
  • tree
  • C
  • Level 2
  • C++
  • 다이나믹 프로그래밍
  • Level1
  • 백준
  • 제코베 JS 100제
  • 그래프
  • recursion
  • Level 0
  • programmers
  • codeup
  • 정렬
  • LeetCode
  • js
  • 수학

최근 댓글

최근 글

hELLO · Designed By 정상우.
KimMinJun

Coding Note

제코베 JS 100제 / 88 / 지식이의 게임 개발
PS/제코베 JS 100제

제코베 JS 100제 / 88 / 지식이의 게임 개발

2022. 9. 30. 16:52

지식이는 게임을 만드는 것을 좋아합니다. 하지만 매번 다른 크기의 지도와 장애물을 배치하는데 불편함을 겪고 있습니다. 이런 불편함을 해결하기 위해 지도의 크기와 장애물의 위치, 캐릭터의 위치만 입력하면 게임 지형을 완성해 주는 프로그램을 만들고 싶습니다. 지식이를 위해 게임 지형을 만드는 프로그램을 작성해 주세요.

 

- 가로(n), 세로(m)의 크기가 주어집니다.

- 지형의 테두리는 벽으로 이루어져 있습니다.

- 캐릭터가 있는 좌표가 배열 형태로 주어집니다.

- 장애물이 있는 좌표가 2차원 배열 형태로 주어집니다.

 

지도는 n * m 크기의 배열이며 배열 안의 값은

- 움직일 수 있는 공간(0)

- 캐릭터(1)

- 벽(2)

3개로 구분되어 있습니다.

 

 

/**
 * 지도의 크기, 장애물의 위치, 캐릭터의 위치를 입력받아
 * 게임 지형을 완성해 출력해주는 함수
 *
 * @description
 * - 움직일 수 있는 공간(0)
 * - 캐릭터(1)
 * - 벽(2)
 *
 * @param {number} ROW 행의 개수
 * @param {number} COL 열의 개수
 * @param {number[]} CHARACTER_POS 캐릭터 위치
 * @param {number[][]} OBSTACLE_POS_ARR 장애물들의 위치가 담긴 배열
 */
function printMap(ROW, COL, CHARACTER_POS, OBSTACLE_POS_ARR) {
  let map = Array.from({ length: ROW + 2 }, () => new Array(COL + 2).fill(2));

  for (let i = 1; i <= ROW; i++) {
    for (let j = 1; j <= COL; j++) {
      map[i][j] = 0;
    }
  }

  // 캐릭터 위치
  const [CHARACTER_POS_ROW, CHARACTER_POS_COL] = CHARACTER_POS;
  map[CHARACTER_POS_ROW + 1][CHARACTER_POS_COL + 1] = 1;

  // 장애물
  for (const OBSTACLE_POS of OBSTACLE_POS_ARR) {
    const [OBSTACLE_POS_ROW, OBSTACLE_POS_COL] = OBSTACLE_POS;

    map[OBSTACLE_POS_ROW + 1][OBSTACLE_POS_COL + 1] = 2;
  }

  map.forEach((row) => {
    console.log(row);
  });
}

const COL = 4; // 가로(열)
const ROW = 5; // 세로(행)
const CHARACTER_POS = [0, 0];
const OBSTACLE_POS_ARR = [
  [0, 1],
  [1, 1],
  [2, 3],
  [1, 3],
];

printMap(ROW, COL, CHARACTER_POS, OBSTACLE_POS_ARR);
저작자표시 (새창열림)

'PS > 제코베 JS 100제' 카테고리의 다른 글

제코베 JS 100제 / 90 / 같은 의약 성분을 찾아라!  (1) 2022.10.04
제코베 JS 100제 / 89 / 지식이의 게임 개발 2  (1) 2022.10.04
제코베 JS 100제 / 87 / 천하제일 먹기 대회  (1) 2022.09.30
제코베 JS 100제 / 86 / 회전 초밥  (0) 2022.09.29
    'PS/제코베 JS 100제' 카테고리의 다른 글
    • 제코베 JS 100제 / 90 / 같은 의약 성분을 찾아라!
    • 제코베 JS 100제 / 89 / 지식이의 게임 개발 2
    • 제코베 JS 100제 / 87 / 천하제일 먹기 대회
    • 제코베 JS 100제 / 86 / 회전 초밥
    KimMinJun
    KimMinJun

    티스토리툴바