TIL

2023/11/14 TIL

미역제자 2023. 11. 14. 15:24

 


어제 제출했던 과제에 대한 튜터님의 피드벡이 도착했다.

너무 고생 많으셨습니다! 컨셉도 너무 좋고 한바탕 웃고 시작했네요 :)
필요하신 부분에 chatGPT를 활용해서 지나치게 의존하지 않으면서 감을 얻는 것도 좋은 방법이라고 생각합니다.
(1) 아이템 데이터를 설계하는 방법을 조금 더 고민해봐도 좋을 것 같습니다.
지금처럼 ring1, ring2처럼 저장하는 방식보다 더 나은 방식이 많이 있을 것으로 보이며,
csv형 데이터에서 데이터를 입출력한다든지 등의 방법으로 데이터를 읽어들일 경우 훨씬 더 효율적으로 구현할 수 있을 것 같습니다 :)
(2) 던전을 개별 메소드로 구현하는 것보다, 적어도 메소드 1개로 만드는 노력 혹은 던전 정보 클래스를 통해 설계를 개선하는 방법을 고민해보시면 좋을 것 같습니다.
(3) 기능별로 구현완료 시 깃허브 커밋 꼭 부탁드립니다!

 

재밌으셨다니 기분이 좋았다.

 

3번 피드벡을 보고 안그래도 어떻게 하는지 궁금해서 찾아보았다.

내 경우는 깃허브에 로그인을 안해두어서 커밋이 안됐던 경우였다.

로그인을 하고 새로 repository를 만들었다.

https://github.com/Einstephener/Isekai_Developer_rpg_fix.git

 

GitHub - Einstephener/Isekai_Developer_rpg_fix

Contribute to Einstephener/Isekai_Developer_rpg_fix development by creating an account on GitHub.

github.com

 

2번 피드벡을 보고 이지, 노말, 하드 던전의 메소드를 단일화 시켰다.

기왕 단일화 시키는 김에, 몬스터 클래스를 만들고 몬스터와 플레이어 사이의 전투 메서드를 만들었다.

 public static void DungeonField(Character player1, Monster monster)
 {
     Console.Clear();
     Console.WriteLine();
     Console.ForegroundColor = ConsoleColor.Red;
     Console.WriteLine($" {monster.MonsterName} 등장!");
     Console.WriteLine();
     Console.ResetColor();
     Console.WriteLine(" 진행하려면 enter");
     Console.WriteLine();
     Console.ReadKey();
     Console.WriteLine(" 전투 시작");
     int turnCount = 0;
     int saveHp = monster.MonsterHp;
     while (player1.Hp > 0 && monster.MonsterHp > 0) // 플레이어나 몬스터가 죽을 때까지 반복
     {

         Console.WriteLine(" 당신의 공격!");
         Console.WriteLine();
         monster.MonsterHp -= player1.Atk;
         Console.WriteLine($" 당신은 {monster.MonsterName}에게 {player1.Atk}의 데미지를 주었다.");
         Console.WriteLine();
         Console.WriteLine($" {monster.MonsterName}의 남은 체력: {monster.MonsterHp}");
         Thread.Sleep(1000);  // 턴 사이에 1초 대기

         if (monster.MonsterHp <= 0) break;  // 몬스터가 죽었다면 턴 종료

         Console.WriteLine();
         Console.WriteLine($" {monster.MonsterName}의 공격!");
         int GetDamage = (monster.MonsterAtk) - player1.Def; //몬스터의 공격 - 플레이어의 방어력 = 깎이는 체력
         if (GetDamage <= 0)
         {
             GetDamage = 0;
             Console.ForegroundColor = ConsoleColor.Blue;
             Console.Write(" 방어성공!");
             Console.ResetColor();
         }
         player1.Hp = player1.Hp - GetDamage;
         Console.WriteLine($" 체력이 {GetDamage} 감소했다.");
         Console.WriteLine();
         Console.WriteLine($" 당신의 남은 체력 : {player1.Hp}");
         Console.WriteLine();

         Thread.Sleep(1000);  // 턴 사이에 1초 대기

         turnCount++;//진행된 턴수
     }

     if (player1.Hp <= 0)
     {
         Console.WriteLine(" 사망하셨습니다.");
         MedicalCost();
     }
     else if (monster.MonsterHp <= 0)
     {
         Console.WriteLine();
         Console.WriteLine($" {monster.MonsterName}을 처치했습니다.");
         Console.ForegroundColor = ConsoleColor.Blue;
         switch (turnCount) //공격력에 따른 추가 보상
         {
             case 1:

                 player1.Gold = player1.Gold + 3 * monster.MonsterGold;
                 Console.WriteLine(" {0}G 획득", 3 * (monster.MonsterGold));

                 IncreaseExperience(player1, monster);
                 Console.WriteLine(" {0}EXP 획득", 3 * (monster.MonsterExperience));
                 break;
             case 2:
                 player1.Gold = player1.Gold + 2 * monster.MonsterGold;
                 Console.WriteLine(" {0}G 획득", 2 * (monster.MonsterGold));

                 IncreaseExperience(player1, monster);
                 Console.WriteLine(" {0}EXP 획득", 2 * (monster.MonsterExperience));
                 break;
             default:
                 player1.Gold = player1.Gold + monster.MonsterGold;
                 Console.WriteLine(" {0}G 획득", (monster.MonsterGold));

                 IncreaseExperience(player1, monster);
                 Console.WriteLine(" {0}EXP 획득", (monster.MonsterExperience));
                 break;

         }
         Console.ResetColor();
     }
     monster.MonsterHp = saveHp;
     Console.WriteLine();
     Console.WriteLine(" 진행하려면 enter");
     Console.WriteLine();
 }

 

  1. 전투에서 플레이어와 몬스터의 턴이 교대로 오게 했다.
  2. 몬스터를 무찌르는데 걸린 턴에 따라 보상이 바뀌도록 했다.
  3. 전투가 끝난 후 마을 귀환, 난이도 선택 등의 선택지도 이 메서드에 합쳐보려고 했지만 하드모드의 경우는 선택지가 이지, 노말과 달라지기 때문에 그냥 각 메서드에 나눠놓았다.

 

 

'TIL' 카테고리의 다른 글

2023/11/16 TIL  (0) 2023.11.16
2023/11/15 TIL  (0) 2023.11.15
2023/11/13 TIL  (1) 2023.11.13
2023/11/11 TIL  (1) 2023.11.11
2023/11/10 TIL  (0) 2023.11.10