본문 바로가기
게임 개발 일지/내일배움캠프 TIL

TextRPG - 텍스트 색상 변경 / CheckValidInput

by 빛하_ 2023. 11. 13.

 

 

C# 스크립트를 이용해 콘솔 RPG 게임 만들기

 

텍스트 색상 변경 함수

 

콘솔을 실행했을 때 WriteLine 단위로 색상을 변경하기 위해 보통 아래와 같은 코드를 사용한다. 

Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("1. 인벤토리");
Console.ResetColor();

 

만약 RPG 게임처럼 매 장면마다 색상 변환이 필요한 상황에서

위와 같은 코드를 계속 사용하는 것은 개발자도 불편하고, 스크립트도 더 무거워진다.

 

이 때, 색상변환에 필요한 코드를 함수로 만든다면 코드 입력을 효율적으로 할 수 있다.

private static void ShowHighlightedText(string text)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine(text);
Console.ResetColor();
}

 

ShowHighlightedText("1. 인벤토리");

이제 이렇게 한 줄로 텍스트 색을 변경할 수 있다.

 

 

 

 

CheckValidInput 으로 input 구별하기

 

Input 값을 받아 다음 명령을 수행하는 콘솔 RPG에서는 유저의 input 값이 정확해야 할 필요가 있다.

이 때 input이 정확하지 않으면 게임이 종료될 수 있다.

따라서 범위 내에 존재하지 않는 input의 경우 "잘못된 입력입니다." 를 출력함으로써

게임 종료를 방지하고 유저에게 올바른 값을 입력하도록 유도할 수 있다.

  static int CheckValidInput(int min, int max)
  {
      while (true)
      {
          string input = Console.ReadLine();

          bool parseSuccess = int.TryParse(input, out var ret);
          if (parseSuccess)
          {
              if (ret >= min && ret <= max)
                  return ret;
          }

          Console.WriteLine("잘못된 입력입니다.");
      }
  }

 

 

CheckValidInput을 정의했다면

콘솔의 각 장면 메서드마다 switch 또는 if / else 문을 활용하면서 input에 따른 장면 전환을 할 수 있다.

int input = CheckValidInput(1, 3);
switch (input)
{
    case 1:
        DisplayMyInfo();
        break;

    case 2:
        DisplayInventory();
        break;
    case 3:
        DisplayShop();
        break;
}

 

 

 

 

오늘의 회고

 

C# 문법 기초 2주차가 시작됐다.

오늘은 개인과제 제출 전 팀원들끼리 진행 상황을 공유하고 서로 코드를 공유하며 개선방법에 대해 토의했다.

나는 주말에 겨우 필수항목까지 완성시켰는데, 팀원들은 선택사항도 추가하고 코드도 깔끔하게 정리했었다.

팀원들의 코드를 보며 처음부터 코드 구조를 단정하게 잡고 시작하는 게 좋다는 것을 알게 되었다.

팀 과제에 앞서 팀원들의 코드 진행방식을 이해하는 게 필요하다고 느꼈다.

프로젝트의 좋은 서포터가 되기 위해서 아직 공부가 더 필요하다!!

개인 과제 개선이 막히면 코드 이해를 위해 microsoft의 C# 설명서를 읽어야겠다.

 

오늘 과제 개선 작업 중에 아이템 상점을 만들고 구매하는 것까지는 완성시켰다.

내일은 장비 판매, 아이템 정렬 부분에 손을 대야겠다.

 

 

 

 

 

댓글