TextRPG 1

이승한·2023년 6월 13일
0

CSharp

목록 보기
3/25
post-custom-banner

간단한 TextRPG

그동안 배웠던것을 토대로 간단한 TextRPG를 만들어 보자.

진행 흐름

클래스를 고르면 플레이어를 생성한 후 게임에 진입한다.
게임에 진입하면 1.필드로 간다 , 2. 로비로 돌아가기
필드로 가면 랜덤으로 몬스터가 소환되고 전투 모드로 돌입할지 일정확률로 도망갈지 결정한다.
로비로 돌아가기를 선택하면 다시 직업을 선택하는 것부터 시작한다.

메인 코드

static void Main(string[] args)
{

       while (true)
       {
             ClassType choice = ChooseClass();

             if (choice == ClassType.None)

                 continue;
             //캐릭터 생성
             Player player;

             CreatePlayer(choice, out player);
             EnterGame(ref player);



         }
 }

게임 진입

static void EnterGame(ref Player player)
{
       while (true)
       {

            Console.WriteLine("게임에 접속했습니다!");
            Console.WriteLine("[1] 필드로 간다");
            Console.WriteLine("[2] 로비로 돌아가기");

            string input = Console.ReadLine();
            if (input == "1")
            {
                EnterField(ref player);
            }
            else if (input == "2")
            {
                break;
            }
        }

}

1.직업 고르기

  1. 기사
  2. 궁수
  3. 마법사
enum ClassType
{
	None = 0,
    Knight = 1,
    Archer = 2,
    Mage = 3
}

2.플레이어 생성

  1. hp
  2. attack
struct Player
{
     public int hp;
     public int attack;
}

3.몬스터 생성

몬스터 타입 : 1. 슬라임 2. 오크 3. 스켈레톤

랜덤으로 필드에 진입시 생성

  1. hp
  2. attack
enum MonsterType
{
	None=0;
    Slime=1;
    Orc=2;
    Skeleton=3;
}

struct Monster
{
	public int hp;
    public int attack;
}

필드로 진입

static void EnterField(ref Player player)
        {
            while (true)
            {
                Console.WriteLine("필드에 접속했습니다!");

                //몬스터 생성
                //랜덤으로 1~3마리의 몬스터 중 하나를 리스폰
                Monster monster;
                CreateRandomMonster(out monster);

                //[1] 전투 모드로 돌입
                Console.WriteLine("[1] 전투 모드로 돌입");
                //[2] 일정 확률로 마을로 도망
                Console.WriteLine("[2] 일정 확률로 마을로 도망");

                string input = Console.ReadLine();
                if (input == "1")
                {
                    Fight(ref player, ref monster);
                }
                else if (input == "2")
                {
                    //33%확률로 도망 성공
                    Random rand = new Random();
                    int randValue = rand.Next(0, 101);
                    if (randValue <= 33)
                    {
                        Console.WriteLine("도망치는데 성공했습니다!");
                        break;
                    }
                    else
                    {
                        Fight(ref player, ref monster);
                    }
                }
            }
        }

전투

플레이어가 먼저 선공 몬스터가 후공

체력이 0이 되면 패배

static void Fight(ref Player player, ref Monster monster)
     {
         while (true)
         {
             //플레이어가 먼저 몬스터 공격
             monster.hp -= player.attack;
             if (monster.hp <= 0)
             {
                 Console.WriteLine("승리했습니다!");
                 Console.WriteLine($"남은 체력: {player.hp}");
                 break;
             }
             //몬스터 반격
             player.hp -= monster.attack;
             if (player.hp <= 0)
             {
                 Console.WriteLine("패배했습니다!");
                 break;
             }
         }
     }
post-custom-banner

0개의 댓글