You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web-Dev-For-Beginners/translations/ko/6-space-game/1-introduction/assignment.md

5.2 KiB

게임 목업: 디자인 패턴 적용하기

과제 개요

새롭게 배운 디자인 패턴 지식을 활용하여 간단한 게임 프로토타입을 만들어보세요! 이 과제는 아키텍처 패턴(상속 또는 컴포지션)과 수업에서 배운 퍼블리시/서브스크라이브(pub/sub) 통신 시스템을 연습하는 데 도움이 될 것입니다.

지침

이번 수업에서 배운 디자인 패턴을 보여주는 간단한 게임 표현을 만드세요. 게임은 기능적이어야 하지만 복잡한 그래픽이 필요하지 않습니다 — 기본 아키텍처와 통신 패턴에 집중하세요.

요구 사항

아키텍처 패턴 선택:

  • 옵션 A: 클래스 기반 상속 사용 (GameObjectMovableHero 예시처럼)
  • 옵션 B: 컴포지션 사용 (혼합 동작을 가진 팩토리 함수 방식처럼)

통신 구현:

  • 퍼블리시/서브스크라이브 메시징을 위한 EventEmitter 클래스 포함
  • 적어도 2~3가지 메시지 타입 설정 (PLAYER_MOVE, ENEMY_SPAWN, SCORE_UPDATE 등)
  • 사용자 입력(키보드/마우스)을 이벤트 시스템을 통해 게임 이벤트에 연결

포함해야 할 게임 요소:

  • 최소 한 명의 플레이어 조종 캐릭터
  • 최소 한 개 이상의 다른 게임 객체 (적, 수집물, 환경 요소 등)
  • 객체 간 기본 상호작용 (충돌, 수집, 통신 등)

제안 게임 아이디어

고려할 수 있는 간단한 게임:

  • 뱀 게임 뱀 몸통이 머리를 따라가고 음식이 무작위로 생성됨
  • 퐁 변형 패들이 입력에 반응하고 공이 벽에 튕김
  • 수집 게임 플레이어가 아이템을 모으면서 장애물을 피함
  • 타워 디펜스 기초 타워가 움직이는 적을 감지하고 공격함

코드 구조 가이드라인

// 예시 시작 구조
const Messages = {
  // 여기에서 게임 메시지를 정의하세요
};

class EventEmitter {
  // 이벤트 시스템 구현
}

// 클래스 기반 또는 컴포지션 접근법 중 선택하세요
// 클래스 기반 예시:
class GameObject { /* base properties */ }
class Player extends GameObject { /* player-specific behavior */ }

// 또는 컴포지션 예시:
const gameObject = { /* base properties */ };
const movable = { /* movement behavior */ };
function createPlayer() { /* combine behaviors */ }

구현 테스트하기

코드가 잘 작동하는지 확인하려면:

  • 이벤트가 발생했을 때 객체들이 움직이거나 상태가 변하는지 테스트
  • 여러 객체가 동일한 이벤트에 반응하는지 확인
  • 기존 코드를 수정하지 않고 새로운 동작을 추가할 수 있는지 점검
  • 키보드/마우스 입력이 게임 이벤트를 적절히 트리거하는지 확인

제출 가이드라인

제출물에는 다음이 포함되어야 합니다:

  1. 게임 구현이 담긴 JavaScript 파일(들)
  2. 게임 실행 및 테스트용 HTML 파일(간단해도 무방)
  3. 어떤 패턴을 선택했고 왜 선택했는지 설명하는 주석
  4. 메시지 타입과 그 기능에 대한 간단한 문서

평가 기준

기준 뛰어남 (3점) 적절함 (2점) 개선 필요 (1점)
아키텍처 패턴 상속 또는 컴포지션을 명확한 클래스/객체 계층 구조로 정확히 구현 선택한 패턴을 약간의 문제나 일관성 없이 사용 패턴 사용 시도했으나 구현에 심각한 문제 있음
퍼블리시/서브스크라이브 구현 EventEmitter가 여러 메시지 타입과 올바른 이벤트 흐름으로 잘 작동함 기본 퍼블리시/서브스크라이브 시스템 작동하나 이벤트 처리에 다소 미흡 이벤트 시스템 있으나 신뢰성 있게 작동하지 않음
게임 기능성 최소 세 개 이상의 상호작용하는 요소들이 이벤트로 통신함 두 개의 상호작용 요소와 기본 이벤트 통신 구현 한 요소만 반응하거나 기본 상호작용만 있음
코드 품질 깔끔하고 잘 주석 처리된 코드, 논리적 구성과 최신 JavaScript 사용 대체로 잘 정리된 코드와 적절한 주석 작동은 하나 조직력이나 주석 부족

보너스 점수:

  • 패턴의 흥미로운 활용을 보여주는 창의적 게임 메커니즘
  • 키보드 및 마우스 등 다중 입력 방식 지원
  • 새로운 기능 확장이 용이한 확장 가능한 아키텍처

면책 조항:
이 문서는 AI 번역 서비스 Co-op Translator를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있으나, 자동 번역에는 오류나 부정확한 내용이 포함될 수 있음을 유의해 주십시오. 원본 문서의 원어가 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우 전문적인 인간 번역을 권장합니다. 본 번역 사용으로 인해 발생하는 어떠한 오해나 잘못된 해석에 대해서도 책임을 지지 않습니다.