부트캠프

콘솔앱으로 TextRPG 만들기

noyyo 2023. 8. 18. 20:40

콘솔앱을 통해서 Text기반 RPG를 만들어보려고 한다.

꿈은 거창하게 가지고 완전히 Text로만 진행되는게 아니라 아스키아트처럼 Text를 가지고 얼추 UI를 만들어보려고 기획했다.

클래스 구조를 생각하는데 UI 관리를 어떻게 해야될지가 너무 어렵다.

 

콘솔 앱에서 UI를 배치하고, 포커스를 주고, 키보드 입력을 받아 상호작용을 해야하는데 UI 배치는 그래도 index를 설정해서 리스트로 들고 있는다거나 어떻게 하면 될 것 같은데 포커스와 상호작용이 정말 난관이다.

UI매니저 클래스를 만들어서 모든 UI컴포넌트를 들고 있게 만들까 하니 하나의 인터페이스를 어떻게 구분할지, 포커스를 옮길 때 여러개의 인터페이스가 열려 있다면 어떻게 옮길 것인지 등 하나하나 매니저 클래스에서 다 구현해야 하는데 좋아보이진 않다.

 

UI컴포넌트 클래스에서 포커스를 설정하고 해제하는 메소드를 virtual로 만들어서 모든 컴포넌트들이 각각 어떻게 포커스를 지정하고 옮길지 정할까 하니 하나의 인터페이스 내에서는 잘 작동할 것 같은데 장비창과 인벤토리창이 같이 열려있다거나 하는 상황같이 여러개의 인터페이스가 동시에 켜져있으면 제어하기가 어려워보인다.

 

확실하진 않지만 어짜피 콘솔앱에서 마우스는 사용할 수 없다보니 여러 개의 인터페이스를 띄워도 상호작용하기 어려울 것 같아 아예 그냥 인터페이스는 하나만 고정하는 방식으로 하고 UIWindow라는 클래스를 하나 만들어서 컴포넌트 따로 윈도우 따로 만들어서 매니저는 윈도우만 들고 있고 세세한 동작은 윈도우에서 진행하는 방식을 고민중이다.

 

키보드 입력도 마찬가지로 컴포넌트는 너무 많고 매니저는 너무 세세하니 윈도우 클래스에서 처리하는 방식을 고려해봐야겠다.

 

구조에 골을 싸매고 있는데 괜히 콘솔 가지고 복잡하게 가나 싶기도 하지만 그래도 한 번 해보려고 한다.

'부트캠프' 카테고리의 다른 글

콘솔앱으로 TextRPG 만들기3  (0) 2023.08.23
콘솔앱으로 TextRPG 만들기2  (0) 2023.08.21
BlackJack 게임  (0) 2023.08.17
간단한 Snake게임 만들기2  (0) 2023.08.17
간단한 Snake 게임 만들기1  (0) 2023.08.16