2025.02.12 (수)

윤혜진·2025년 2월 12일

📍오늘의 학습 키워드

  • 팀 프로젝트 개발
    • ViewManager 작업
    • MainScene 구현

📍학습 내용

  • MainScene 구현

    • 우리 팀이 만드는 게임은 모험가가 아닌 마왕이 던전 꼭대기에서 1층으로 내려가는 게임인데, 그 모습을 플레이어에게 시각적으로 보여주고 싶어서 아스키 아트로 플레이어의 진척도를 표현해주기로 했다.
    • 아래는 피그마로 그려보았던 와이어 프레임:
         
    • 이처럼 색이 없었다가 생기는 텍스트들을 그려주기 위해 다음과 같은 메서드를 만들었다:
    // 컬러 출력을 동적으로 관리하고 싶을 때 사용
    // bool값을 받아와서 isColor가 true되면 받은 color값을 출력한다.
    public static void PrintText(int cursorX, int cursorY, string text, ConsoleColor color, bool isColor)
    {
        if (isColor)
            Console.ForegroundColor = color;
    
        CursorX = cursorX;
        CursorY = cursorY;
        Console.SetCursorPosition(CursorX, CursorY);
        Console.Write(text);
    
        if (isColor)
            Console.ForegroundColor = ConsoleColor.White;
    
        CursorY++;
    }
    • 처음에는 하얀색으로 출력 되었다가 매개변수로 받은 bool 변수가 true가 되면 입력받은 색으로 변하는 메서드인데, 아래는 해당 메서드를 적용해서 탑을 그려주는 코드의 모습이다.
    • 밑줄을 친 clearCheck라는 bool 변수는 총 19개가 있으며, 플레이어의 공략 진척도가 변경될 때마다 공략 진척도만큼 for문을 돌려 clearCheck 변수를 true로 초기화해주었다. (프로퍼티를 이용해 공략 진척도 수치 변경 감지)
      //플레이어의 공략 진척도
      private int dungeonClearLevel = 0;      //던전에 입장 시도를 할 경우 1 증가하여 반환
      public int DungeonClearLevel
      {
          get
          {
              return dungeonClearLevel;
          }
          set
          {
              //플레이어의 공략 진척도에 변화가 생기면
              //StageClearCheck() 메서드를 통해 각 스테이지 클리어 여부를 확인한다.(후진했을 수도 있으므로...)
              if (value < 20)
              {
                  dungeonClearLevel = value;
                  StageClearCheck();
              }
          }
      }
      public bool[] clearCheck = new bool[19];
    • 아래는 실제 적용 모습!!!

📍겪은 어려움

  • Win11에서 콘솔 버퍼를 지정해주는 메서드가 제대로 적용되지 않는 이슈 :
    • 분명 버퍼와 콘솔창 크기를 SetBufferSizeSetWindowSize메서드로 잘 정해주었는데, 특정 팀원들만 게임이 터지는 버그가 발생했다.
    • 디버그를 해보니 높이가 30이 넘는 순간 버퍼가 터져서 여러가지 방법을 찾아보았으나 달라지는 건 없었음.
    • 결국 튜터님께 찾아가 문의를 해보니 윈도우 11이 콘솔 지원을 금지하며 버퍼를 정해주는 메서드가 잘 적용되지 않는 것 같다는 답변을 받음.
    • 해결 방식: 스크롤 뷰 메서드를 만들어서 출력되는 아이템들이 많아져도 플레이어가 키입력을 통해 한 줄씩 내려 확인할 수 있도록 했다.
    • 또다른 문제: 커서 기능에 스크롤뷰까지 포함되니 코드가 복잡해지고 어려 오류가 생기기 시작했는데...... (제우님 민영님 정말 고생 많으셨습니다...)

📍회고 및 반성

  • 수요일이면 개발을 마무리하고 슬슬 발표를 준비해야 했는데 미구현된 기능들이 너무 많아서 밤을 새울 수밖에 없었다.
  • 내 자신이 열심히 하지 않았다고 생각하진 않지만, 그래도 더 잘할 수 있지 않았을까? 같은 생각이 들어서 아쉽다.
  • 이번 경험을 바탕으로 다음에는 더 잘할 수 있는 나 자신이 되고 싶다.

1개의 댓글

comment-user-thumbnail
2025년 4월 11일

좋은 부분
: "이번 경험을 바탕으로 다음에는 더 잘할 수 있는 나 자신이 되고 싶다."

이 마음만으로도 충분하다고 생각함!!!

답글 달기