using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TextRpgGame
{
public class Player
{
public INFO m_tInfo;
//데미지를 입는 함수
public void SetDamage(int iAttack) { m_tInfo.iHp -= iAttack; }
//플레이어 정보를 외부에서 볼수있는 함수
public INFO GetInfo() { return m_tInfo; }
//hp를 다시 설정해주는 함수
public void SetHp(int iHp) { m_tInfo.iHp = iHp; }
public void SelectJob()
{
m_tInfo = new INFO();
Console.WriteLine("직업을 선택하세요(1. 기사 2. 마법사 3. 도둑) : ");
int iInput = 0;
iInput = int.Parse(Console.ReadLine());
switch (iInput)
{
case 1:
m_tInfo.strName = "기사";
m_tInfo.iHp = 100;
m_tInfo.iAttack = 10;
break;
case 2:
m_tInfo.strName = "마법사";
m_tInfo.iHp = 90;
m_tInfo.iAttack = 15;
break;
case 3:
m_tInfo.strName = "도둑";
m_tInfo.iHp = 85;
m_tInfo.iAttack = 13;
break;
}
}
public void Render()
{
Console.WriteLine("================================");
Console.WriteLine("직업 이름 : " + m_tInfo.strName);
Console.WriteLine("체력 : " + m_tInfo.iHp + "\t공격력 : " + m_tInfo.iAttack);
}
public Player() { }
~Player() { } //소멸자
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TextRpgGame
{
public class Field
{
Player m_pPlayer = null;
Monster m_pMonster = null;
public void SetPlayer(ref Player pPlayer) { m_pPlayer = pPlayer; }
public void Progress()
{
//사냥터로 들어왔다.
int iInput = 0;
while(true)
{
Console.Clear();
m_pPlayer.Render();
DrawMap();
iInput = int.Parse(Console.ReadLine());
if (iInput == 4)
break;
if(iInput<=3)
{
//몬스터를 만들고
//1번일때 초보몬스터
//2번일때 중급몬스터
//3번일때 고급몬스터
CreateMonter(iInput);
//싸운다.
Fight();
}
}
}
public void DrawMap()
{
Console.WriteLine("1. 초보맵");
Console.WriteLine("2. 중수맵");
Console.WriteLine("3. 고수맵");
Console.WriteLine("4. 전단계");
Console.WriteLine("=================");
Console.WriteLine("맵을 선택하세요 : ");
}
//생성을 도와주는 함수
//공장처럼 찍어낸다.
//팩토리 메서드 패턴
public void Create(string _strName, int _iHp,int _iAttack,out Monster pMonster)
{
pMonster = new Monster(); //몬스터 생성
INFO tMonster = new INFO(); //몬스터데이터 메모리 주기 객체 생성
tMonster.strName = _strName; //초보몬스터, 중급,고급
tMonster.iHp = _iHp; //체력
tMonster.iAttack = _iAttack;//공격력
pMonster.SetMonster(tMonster); //생성된 데이터 INFO 클래스타입 인자로 데이터 세팅
}
public void CreateMonter(int input)
{
switch(input)
{
case 1: //공장처럼 찍어내준다. gof의 디자인패턴
//디자인패턴 팩토리 메서드 패턴
Create("초보몹", 30, 3, out m_pMonster);
break;
case 2:
Create("중수몹",60,6,out m_pMonster);
break;
case 3:
Create("고수몹",90,9,out m_pMonster);
break;
}
}
public void Fight()
{
int iInput = 0;
while(true)
{
Console.Clear(); //콘솔화면 지움
m_pPlayer.Render(); //플레이어 정보 출력
m_pMonster.Render(); //몬스터 정보출력
Console.WriteLine("1.공격 2.도망 : "); //1,2 선택 표시
iInput = int.Parse(Console.ReadLine()); //입력 받기
if(iInput == 1) //공격
{
//플레이어 데미지 주기 몬스터공격력 넣어서 데미지
m_pPlayer.SetDamage(m_pMonster.GetMonster().iAttack);
//몬스터 데미지 주기 플레이어 공격력 넣기
m_pMonster.SetDamage(m_pPlayer.GetInfo().iAttack);
if (m_pPlayer.GetInfo().iHp <= 0) //플레이어 체력이 0이하이면
{
m_pPlayer.SetHp(100); // 체력 100으로 다시 세팅
break;
}
}
if(iInput == 2 || m_pMonster.GetMonster().iHp <=0)
{
m_pMonster = null;
break; //탈출
}
}
}
public Field() { }
~Field() { }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TextRpgGame
{
public class Monster
{
public INFO m_tMonster; //몬스터 데이터
public void SetDamage(int iAttack) { m_tMonster.iHp -= iAttack; } //들어오는 인자값으로 hp 감소
public void SetMonster(INFO tMonter) { m_tMonster = tMonter; } //INFO클래스 타입 인자로 몬스터데이터를 넣어준다.
public INFO GetMonster() { return m_tMonster; }
public void Render() //몬스터의 내용을 출력한다.
{
Console.WriteLine("======================");
Console.WriteLine("몬스터 이름 : " + m_tMonster.strName);
Console.WriteLine("체력 : " + m_tMonster.iHp + "\t공격력 : " + m_tMonster.iAttack);
}
public Monster(){ } //기본생성자
~Monster() { } //소멸자
}
}
728x90
'프로그래밍 > 콘솔프로젝트' 카테고리의 다른 글
공의 이동 (0) | 2023.07.11 |
---|---|
공 벽 튕기기 (0) | 2023.07.11 |
TextRpgGame <최종> (0) | 2023.07.11 |
ShootingGame <최종> (0) | 2023.07.04 |
TextRpgGame Ver.1 (0) | 2023.06.29 |