2023.11.21 오늘의 기록 랜덤 배열 반복문

2023. 11. 22. 00:26카테고리 없음

팀과제의 전투시작 창을 만들기 위해 오전부터 비주얼스튜디오를 켰다.

 

확실히 몇번 만들어본 내용이다보니 쉽게 만들수 있을 거라 생각했다.

 

internal class MonsterInfo

 

몬스터 정보 클래스를 만들어주고 그 안에 몬스터에 대한 정보를 넣어준다.

static List<Monster> _monsters = new List<Monster>(); 몬스터는 리스트형으로 만들어서 필요할 때마다 몬스터를 추가할 수 있다.

 

 static void GameDataSetting()
 {

     Random random = new Random();
     Monster[] choices =
     {
      new Monster("미니언",2,5,15),
      new Monster("공허충",3,9,10),
      new Monster("대포미니언",5,8,25)
  };
     int monsterCnt = random.Next(1, 5); //랜덤으로 마리수 정하기 1~4 중 하나를 선택

     //List<Monster> list = new List<Monster>();
     //list.Add(new Monster("미니언", 2, 5, 15));
     //list.Add(new Monster("공허충", 5, 9, 10));
     //list.Add(new Monster("대포미니언", 5, 8, 25));

     Console.WriteLine("[몬스터 정보]");

 

몬스터 선택을 위한 배열과 함께, 랜덤으로 1~4마리 중 선택이 될 수 있도록 작성했다.

처음에는 Monster monsterType = choices[random.Next(0, 3)]; 이 코드를 for 문 밖에 작성을 하니 같은 몬스터만 랜덤한 횟수로 나오는 오류가 발생했다.

 

튜터님도 찾아가보고 곰곰히 생각해본 결과, 랜덤 횟수를 정하고 그 횟수만큼 다시 랜덤을 돌려야 하니 반복문을 사용하면 해결을 할 수 있었다.

     for (int i = 0; i < monsterCnt; i++) //마리수 정하기
     {
         Monster monsterType = choices[random.Next(0, 3)];
         Console.WriteLine($"Lv.{monsterType.Level} {monsterType.Name}  HP {monsterType.Hp}");
         _monsters.Add(monsterType);
     }

 

Random random = new Random(); 랜덤 코드는 랜덤으로 뽑는 것이 아닌 랜덤하게 나올 수 있도록 만들어주는 것이였다. 그래서 int monsterCnt = random.Next(1, 5); 내가 원하는 건 1~4 사이의 숫자 중 하나이기 때문에 이렇게 작성을 해주었고, 랜덤으로 선택 된 숫자만큼 다시 반복을 하기 위해 0~monsterCnt 까지 

  Console.WriteLine($"Lv.{monsterType.Level} {monsterType.Name}  HP {monsterType.Hp}");

콘솔 창에 나올 수 있게 만들었다.

 

static void BattleStart(Battle battle, Monster monster)
{
    Console.Clear();

    Console.ForegroundColor = ConsoleColor.Cyan;
    Console.WriteLine("Battle!!");
    Console.ResetColor();
    Console.WriteLine();

    // 몬스터 정보
    Random random = new Random();
    Monster[] choices =
    {
            new Monster("미니언",2,5,15),
            new Monster("공허충",3,9,10),
            new Monster("대포미니언",5,8,25)
        };
    int monsterCnt = random.Next(1, 5);

    for (int i = 0; i < monsterCnt; i++) //마리수 정하기
    {
        Monster monsterType = choices[random.Next(0, 3)];
        Console.WriteLine($"Lv.{monsterType.Level} {monsterType.Name}  HP {monsterType.Hp}");
        _monsters.Add(monsterType);
    }
    Console.WriteLine($"Lv.{monster.Level} {monster.Name} HP {monster.Hp}");

    Console.WriteLine("원하시는 행동을 입력해주세요. \n >>");
    Console.WriteLine("1. 공격");
}

 

배틀 시작 창을 만들어서 공격하는 부분을 넣기 위해 작성을 했는데, 몬스터 GameDataSetting에 동일한 내용을 작성해서 수정이 필요할 것 같다.

클래스를 다 나누어서 깃허브에 사용하는 것이 중요했다.

 

오늘 아무런 생각없이 내 임의대로 다른 팀원의 코드와 병합을 해버리고, Program.cs에 내가 작성을 해버리니 다른 팀원들이 혼란스러워 졌다.

 

다행히도 튜터님의 도움으로 각자가 작성한 코드를 메모장에 옮겨둔 뒤 다시 Main에 cs를 만들어주고, 붙여넣기를 하여 정리를 할 수 있었다.

 

현재 Main 함수가 없다보니 콘솔이 동작하지는 않는데, 이것도 수정이 필요할 것 같다.

 

확실히 느낀점은 아직도 배열이나, 메소드, 반복문, 조건문 등 내 머릿속에 있는 내용들을 구현하는 데 어려움이 있는 것 같다.