TIL - Text_Dungeon 개선하기

Amberjack·2024년 1월 8일
0

TIL

목록 보기
13/83
post-thumbnail
post-custom-banner

✨ 24.01.08 오늘 해결한 문제

오늘은 xml 파일로 쓰고 읽던 것을 json으로 변경해보았다. Json파일을 읽기를 하던 도중에 한글이 ?로 깨져서 나왔다. 처음에는 json으로 읽어들일 때 인코딩이 필요한 줄 알고 찾아보았지만, json은 원래 utf-8을 지원한다는 글을 보게 되었다. 때문에 자연스레 json파일의 인코딩 문제라는 것을 깨닫고 변경해주니 한글이 출력되었다!!

🛠️ 사용자의 입력 값이 유효한지 확인하기

TryParse()까지는 스스로 생각해냈지만, 과제 해설 영상을 보니 굉장히 깔끔한 방식을 쓰시길래 나도 수정했다.

if (!isNumeric || CheckValidInput(behavior, min, max) == false) 을 통해 변환 가능 여부와 함께 유효한 입력값인지 확인하는 함수를 if문의 조건으로 걸어서 사용하셔서 나도 따라해보았다. 확실히 매번 값을 비교하는 것보다 매우 깔끔했다!

▪️ 유효값의 범위 내인지 확인하기 ▼

private static bool CheckValidInput(int behavior, int min, int max)
{
    if(behavior >= min && behavior <= max) { return true; }
    return false;
}

▪️ 사용자의 입력값이 유효한지 비교하기(전체 코드) ▼

// 플레이어의 행동 입력 받기
static int getBehavior(int min, int max)
{
    int behavior;
    bool isNumeric;

    // 잘못된 입력 시 에러 메세지 출력
    while (true)
    {
        Console.WriteLine("\n원하시는 행동을 입력해주세요.");
        Console.Write(">> ");

        try
        {
            isNumeric = int.TryParse(Console.ReadLine(), out behavior);     // 입력 받은 값이 정수형 int 값인지 확인해서 맞을 경우 Parse 시켜주기
            if (!isNumeric || CheckValidInput(behavior, min, max) == false) { throw new CheckInputException("잘못된 입력입니다.\n"); }  // 아닐 경우 에러 메시지 출력
            else break;
        }
        catch (CheckInputException ex)
        {
            Console.ForegroundColor = ConsoleColor.DarkRed;
            Console.WriteLine(ex.Message);
            Console.ResetColor();
        }
    }

    return behavior;
}

private static bool CheckValidInput(int behavior, int min, int max)
{
    if(behavior >= min && behavior <= max) { return true; }
    return false;
}

▪️ 스위치문 활용하기

이후, getBehavior()를 switch문의 제어문으로 활용했다.

// 플레이어의 행동 값 받기
switch (getBehavior(0, 5))
{
    case 1:
        ShowMyStats();
        break;
    case 2:
        ShowMyInventory();
        break;
    case 3:
        ShowShop();
        break;
    case 4:
        EntertheDungeon();
        break;
    case 5:
        GotoInn();
        break;
    default:
        return;
}               

🛋️ 오늘의 회고

Json 코드를 열심히 찾아보았는데 너무 어렵게 작성되어 있었다.. 아마도 json 파싱때문이려나? 결국 과제 해설 ppt에서 코드를 찾았다. 등잔 밑이 어두웠던 것이다.... 🛋️

그 외에는, 저번 토요일날 구매한 스피커가 자꾸 오작동을 일으켜서 하루종일 생고생을 했다... 에휴 🫠

post-custom-banner

0개의 댓글