[UE5 TIL] Day 22 - C++ 팀프로젝트

JungHoon Eum·2026년 3월 26일

키워드

  • enum class Clear Screen 화면 지우기 system("cls") 텍스트 좌 우 정렬 GetConsoleWidth GetConsoleScreenBufferInfo()

오늘의 교훈들

  • 팀프로젝트를 진행하기 위한 코딩 프로젝트의 크기가 커질수록, 클래스 관계도가 중요해짐을 느낀다. 설계를 잘 하는 방법에 대해 배워보고 싶다.
  • 기획을 함에 있어서도 클래스 관계도에 대한 이해도가 있으면 매우 도움이 될 것 같다.

코딩 tidbits

  • GameState 관리엔 enum class가 짱. 사실상 1, 2, 3, 4, 5... 역할을 하면서도 그걸 읽는 사람이 이해하기 쉽게 해준다
    • enum class -> switch() case 연계.
  • 엔터 딸깍딸깍으로 넘기기
void WaitForEnter()
{
	std::cout << "Press Enter to Proceed";
	//std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 전에 입력 받았을 때만
	std::cin.get();
}
  • cin.ignore로 버퍼에 남아있는 잔입력(특히 엔터키) 해결. std::numeric_limits<std::streamsize>::max() 로 가능한 한 최대 크기 버퍼지우기.
    \n 만났을 때 지우기 끝.
    이후 std::cin.get() 으로 입력 대충 받아서 다음으로 넘기기.
  • 입력을 받은 후에 WaitForEnter 을 쓰려면 저 중간 코드가 필요.
int BattleUI::GetConsoleWidth()
{
    CONSOLE_SCREEN_BUFFER_INFO csbi;
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
    return csbi.srWindow.Right - csbi.srWindow.Left + 1;
}
  • 텍스트 쉘을 그래픽 쉘처럼 쓰기 위한 기능. 이걸로 콘솔창 크기를 알 수 있으니 좌측부터 출력->중간에 필요한 만큼 띄여쓰기 -> 오른쪽 출력 이런 식으로 가능하다.
void BattleUI::ClearScreen()
{
#ifdef _WIN32
    system("cls");
#else
    system("clear");
#endif
}

#ifdef _WIN32 부분은 윈도우용 화면지우기. 맥/리눅스는 #else 부분.

profile
개발지망생

0개의 댓글