C# 문법 종합반 개인 과제 - 던전 게임 만들기 / 기본 화면 세팅 /

2023. 8. 18. 16:57C# 문법 종합반

- C# 콘솔을 통해 마을에서 장비를 구하는 게임을 텍스트로 구현한다.

- 상점의 아이템들 중 내가 원하는 장비를 선택해 착용한다.

- 장비는 객체나 구조체를 활용, 여러 데이터를 다루는 부분은 배열을 활용.

 

<제작 프로세스>

1. 기본 화면 세팅

2. 아이템 정보 세팅 (배열 활용)

3. 기본화면 중 인벤토리에 아이템 정보 기입 

4. 인벤토리를 통해 장비 장착 화면에서 아이템을 착용 및 해제할 수 있도록 적용

5. 추가 원하는 작업

 

 

1. 게임 기본 화면을 세팅한다.

- 게임 메인 페이지 / 내 정보 / 인벤토리 / 아이템 착용 및 해제

namespace project_dungeon
{
    internal class Program
    {
        private static Character player; // 플레이어 변수 선언

        static void Main(string[] args)  // 프로그램 메인 화면
        {
            GameDataSetting();  // 게임 데이터 세팅
            DisplayGameIntro();  // 게임 인트로 표시
            DisplayInventory();  // 인벤토리
            InventorySetting(); // 
        }

        static void GameDataSetting()  // 게임 데이터 세팅
        {
            // 캐릭터 정보 세팅
            player = new Character("Chad", "전사", 1, 10, 5, 100, 1500);  // 플레이어 정보 초기화

            // 아이템 정보 세팅
            // 추가할 것
        }

        static void DisplayGameIntro()  // 게임 인트로 디스플레이
        {
            Console.Clear();  // 콘솔화면 클리어

            Console.WriteLine("스파르타 마을에 오신 여러분 환영합니다.");
            Console.WriteLine("이곳에서 던전으로 들어가기 전 활동을 할 수 있습니다.");
            Console.WriteLine();
            Console.WriteLine("1. 상태보기");
            Console.WriteLine("2. 인벤토리");
            Console.WriteLine();
            Console.WriteLine("원하시는 행동을 입력해주세요.");

            int input = CheckValidInput(1, 2);  // 1 혹은 2를 사용자로부터 입력받는 메서드

            switch (input)  // switch문 (1혹은 2를 선택)
            {
                case 1:
                    DisplayMyInfo();
                    break;

                case 2:
                    DisplayInventory();
                    break;

            }
        }

        static void DisplayMyInfo()  // 플레이어 상태 표시 메서드
        {
            Console.Clear();

            Console.WriteLine("상태보기");
            Console.WriteLine("캐릭터의 정보르 표시합니다.");
            Console.WriteLine();
            Console.WriteLine($"Lv.{player.Level}");
            Console.WriteLine($"{player.Name}({player.Job})");
            Console.WriteLine($"공격력 :{player.Atk}");
            Console.WriteLine($"방어력 : {player.Def}");
            Console.WriteLine($"체력 : {player.Hp}");
            Console.WriteLine($"Gold : {player.Gold} G");
            Console.WriteLine();
            Console.WriteLine("0. 나가기");

            int input = CheckValidInput(0, 0);  // ///////무슨 코드인지 모르겠음

            switch (input)
            {
                case 0:
                    DisplayGameIntro();  // 0을 입력하면 게임 인트로를 다시 보여주기
                    break;
            }
        }

        static void DisplayInventory()  // 인벤토리 표시
        {

            Console.Clear();

            Console.WriteLine("인벤토리");
            Console.WriteLine("보유 중인 아이템을 관리할 수 있습니다.");
            Console.WriteLine();
            Console.WriteLine("[아이템 목록]");
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("원하시는 행동을 입력해주세요");
            Console.WriteLine("1. 장착 관리");
            Console.WriteLine("0. 나가기");

            int input = CheckValidInput(0, 1);  // ///////무슨 코드인지 모르겠음

            switch (input)
            {
                case 0:
                    DisplayGameIntro();  // 0을 입력하면 게임 인트로를 다시 보여주기
                    break;

                case 1:
                    InventorySetting();
                    break;  
            }
        }


        static void InventorySetting()  // 장착관리 표시
        {
            Console.Clear();

            Console.WriteLine("장착 관리");
            Console.WriteLine("보유 중인 아이템을 관리할 수 있습니다.");
            Console.WriteLine();
            Console.WriteLine("[아이템 목록]");
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("원하시는 행동을 입력해주세요");
            Console.WriteLine("0. 인벤토리로");

            int input = CheckValidInput(0, 0);  // 

            switch (input)
            {
                case 0:
                    DisplayInventory();  // 
                    break;
            }
        }


        static int CheckValidInput(int min, int max)
        {
            while (true)
            {
                string input = Console.ReadLine();

                bool parseSuccess = int.TryParse(input, out var ret);
                if (parseSuccess)
                {
                    if (ret >= min && ret <= max)
                        return ret;
                }

                Console.WriteLine("잘못된 입력입니다.");
            }
        }
    }


    public class Character  // 캐릭터 정보
    {
        public string Name { get; }
        public string Job { get; }
        public int Level { get; }
        public int Atk { get; }
        public int Def { get; }
        public int Hp { get; }
        public int Gold { get; }

        public Character(string name, string job, int level, int atk, int def, int hp, int gold)
        {
            Name = name;
            Job = job;
            Level = level;
            Atk = atk;
            Def = def;
            Hp = hp;
            Gold = gold;
        }
    }


}

static void main -> GameDataSetting / DisplayMyInfo / DisplayGameIntro / DisplayInventory / InventorySetting

을 통해 게임 기본 세팅 및 3가지 페이지를 구성했다.

- 인트로 화면에서 1을 입력해 상태창으로 이동 가능 - 내 정보 확인 - 0을 눌러 메인 화면으로 복귀

- 인트로 화면에서 2를 입력해 인벤토리로 이동 - 1을 입력해 장비 착용 - 혹은 0을 눌러 메인 화면으로 복귀

- 장비 착용 화면에서 0을 눌러 인벤토리로 복귀 가능