본문 바로가기
프로그래밍/콘솔프로젝트

TextRpgGame Ver.1

by SUGI_ 2023. 6. 29.

클래스 공부를 위한 -> 구조 공부

namespace TextRpgGame02
{
    internal class Program
    {
        static void Main(string[] args)
        {
            MainGame mainGame = new MainGame();

            //게임을 실행 시키기 위해
            mainGame.Initialize();
            mainGame.Progress();
        }
    }
}
namespace TextRpgGame02
{
    internal class Info
    {
        //필요 정보
        //이름, 공격력, hp
        public string name;
        public int attack;
        public int hp;
    }
}
// 플레이어 선택을 위한
namespace TextRpgGame02
{
    //직업 선택을 위함
    internal class Player
    {
        public Info info;

        // 직업을 선택하기 위한 내용
        public void SelectJob()
        {
            info = new Info();

            Console.WriteLine("직업을 선택하세요 \n 1.기사 2.마법사 3.도둑 \n 입력하시오");

            //직업 선택 수 1-3
            int ilnput = 0;

            // 입력값을 받아야 함.
            ilnput = int.Parse(Console.ReadLine());

            //switch 문을 통해 선택한 수의 값을 지정해야 함.
            switch(ilnput)
            {
                case 1:
                    info.name = "기사";
                    info.attack = 100;
                    info.hp = 100;
                    break;
                case 2:
                    info.name = "마법사";
                    info.attack = 80;
                    info.hp = 100;
                    break;
                case 3:
                    info.name = "도둑";
                    info.attack = 70;
                    info.hp = 100;
                    break;
            }
        }

        //입력 후에 나와야 하는 값
        public void Render()
        {
            Console.WriteLine("======================");
            Console.WriteLine("직업 이름 : " + info.name);
            Console.WriteLine("체력 : " + info.hp + "\t공격력 : " + info.attack);
        }

        // 소멸자
        public Player() { }
        ~Player() { }
    }
}
//맵 선택을 위한
namespace TextRpgGame02
{
    internal class Field
    {
        //맵 선택은 + 플레이어의 정보도 필요함.
        Player player = null;

        //메소드의 인수를 통해 값을 전달하는 방법 -> 값 전달과 참조전달
        public void SetPlayer(ref Player pPlayer)
        {
            player = pPlayer; 
        }

        // 맵 선택을 위함
        public void Progress()
        {
            // 사냥터로 들어왔다
            int ilnput = 0;

            //반복처리를 위한while문
            while(true)
            {
                //콘솔을 지워준다
                Console.Clear();

                player.Render();
                //맵 선택 함수
                DrawMap();

                // 입력함수
                ilnput = int.Parse(Console.ReadLine());

                if(ilnput == 4)
                {
                    break;
                }

                else if(ilnput <=3)
                {
                    //몬스터 만들고 싸우기
                }
            }
        }

        public void DrawMap()
        {
            Console.WriteLine("1. 초보맵");
            Console.WriteLine("2. 중수맵");
            Console.WriteLine("3. 고수맵");
            Console.WriteLine("4. 전단계");
            Console.WriteLine("=============");
            Console.WriteLine("맵을 선택하세요");
        }

        //소멸자
        public Field() { }
        ~Field() { }
    }
}
namespace TextRpgGame02
{
    //플레이어 맵 둘다 실행해야 함
    internal class MainGame
    {
        public Player player = null;
        public Field field =  null;

        // 플레이어 직업 선택 플레이
        public void Initialize()
        {
            player = new Player();
            player.SelectJob(); //실행
        }

        // 맵선택
        public void Progress()
        {
            // 맵 선택 

            int ilnput = 0;

            while(true)
            {
                Console.Clear();
                //실행
                player.Render();
                Console.WriteLine("1.사냥터 \t 2.종료");
                ilnput = int.Parse(Console.ReadLine());

                if(ilnput == 2)
                {
                    break;
                }
                else if(ilnput == 1)
                {
                    //사냥터로 가서 맵 구현해야함!
                    if(field == null)
                    {
                        field = new Field();
                        field.SetPlayer(ref player);
                    }
                    field.Progress();
                }
            }
        }

        public MainGame() { }
        ~MainGame() { }
    }
}

 

728x90

'프로그래밍 > 콘솔프로젝트' 카테고리의 다른 글

공의 이동  (0) 2023.07.11
공 벽 튕기기  (0) 2023.07.11
TextRpgGame <최종>  (0) 2023.07.11
ShootingGame <최종>  (0) 2023.07.04
TextRpgGame Ver.2  (0) 2023.07.04