[TIL] 20241104 TIL

Jaeyoung Ko·2024년 11월 4일

오늘 한 일

  • JS 문법 강의 2주차
  • CLI 로그라이크 프로젝트 과제 : 필수 구현 부 완성 + 추가구현 부 : 방어하기 기능 진행 중..

언제나 그렇듯이 프로젝트는 기획을 동시에 하면 그 부분이 너무 힘들다. 설계나 기획을 그때 그때 수정하면서 개발 직접하니까 좋지 않냐라는 생각이 들겠지만야 기획부터 상세히 해야 개발이 편해서 장단이 있는 거 같다.



(1) 모듈화와 import, export

일단 현재 과제 프로젝트 진행하면서 인상적인 것만 말하자면, 비대해지는 코드에 대해서 피드백을 받고 파일을 분리할 필요를 느꼈는데, nodejs에서는 모듈화를 통해 export, import를 하는 점이다.

import chalk from 'chalk';
import readlineSync from 'readline-sync';
import readline from 'readline';
import { Player } from './Player.js';
import { Monster } from './Monster.js';
import { InitialStatData, InitialProbData, GameData, ActionStateType} from './data.js';
import { displayStatus, displayLog, displayTextAnim } from './display.js';

내 현재 프로젝트에선
클래스 파일인 Player.js, Monster.js
하드코딩을 막기 위한 초기값과 설정값에 대한 데이터 목록 data.js
콘솔창 띄우는 처리의 함수를 모아놓은 display.js

이렇게 기능별로 모듈화하여 분리시켰다.



(2) Event Emitter

턴제 로직 플로우대로 게임 플로우를 구현하다가

플레이어 혹은 몬스터의 사망 처리 관련해서 간단하게 델리게이트로 등록을 할까 했는데

JS에서는 델리게이트를 이용하는 것 대신

Event Emitter라는 개념을 사용한다는 점을 알게 되었다.


앞서 말했듯 Event Emitter는 마치 델리게이트처럼 '이벤트 등록'을 통해

비동기, non-blocking I/O 를 처리하는 핵심적인 부분이다.

profile
안녕하세요, 고재영입니다. 언제나 즐겁게 살려고 노력합니다.

0개의 댓글