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.
5.2 KiB
5.2 KiB
게임 목업: 디자인 패턴 적용하기
과제 개요
새롭게 배운 디자인 패턴 지식을 활용하여 간단한 게임 프로토타입을 만들어보세요! 이 과제는 아키텍처 패턴(상속 또는 컴포지션)과 수업에서 배운 퍼블리시/서브스크라이브(pub/sub) 통신 시스템을 연습하는 데 도움이 될 것입니다.
지침
이번 수업에서 배운 디자인 패턴을 보여주는 간단한 게임 표현을 만드세요. 게임은 기능적이어야 하지만 복잡한 그래픽이 필요하지 않습니다 — 기본 아키텍처와 통신 패턴에 집중하세요.
요구 사항
아키텍처 패턴 선택:
- 옵션 A: 클래스 기반 상속 사용 (
GameObject→Movable→Hero예시처럼) - 옵션 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 */ }
구현 테스트하기
코드가 잘 작동하는지 확인하려면:
- 이벤트가 발생했을 때 객체들이 움직이거나 상태가 변하는지 테스트
- 여러 객체가 동일한 이벤트에 반응하는지 확인
- 기존 코드를 수정하지 않고 새로운 동작을 추가할 수 있는지 점검
- 키보드/마우스 입력이 게임 이벤트를 적절히 트리거하는지 확인
제출 가이드라인
제출물에는 다음이 포함되어야 합니다:
- 게임 구현이 담긴 JavaScript 파일(들)
- 게임 실행 및 테스트용 HTML 파일(간단해도 무방)
- 어떤 패턴을 선택했고 왜 선택했는지 설명하는 주석
- 메시지 타입과 그 기능에 대한 간단한 문서
평가 기준
| 기준 | 뛰어남 (3점) | 적절함 (2점) | 개선 필요 (1점) |
|---|---|---|---|
| 아키텍처 패턴 | 상속 또는 컴포지션을 명확한 클래스/객체 계층 구조로 정확히 구현 | 선택한 패턴을 약간의 문제나 일관성 없이 사용 | 패턴 사용 시도했으나 구현에 심각한 문제 있음 |
| 퍼블리시/서브스크라이브 구현 | EventEmitter가 여러 메시지 타입과 올바른 이벤트 흐름으로 잘 작동함 | 기본 퍼블리시/서브스크라이브 시스템 작동하나 이벤트 처리에 다소 미흡 | 이벤트 시스템 있으나 신뢰성 있게 작동하지 않음 |
| 게임 기능성 | 최소 세 개 이상의 상호작용하는 요소들이 이벤트로 통신함 | 두 개의 상호작용 요소와 기본 이벤트 통신 구현 | 한 요소만 반응하거나 기본 상호작용만 있음 |
| 코드 품질 | 깔끔하고 잘 주석 처리된 코드, 논리적 구성과 최신 JavaScript 사용 | 대체로 잘 정리된 코드와 적절한 주석 | 작동은 하나 조직력이나 주석 부족 |
보너스 점수:
- 패턴의 흥미로운 활용을 보여주는 창의적 게임 메커니즘
- 키보드 및 마우스 등 다중 입력 방식 지원
- 새로운 기능 확장이 용이한 확장 가능한 아키텍처
면책 조항:
이 문서는 AI 번역 서비스 Co-op Translator를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있으나, 자동 번역에는 오류나 부정확한 내용이 포함될 수 있음을 유의해 주십시오. 원본 문서의 원어가 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우 전문적인 인간 번역을 권장합니다. 본 번역 사용으로 인해 발생하는 어떠한 오해나 잘못된 해석에 대해서도 책임을 지지 않습니다.