0
저는 게임을 쓰고 있습니다. 간단한 텍스트 입력을 위해 콘솔이 필요합니다. 파일 이름과 간단한 값. 다음, 결과 콘솔이 활성화되고 마지막 이벤트가 키 누르기 인 경우,간단한 크로스 플랫폼 C++ GUI 콘솔 - 방법?
class Console
{
public:
typedef std::list<String> InputList;
enum Result
{
NOTHING = 0,
ENTERED,
ESCAPED
};
static const String& GetInput() { return input; }
static Result Query(SDLKey lastKey)
{
if(lastResult == ENTERED || lastResult == ESCAPED)
{
input.clear();
}
switch (lastKey)
{
case SDLK_a:
case SDLK_b:
case SDLK_c:
case SDLK_d:
case SDLK_e:
case SDLK_f:
case SDLK_g:
case SDLK_h:
case SDLK_i:
case SDLK_j:
case SDLK_k:
case SDLK_l:
case SDLK_m:
case SDLK_n:
case SDLK_o:
case SDLK_p:
case SDLK_q:
case SDLK_r:
case SDLK_s:
case SDLK_t:
case SDLK_u:
case SDLK_v:
case SDLK_w:
case SDLK_x:
case SDLK_y:
case SDLK_z:
case SDLK_0:
case SDLK_1:
case SDLK_2:
case SDLK_3:
case SDLK_4:
case SDLK_5:
case SDLK_6:
case SDLK_7:
case SDLK_8:
case SDLK_9:
case SDLK_SLASH:
case SDLK_BACKSLASH:
case SDLK_PERIOD:
case SDLK_COMMA:
case SDLK_SPACE:
case SDLK_UNDERSCORE:
case SDLK_MINUS:
input += static_cast<char> (lastKey);
lastResult = NOTHING;
break;
case SDLK_RETURN:
lastResult = ENTERED;
break;
case SDLK_ESCAPE:
lastResult = ESCAPED;
break;
}
return lastResult;
}
protected:
static Result lastResult;
static String input;
};
이이 응용 프로그램의 메인 이벤트 루프에서 호출 할 것이다 : 그것은 간단한의에서 SDL을 사용
, 내 콘솔은 다음과 같습니다 는 입력이 필요한 상태에서 처리됩니다.
당연히, 그것은 매우 어색해 보입니다 ... 내 게임의 윈도우에서 쉽게 렌더링 할 수있는 간단한 콘솔을 구현하는 더 좋은 방법은 무엇입니까? (std :: cout을 재 라우팅하거나 코드를 작성하여 UNIX 콘솔 등을 불러오는 것과 같이 매우 이포 할 수없는 솔루션에 가까이 가지 말것)