전체 코드

using System;

namespace CSharp
{
    class Program
    {
        // 직업(Enum) 정의
        enum ClassType
        {
            None = 0,   // 기본값 (유효하지 않은 선택)
            Knight = 1, // 기사
            Archer = 2, // 궁수
            Mage = 3    // 법사
        }

        // 직업을 선택하는 함수
        static ClassType ChooseClass()
        {
            Console.WriteLine("직업을 선택하세요");
            Console.WriteLine("[1] 기사");
            Console.WriteLine("[2] 궁수");
            Console.WriteLine("[3] 법사");

            ClassType choice = ClassType.None; // 기본값 설정
            string input = Console.ReadLine(); // 사용자 입력 받기
            
            switch (input)
            {
                case "1":
                    choice = ClassType.Knight;
                    break;
                case "2":
                    choice = ClassType.Archer;
                    break;
                case "3":
                    choice = ClassType.Mage;
                    break;
            }

            return choice; // 선택한 직업 반환
        }

        // 프로그램의 시작점 (메인 함수)
        static void Main(string[] args)
        {
            while (true)
            {
                ClassType choice = ChooseClass();  // 직업 선택 함수 호출
                
                if (choice != ClassType.None)  // 유효한 선택이면 루프 종료
                    break; 
            }
        }
    }
}

1. 코드 개요

  • 사용자 입력을 받아 직업을 선택하는 기능을 구현
  • 입력값이 유효할 때까지 반복
  • 선택 가능한 직업: 기사(Knight), 궁수(Archer), 법사(Mage)

2. 코드 분석

🔹 1) 직업 열거형(Enum)

        enum ClassType
        {
            None = 0,
            Knight = 1,
            Archer = 2,
            Mage = 3
        }
  • enum (열거형): 특정한 정해진 값들을 관리하는 데 사용됨.
  • 사용 목적: Knight, Archer, Mage 같은 직업을 숫자와 연결하여 관리.
  • 값 설명:
    • None = 0 → 기본값 (유효하지 않은 선택)
    • Knight = 1 → 기사
    • Archer = 2 → 궁수
    • Mage = 3 → 법사

🔹 2) 직업 선택 함수 (ChooseClass())

        static ClassType ChooseClass()
        {
            Console.WriteLine("직업을 선택하세요");
            Console.WriteLine("[1] 기사");
            Console.WriteLine("[2] 궁수");
            Console.WriteLine("[3] 법사");

            ClassType choice = ClassType.None; // 기본값 설정
            string input = Console.ReadLine(); // 사용자 입력 받기
            
            switch (input)
            {
                case "1":
                    choice = ClassType.Knight;
                    break;
                case "2":
                    choice = ClassType.Archer;
                    break;
                case "3":
                    choice = ClassType.Mage;
                    break;
            }

            return choice; // 선택한 직업 반환
        }
  • 직업 선택을 안내하는 메시지 출력
  • 사용자의 입력(Console.ReadLine())을 받아 문자열을 비교
  • 입력값이 1, 2, 3일 때 각각의 직업으로 설정
  • 그 외의 값 입력 시 기본값(None) 유지

📌 🎯 개선할 점

  • 잘못된 입력이 들어왔을 때 "올바른 값을 입력하세요" 같은 메시지를 출력하도록 수정 가능.

🔹 3) 메인 함수 (Main())

        static void Main(string[] args)
        {
            while (true)
            {
                ClassType choice = ChooseClass();  // 직업 선택 함수 호출
                
                if (choice != ClassType.None)  // 유효한 선택이면 루프 종료
                    break; 
            }
        }
  • 무한 루프(while (true))를 사용하여 직업 선택 반복
  • 유효한 직업 선택 시(None이 아닐 때) 루프 종료
  • 잘못된 입력이 들어오면 다시 입력받음

📌 🎯 개선할 점

  • while (true) 대신 do-while문을 사용하면 가독성이 좋아질 수 있음.
  • 선택된 직업을 출력하는 기능을 추가하면 더 명확해짐.

profile
李家네_공부방

0개의 댓글