Unity_2기 내일배움캠프 TIL

Unity_2기 3주차 (231117)

잼잼재미 2023. 11. 17. 21:09

오늘은 본격적으로 조원들과 프로그래밍 심화 팀과제를 시작했다. 팀과제 내용은 개인과제와 동일한 스파르타 던전 배틀 (Text 게임) 만들기다. 개인과제와 똑같지만 추가 기능을 몇가지 더 필수적으로 구현해야 한다. 일단, 본격적인 과제 시작에 앞서 구현할 기능과 분담에 대한 내용을 회의를 했다.

 

회의 내용


 

구현할 기능


1. 게임시작 화면 (필수)

2. 상태 보기 (필수)

3. 전투 (필수)

 - 기본 공격

 - 아이템 사용

 - 스킬 사용

4. 상점 (추가)

 - 아이템 구매, 판매

5. 데이터 저장 (추가)

6. 콘솔창 Text 색변경으로 꾸미기

 

 

내가 구현한 기능


상태 보기


 private static void StatusMenu()
{
    Console.Clear();
    Console.WriteLine("상태 메뉴입니다.");
    Console.WriteLine("캐릭터의 정보를 표기하는 곳입니다.");

    Console.WriteLine($"플레이어 이름: {player.Name} ( {player.Occupation} )");
    Console.WriteLine("LV: {0}", player.Level.ToString("00"));
    Console.WriteLine();
    Console.WriteLine($"공격력: {player.Atk}");
    Console.WriteLine($"방어력: {player.Def}");
    Console.WriteLine($"체력: {player.Health}");
    Console.WriteLine($"소지골드: {player.Gold}");
    Console.WriteLine(" ");

    Console.WriteLine("0. 뒤로가기");
    Console.WriteLine("");

    switch(CheckValidInput(0, 0))
    {
        case 0:
            StartMenu(player.Occupation);
        break;
    }

}

캐릭터의 전체적인 능력치를 확인할 수 있다. 개인과제의 내용과 거의 동일해서 큰 어려움은 없었다.

 

 

WriteColorFont 함수 작성


internal class FontColor
{
    public enum Color
    {
        Black,
        DarkBlue,
        DarkGreen,
        DarkCyan,
        DarkRed,
        DarkMagenta,
        DarkYellow,
        Gray,
        DarkGray,
        Blue,
        Green,
        Cyan,
        Red,
        Magenta,
        Yellow,
        White,
    }

    Color color;

    public void WriteColorFont(string text, Color color)
    {
        switch (color)
        {
            case Color.Black:
                Console.ForegroundColor = ConsoleColor.Black;
                break;

            case Color.DarkBlue:
                Console.ForegroundColor = ConsoleColor.DarkBlue;
                break;

            case Color.DarkGreen:
                Console.ForegroundColor = ConsoleColor.DarkGreen;
                break;

            case Color.DarkCyan:
                Console.ForegroundColor = ConsoleColor.DarkCyan;
                break;

            case Color.DarkRed:
                Console.ForegroundColor = ConsoleColor.DarkRed;
                break;

            case Color.DarkMagenta:
                Console.ForegroundColor = ConsoleColor.Magenta;
                break;

            case Color.DarkYellow:
                Console.ForegroundColor = ConsoleColor.DarkYellow;
                break;

            case Color.Gray:
                Console.ForegroundColor = ConsoleColor.Gray;
                break;

            case Color.DarkGray:
                Console.ForegroundColor = ConsoleColor.DarkGray;
                break;

            case Color.Blue:
                Console.ForegroundColor = ConsoleColor.Blue;
                break;

            case Color.Green:
                Console.ForegroundColor = ConsoleColor.Green;
                break;

            case Color.Cyan:
                Console.ForegroundColor = ConsoleColor.Cyan;
                break;

            case Color.Red:
                Console.ForegroundColor = ConsoleColor.Red;
                break;

            case Color.Magenta:
                Console.ForegroundColor = ConsoleColor.Magenta;
                break;

            case Color.Yellow:
                Console.ForegroundColor = ConsoleColor.Yellow;
                break;

            case Color.White:
                Console.ForegroundColor = ConsoleColor.White;
                break;

            default:
                break;
        }

        Console.Write(text);
        Console.ResetColor();
    }

}

조원들도 쉽게 사용할 수 있게  색깔있는 글자를 작성할 수 있도록 클래스를 만들었다. 많이 사용하는 색깔들을 Enum으로 정리해서 Switch문으로 받았고, 매개변수로 글자와 색깔을 받아서 쉽게 사용할 수 잇다.

 

 

오늘의 회고


회의를 통해 업무분담을 하는데 시간을 가장 많이 썼다. 개인 프로젝트로 했던 과제인 만큼 생각보다 협업을 하기에는 내용이 조금 적었다. 그래서 필수 구현부분과 추가 구현부분을 상의해서 최대한 업무를 분담했다. 매일 회의를 통해 각자 구현한 부분들과 어려운 부분들을 충분히 이야기하면서 완성 후, 추가적인 구현부분을 생각하기로 했다. 내가 맡은 부분은 생각보다 일찍 끝날 것 같았지만, 생각보다 그렇게 빠르게 끝내지는 못했다. 항상 느끼는 부분은 코드로 구현하는 부분은 이미 내가 알던 부분이라도 생각보다 시간이 많이 걸린다는 것이다. 그래서 항상 차근차근 하나씩 구현을 목표로 하는 것이 중요한 것 같다. FontColor 클래스를 따로 cs 만들어서 작성했는데, 이 클래스를 여러가지 cs파일에서 사용하기 위해서는 각각 모두 new 를 통해 인스턴스를 생성해줘야 사용할 수 있었다. 이러한 방법이 맞는지는 공부를 통해 알아볼 것이다. 그리고 클래스 안에 있는 WriteColorFont() 함수를 사용하기 위해서는 main 함수에서 WriteColorFont("abcd", FontColor.Color.Black) 이런 식으로 클래스명으로 시작해서 받아와야 했다. 클래스 안에 있는 enum은 클래스명으로 받아야 한다는 것을 알게되었다.

'Unity_2기 내일배움캠프 TIL' 카테고리의 다른 글

Unity_2기 4주차 (231121)  (2) 2023.11.21
Unity_2기 4주차 (231120)  (1) 2023.11.20
Unity_2기 3주차 (231116)  (0) 2023.11.16
Unity_2기 3주차 (231115)  (0) 2023.11.15
Unity_2기 3주차 (231114)  (1) 2023.11.14