Java 프로그래밍 - 팩맨(Pacman) - 컴퓨터정보처리학과 김준경
Pacman이란? 일본 남코(Namco)사의 1981년도 작품 주인공은 상하좌우의 움직임만을 가짐 적들을 피해 먹이를 모두 먹으면 성공
제작동기 및 목표 제작동기 목표 관심을 가지고 있는 분야 제작 후에도 사용될 가능성이 높음 객체지향 구조를 잘 살릴 수 있는 프로그램 목표 각 객체의 유기적인 움직임 화면에 직접적으로 보여지는 기능을 우선적으로 제작 최적화, 소스 분할 등의 작업은 생략
제작 환경 시스템 사용도구 JRE 5.0 운영체제 : WindowsXP SP2 웹브라우저 : Explorer 6.0, Firefox 1.0 사용도구 JDK 5.0 Vim 6.3 Win32용 (소스 편집기) Photoshop CS (그래픽 툴)
프로그램 구조 Data Class Manager Class 데이터를 가지고 있는 단위 데이터의 입출력 기능 예) Actor, Character, Hero, Enemy, Meal 등 Manager Class 데이터 클래스들을 관리 프로그램의 작동순서를 결정 예) Game, Animator, Mapper, NPCs 등
Data Class 구조 Actor Character Hero Enemy Meal Tile 애니메이션이 가능 충돌이 발생할 수 있음 Character 방향성을 가짐 Tile의 모양에 따라 이동여부가 결정 Hero 사용자의 입력에 따라 움직임 Enemy와 충돌할 경우 기회 소진 Enemy 인공지능을 통해 움직임 Meal 점수를 가짐 주인공과 충돌할 경우 소멸 Tile 맵을 구성하는 단위
Manager Class 구조 Pacman (Launcher) Game Animator (Ranker) 미완성 NPCs 게임을 시작시키는 객체 사용자와 프로그램 사이를 연결 Game 게임 루틴을 실행 Animator Actor가 움직일 수 있도록 도와줌 (Ranker) 미완성 사용자의 점수를 기록함 NPCs Enemy, Meal 데이터를 관리 Mapper 멥 데이터를 읽어 Tile을 구성 GameDisplay 화면 더블 버퍼링 지원
실행순서 객체 생성 및 초기화 맵 데이터를 기반으로 적, 타일, 먹이 등을 화면에 배치 이미지 파일 읽어들이기 필요한 값 설정 (update_time, show_fps) 맵 데이터를 기반으로 적, 타일, 먹이 등을 화면에 배치 Thread를 이용해 게임이 끝날 때까지 게임을 업데이트 게임에서 필요로 하는 속도에 맞춰서 업데이트 CPU 점유율을 낮춤 업데이트 내용 사용자 입력 수행 캐릭터 이동 객체간의 충돌체크 화면출력
참고자료 문서 프로그램 그래픽 Java Developer Network Site (공식 사이트) 자바 프로그래밍 입문 (수업 교재) 프로그램 Javanoid Game Source 제작자 : Remi Faitout 그래픽 eBaum’s World :: Pacman 제작자 : Neave