-
-
- 고객이 요구하는 햄버거를 만들어 제공하는 게임입니다.
싱글플레이를 기반으로 손님이 원하는 주문을 받아
모든 음식을 만들어 제공하는것이 목표입니다
- 숫자 키패드를 활용해 필요한 음식 재료를 쌓아 올립니다.
- 스페이스바, 엔터키를 입력해 현재까지 쌓아 올린 음식을 손님 측으로 제시합니다.
- 고객의 주문 중 일치한 주문이 있다면 골드를 획득합니다.
- 일치한 주문이 없다면 소지골드가 차감됩니다.
-
레이아웃시스템을 구상해 제작 간 편의성을 제공합니다.
-
게임의 주요 핵심이 되는 매니저클래스는 싱글톤 디자인패턴으로 구현하였습니다.
-
프로그램의 전반적인 흐름구조, 각 이벤트, 게임내 설정값들을 하나의 공간에서 관리합니다.
-
레이아웃
- 수동적으로 콘솔 커서의 위치를 조정해 UI를 구상하게 될경우 제작의 어려움과 가독성, 유지보수성이 크게 떨어집니다.
레이아웃시스템을 활용할 경우 각 영역의 용도와 출력되어야할 목록을 쉽게 관리할 수 있으며
사용자에게 각 공간의 명확한 공간을 인식시켜줄 수 있음과 동시에,
개발자에게 보다 빠른 개발속도, 유지보수비용, 가독성을 제공하기 위함입니다.
- 수동적으로 콘솔 커서의 위치를 조정해 UI를 구상하게 될경우 제작의 어려움과 가독성, 유지보수성이 크게 떨어집니다.
-
싱글톤 디자인패턴
- 프로그램내에 필요한 클래스가 하나의 객체만 필요한경우 두개 이상의 객체생성을 방지하여 단일성을 유지시킬 수 있습니다.
또한 여러곳에서 접근이 빈번할 경우 전역적인 특징을 활용해 간편한 접근이 가능합니다.
- 프로그램내에 필요한 클래스가 하나의 객체만 필요한경우 두개 이상의 객체생성을 방지하여 단일성을 유지시킬 수 있습니다.
-
핵심 데이터 · 로직의 집중화
- 집중화를 통해 각 진행단계를 한눈에 쉽게 파악이 가능하며
프로그램의 핵심 멤버와 로직을 한 영역에 집중시켜 개발 유지보수성을 높였습니다.
이는 프로그램의 문제 발생시 쉬운 디버깅이 가능하여 개발비용 절감의 이점을 얻을 수 있습니다.
- 집중화를 통해 각 진행단계를 한눈에 쉽게 파악이 가능하며
- 고객이 요구하는 햄버거를 만들어 제공하는 게임입니다.
-
- 문제점
- 단일성, 전역적인 접근이라는 공통점을 갖게 됨으로써 코드작성의 기준이 명확하지 않음
- 해결방안
- Static 클래스의 경우 프로그램 실행 시 해당 프로그램이 종료될 때 까지 메모리에 상주하게 된다.
즉 적합한 용도로 구현하지 않게 될 경우 메모리낭비로 이어지게 됨을 의미하게 된다.
싱글톤의 경우 단일객체 인스턴스를 null 로 전환하여 이와 같은 문제점을 방지할 수 있다.
프로그램의 클래스 작성 시 프로그램이 동작하는 동안 항상 필요한경우 Static 클래스를 활용하고,
반면 필요없는 상황에 언제든 메모리를 해제시켜 이점을 챙길 수 있다 라는 판단이 될 경우 Singleton 디자인패턴을 활용한다.
- Static 클래스의 경우 프로그램 실행 시 해당 프로그램이 종료될 때 까지 메모리에 상주하게 된다.
- 문제점
- 대기중인 Customer 객체집합 내의 요소에 빠른 접근, 추가, 삭제에 필요한 자료구조 선정
- 해결방안
- Queue : 비적합
- for, foreach 문을 통해 각 객체에 접근이 불가능하며, 접근이 필요할 시 각 요소를 전부 반환해야만 함
- List : 적합
- 각 요소의 접근해 필요한 데이터를 쉽게 확인이 가능하며 추가, 삭제시 큰 문제는 없다.
- LinkedList : 적합
- Next 메서드를 통해 모든요소에 쉽게 접근이 가능하여 순열리스트와 같은 효율성을 갖고 있다.
- Customer Remove 메서드가 동작할 경우 각 노드의 주소값만 변경하므로 순열리스트의 Remove 메서드보다 효율성이 높다.
- Queue : 비적합
- 문제점
- Burger 객체는 여러 FoodElement로 구성된다.
만약 유저가 제작한 Burger객체의 FoodElement와 고객이 원하는 Burger의 FoodElement를 전부 비교하는 방식은 비효율적인 방식으로 판단
- Burger 객체는 여러 FoodElement로 구성된다.
- 해결방안
- 모든 음식객체(FoodElement, Burger)는 각자 FoodScore라는 정수값을 갖게하여 각 숫자의 비교만으로 Burger객체가 동일한지 판단하는 방식을 채택
-
문제점
-
해결방안
- 문제점
- 프로그램의 목적상 입력처리 매니저의 경우 특정 키 입력시 프로그램에서 목적에 맞는 행위를 수행해야 한다.
입력처리 매니저의 경우 각 행위가 필요한 객체를 전부 참조하게 될 경우 클래스간 결합도가 크게 증가하게 된다.
- 프로그램의 목적상 입력처리 매니저의 경우 특정 키 입력시 프로그램에서 목적에 맞는 행위를 수행해야 한다.
- 해결방안
- 각 입력키에 대한 이벤트를 정의하고 행위가 필요한 클래스의 객체가 개별적으로 각 이벤트에 자신을 등록하여
입력이 발생하는경우 상황에 맞는 행위를 발생시키도록 구현
- 각 입력키에 대한 이벤트를 정의하고 행위가 필요한 클래스의 객체가 개별적으로 각 이벤트에 자신을 등록하여
- 문제점
- CustomerContainer 의 클래스에서는 비어있는 자리에 대기중인 Customer를 배치시켜야한다.
이때 while문으로 빈자리를 매번 체크하는 로직을 작성하게 되는경우 메인스레드의 성능저하를 유발할 수 있다.
- CustomerContainer 의 클래스에서는 비어있는 자리에 대기중인 Customer를 배치시켜야한다.
- 해결방안
- CustomerContainer 전용 Thread를 별도로 생성하여 SettingManager 에 설정된
빈자리 확인딜레이 값을 확인해 지정된 시간(Sec)단위로 빈자리가 발생되었는지 확인하는 로직을 구현
- CustomerContainer 전용 Thread를 별도로 생성하여 SettingManager 에 설정된
- 문제점



