본문 바로가기

[내배캠] 본 캠프 개발 학습/매일매일 쓰는 TIL

9월 26일 목요일 본 캠프 개발 일지 | 개인 과제 해설 강의

  • 해설 강의
    * 화면, 기능 등으로 해야 할 작업을 구조별로 나눠서 미리 생각해두고 진행하는 편이 좋다. 

  • Console/ReadLine()

내 코드 

Console.Write("\n\n원하시는 행동을 입력해주세요: ");
string input = Console.ReadLine();

   switch (input)
   {



해설 코드

Console.Write("\n\n원하시는 행동을 입력해주세요: ");
string input = Console.ReadLine();
int result = int.Parse(Input); // input한 정수형 결과를 result에 저장
 
 switch (result)
 {


숫자를 입력받아 처리하는 경우라면 해설 코드의 방식이 더 명확하고, 문자열 명령어를 입력받는 경우라면 내 코드 방식이 더 적합하다. 

 

  • 화면(UI)

나의 코드 

  Console.Write("\n\n원하시는 행동을 입력해주세요: ");
  string input = Console.ReadLine();

  switch (input)
  {
      case "1":
          Player.ShowStatus();
          break;
      case "2":
          Inventory.ShowInventory();
          break;
      case "3":
          Store.ShowStore();
          break;
      default:
          Console.WriteLine("잘못된 선택입니다. 다시 선택해주세요.");
          PlayerSelect();
          break;

 

해설 코드 

  Console.Write("\n\n원하시는 행동을 입력해주세요: ");
  string input = Console.ReadLine();

  switch (input)
  {
      case "1":
          DisplayStatUI
          break;
          
Static void DisplayStatUI()
{

 

 다른 클래스로 넘어가지 않고 동일한 클래스에서 void 함수를 만들어서 출력. 

 

  • Console.clear();

콘솔 프로그램에서 화면을 초기화하거나 갱신할 때 이전 내용이 남지 않도록 하여 더 깔끔한 화면을 제공하기 위해 사용된다. 쉽게 말해서 화면 전환. 

 

  • 문자열 입력 시 "잘못된 입력입니다." 출력 

    나의 코드 
    default:
        Console.WriteLine("잘못된 선택입니다. 다시 선택해주세요.");
        ChadSelect();
        break;
}

 

해설 코드 

  static int CheckInput(int min, int max) 
    {
        int result;
        while (true)
        {
            string input = Console.ReadLine(); 
            bool isNumber = int.TryParse(input, out result);
            if (isNumber)
            {
                if(result >= min && result <= max)
                    return result; 
            }
            Console.WriteLine("잘못된 입력입니다!!!!");
        }
    }


 나의 경우 "1", "2", "3" 등 각각의 경우를 case로 구분했지만, 해설의 경우 코드를 간결하게 바꾸기 위해 값을 체크하는 함수를 만들어서 사용했다. 
 먼저 isNumber 함수로 숫자인지 체크한다. input을 정수형 result로 바꿔 if 문을 돌렸을 때 정수가 아니라면 "잘못된 입력입니다"가 출력되는 반복문을 실행한다.
 만약 숫자가 맞다면 선택지 내 번호를 체크했는지 범위 조건문으로 체크한다. 함수에 매개변수를 사용하면 해당 함수를 사용하는 메서드에서 매개변수에 해당하는 값을 넣을 수 있다. 

  • private

    해당 클래스에서만 접근할 수 있다는 의미의 함수

  • 캐릭터 상태창

    해설 코드 
Console.WriteLine($"Lv. {level:D2}");
Console.WriteLine($"{name} {{ {job} }}");


최소 두 자리 수로 표시하기 위한 서식 지정자(D2)를 사용
level 값이 5라면, 05로 출력되고, level 값이 12라면, 그대로 12로 출력됨 

  • 캐릭터 상태창 데이터 입력
   static void Main(string[] args)
    {
        SetData();
        DisplayMainUI();
    }

    static void SetData() // 상태창 데이터를 함수로 저장
    {
        level = 1;  
        name= "Chad";
        job = "전사"; 
        atk = 10;    
        def = 5;    
        hp = 100;     
        gold = 10000;
        
    }

 

  • 아이템 장착 시 달라지는 공격력/방어력 출력 

    해설 코드
 Console.WriteLine(extraAtk == 0 ? $"공격력 : {atk}" : $"공격력 : {atk + extraAtk} (+{extraAtk})");
 Console.WriteLine(extraDef == 0 ? $"방어력 : {def}" : $"방어력 : {def + extraDef} (+{extraDef})");

 


 삼항 연산자를 통해 추가 공/방어력이 0이면 전자를 출력 : 아니라면 후자를 출력하게 만듦


  • 01:30:00