프로그래밍/콘솔프로젝트
TextRpgGame <최종>
SUGI_
2023. 7. 11. 10:59
namespace TextRpgTest
{
internal class INFO
{
public string m_name;
public int m_attack;
public int m_hp;
}
}
namespace TextRpgTest
{
internal class Player
{
INFO pInfo;
public void SetDamage(int damage) { pInfo.m_hp -= damage; }
public void SetHp(int hp) { pInfo.m_hp = hp; }
public INFO GetInfo() { return pInfo; }
public int num;
public void SelectJob()
{
pInfo = new INFO();
Console.WriteLine("==== 직업 선택 ====\n\n1.마법사 2.전사 3.궁수");
num = int.Parse(Console.ReadLine());
switch (num)
{
case 1:
pInfo.m_name = "마법사";
pInfo.m_attack = 10;
pInfo.m_hp = 100;
break;
case 2:
pInfo.m_name = "전사";
pInfo.m_attack = 15;
pInfo.m_hp = 100;
break;
case 3:
pInfo.m_name = "궁수";
pInfo.m_attack = 20;
pInfo.m_hp = 100;
break;
}
}
public void PlayerRander()
{
Console.WriteLine("==== 캐릭터 정보 ====\n\n직업 : " + pInfo.m_name + "\n체력 : " + pInfo.m_hp + "\n공격력 : " + pInfo.m_attack);
}
}
}
namespace TextRpgTest
{
internal class Monster
{
INFO mInfo;
public void SetDamage(int damage) { mInfo.m_hp -= damage; }
public void SetMonster(INFO setInfo) { mInfo = setInfo; }
public INFO GetInfo() { return mInfo; }
public void MonsterRander()
{
Console.WriteLine("==== 몬스터 정보 ====\n\n맵 : " + mInfo.m_name + "\n체력 : " + mInfo.m_hp + "\n공격력 : " + mInfo.m_attack);
}
}
namespace TextRpgTest
{
internal class Field
{
Player player;
Monster monster;
public void SetPlayer(Player setPlayer) { player = setPlayer; }
public void MapSetting()
{
while (true)
{
Console.Clear();
//player.PlayerRander();
MapDraw();
int num = int.Parse(Console.ReadLine());
if (num <= 3)
{
// 적을 생성 후 싸우기
CreateMonster(num);
Fight();
}
else
{
break;
}
}
}
public void MapDraw()
{
Console.WriteLine("==== 맵 선택 ====");
Console.WriteLine("\n1.초보 2.중급 3.고급 4.이전단계");
}
public void Create(string name, int attack, int hp, out Monster cMonster)
{
cMonster = new Monster();
INFO cInfo = new INFO();
cInfo.m_name = name;
cInfo.m_attack = attack;
cInfo.m_hp = hp;
cMonster.SetMonster(cInfo);
}
public void CreateMonster(int num)
{
switch (num)
{
case 1:
Create("초보", 10, 50, out monster);
break;
case 2:
Create("중급", 15, 60, out monster);
break;
case 3:
Create("고급", 20, 80, out monster);
break;
}
}
public void Fight()
{
//싸우기 위한
while(true)
{
Console.Clear();
player.PlayerRander();
Console.WriteLine("");
monster.MonsterRander();
Console.WriteLine("\n1.공격 2.나가기");
int num = int.Parse(Console.ReadLine());
if(num == 1)
{
//공격
player.SetDamage(monster.GetInfo().m_attack);
monster.SetDamage(player.GetInfo().m_attack);
//플레이어 죽으면
if(player.GetInfo().m_hp <= 0)
{
player.SetHp(100);
break;
}
}
//적 죽으면
if (num == 2 || monster.GetInfo().m_hp <= 0)
{
monster = null;
break;
}
}
}
}
}
namespace TextRpgTest
{
internal class MainGame
{
Player player;
Field field;
public void JopSetting()
{
Console.WriteLine("==== 게임 시작 ====\n\n 아무키나 누르시오");
Console.ReadLine();
while (true)
{
Console.Clear();
player = new Player();
player.SelectJop();
if (player.num <= 3)
{
GameSetting();
}
else
{
player = null;
break;
}
}
}
public void GameSetting()
{
while (true)
{
Console.Clear();
player.PlayerRander();
Console.WriteLine("\n1.전쟁터 \t 2.나가기");
int num = int.Parse(Console.ReadLine());
if(num == 1)
{
// 전쟁터 캐릭터 선택도 가능하게 하기위해
/*if(field == null)
{
field = new Field();
field.SetPlayer(player);
}*/
field = new Field();
field.SetPlayer(player);
field.MapSetting();
}
else
{
break;
}
}
}
}
}
namespace TextRpgTest
{
internal class Program
{
static void Main(string[] args)
{
MainGame mainGame = new MainGame();
mainGame.JobSetting();
//mainGame.GameSetting();
}
}
}
728x90