그동안 배웠던것을 토대로 간단한 TextRPG를 만들어 보자.
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;
}
}
}
enum ClassType
{
None = 0,
Knight = 1,
Archer = 2,
Mage = 3
}
struct Player
{
public int hp;
public int attack;
}
몬스터 타입 : 1. 슬라임 2. 오크 3. 스켈레톤
랜덤으로 필드에 진입시 생성
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;
}
}
}