c# 연습으로 제작한 텍스트 rpg입니다.
제작을 도와주신 분들 모두 정말 감사드립니다.
아래 투표도 부탁드립니다.
using System;
enum Choosestartorout
{
selectstart = 1,
selectout = 2,
noneselect = 0
}
enum classtype
{
none = 0 ,
knight = 1 ,
magician = 2 ,
archer = 3 ,
rogue = 4
}
public enum Monstertype
{
none =0,
slime = 1
}
namespace text_rpg
{
public class Creature
{
public int hp = 0;
public int at = 0;
public int mana = 0;
public string name;
public void setting(int _at, int _hp, int _mana)
{
at = _at;
hp = _hp;
mana = _mana;
}
}
public class Player: Creature
{
}
public class Monster: Creature
{
}
class Program
{
static void Main()
{
Console.WriteLine("Text RPG");
Console.WriteLine("[1] 게임을 시작합니다");
Console.WriteLine("[2] 게임을 종료합니다.");
Open();
}
static Choosestartorout Open()
{
Choosestartorout choice1 = Choosestartorout.noneselect;
ConsoleKeyInfo Csi = Console.ReadKey();
Console.WriteLine();
switch (Csi.Key)
{
case ConsoleKey.D1:
choice1 = Choosestartorout.selectstart;
Console.WriteLine("게임을 시작합니다.");
Player Newplayer = new Player();
Monster Newmonster = new Monster();
classtype choice = classtype.none;
Choosename(Newplayer);
Chooseclass(ref choice);
Creatplayer(choice,Newplayer);
tutorial(Newplayer, Newmonster);
break;
case ConsoleKey.D2:
choice1 = Choosestartorout.selectout;
Console.WriteLine("게임을 종료합니다.");
Overgame();
break;
}
return choice1;
}
static void Overgame()
{
Environment.Exit(0);
}
static string Choosename(Player Newplayer)
{
Console.WriteLine("당신의 이름은 무엇입니까?");
string input = Console.ReadLine();
Newplayer.name = input;
Console.WriteLine("이름:" + input);
return Newplayer.name;
}
static classtype Chooseclass(ref classtype choice)
{
Player Newplayer = new Player();
Console.WriteLine("직업을 선택하십시오.");
Console.WriteLine("[1] 기사");
Console.WriteLine("[2] 마법사");
Console.WriteLine("[3] 궁수");
Console.WriteLine("[4] 도적");
ConsoleKeyInfo Csi = Console.ReadKey();
Console.WriteLine();
switch (Csi.Key)
{
case ConsoleKey.D1:
choice = classtype.knight;
Console.WriteLine("기사를 선택했습니다.");
break;
case ConsoleKey.D2:
choice = classtype.magician;
Console.WriteLine("마법사를 선택했습니다.");
break;
case ConsoleKey.D3:
choice = classtype.archer;
Console.WriteLine("궁수를 선택했습니다");
break;
case ConsoleKey.D4:
choice = classtype.rogue;
Console.WriteLine("도적을 선택했습니다");
break;
}
return choice;
}
static Player Creatplayer(classtype choice, Player Newplayer )
{
Console.WriteLine("이름:"+Newplayer.name);
switch (choice)
{
case classtype.knight:
Console.WriteLine("직업: 기사");
Newplayer.setting(20, 80,10);
Console.WriteLine("공격력:" + Newplayer.at);
Console.WriteLine("생명력:" + Newplayer.hp);
Console.WriteLine("마나:" + Newplayer.mana);
break;
case classtype.magician:
Console.WriteLine("직업: 마법사");
Newplayer.setting(10, 50, 50);
Console.WriteLine("공격력:" + Newplayer.at);
Console.WriteLine("생명력:" + Newplayer.hp);
Console.WriteLine("마나:" + Newplayer.mana);
break;
case classtype.archer:
Console.WriteLine("직업: 궁수");
Newplayer.setting(40,50,20);
Console.WriteLine("공격력:" + Newplayer.at);
Console.WriteLine("생명력:" + Newplayer.hp);
Console.WriteLine("마나:" + Newplayer.mana);
break;
case classtype.rogue:
Console.WriteLine("직업: 도적");
Newplayer.setting(30, 60, 20);
Console.WriteLine("공격력:" + Newplayer.at);
Console.WriteLine("생명력:" + Newplayer.hp);
Console.WriteLine("마나:" + Newplayer.mana);
break;
}
return Newplayer;
}
static void Creatmonster(Monstertype ramdommonster, Monster Newmonster)
{
switch(ramdommonster)
{
case Monstertype slime:
Newmonster.name = "slime";
Newmonster.hp = 30;
Newmonster.at = 10;
Newmonster.mana = 0;
break;
}
}
static void tutorial(Player Newplayer, Monster Newmonster)
{
Console.WriteLine("당신은 튜토리얼에 진입했습니다.");
Monstertype randommonster = Monstertype.slime;
Creatmonster(randommonster, Newmonster);
Console.WriteLine("당신의 앞에"+ Newmonster.name + "이 나타났습니다!");
Console.WriteLine("1.배틀");
ConsoleKeyInfo c1 = Console.ReadKey();
Console.WriteLine();
switch (c1.Key)
{
case ConsoleKey.D1:
Console.WriteLine("전투를 시작한다");
Console.WriteLine("당신의 턴 입니다. 무엇을 하시겠습니까?");
Console.WriteLine("1.공격한다");
Console.WriteLine("2.도망친다");
yourturn(Newplayer, Newmonster);
break;
}
static void yourturn(Player Newplayer, Monster Newmonster)
{
ConsoleKeyInfo c2 = Console.ReadKey();
Console.WriteLine();
switch (c2.Key)
{
case ConsoleKey.D1:
Console.WriteLine(Newplayer.name + "은(는)" + Newmonster.name + "을(를) 공격했다!");
Console.WriteLine(Newplayer.name + "은(는)" + Newmonster.name + "에게" + Newplayer.at + "만큼의 데미지를 입혔다!");
Newmonster.hp -= Newplayer.at;
if (Newmonster.hp <= 0)
{
Console.WriteLine(Newmonster.name + "가 죽었습니다.");
Console.WriteLine("튜토리얼을 종료합니다.");
}
else
{
monsterturn(Newplayer, Newmonster);
}
break;
case ConsoleKey.D2:
Console.WriteLine("무사히 도망쳤다!");
tutorial(Newplayer, Newmonster);
break;
}
static void monsterturn(Player Newplayer, Monster Newmonster)
{
Random rand = new Random();
int randomact = rand.Next(1, 2);
switch (randomact)
{
case (int)1:
Console.WriteLine(Newmonster.name + "은(는)" + Newplayer.name + "을(를) 공격했다!");
Console.WriteLine(Newmonster.name + "은(는)" + Newplayer.name + "에게" + Newmonster.at + "만큼의 데미지를 입혔다!");
Newplayer.hp -= Newmonster.at;
if (Newplayer.hp <= 0)
{
Console.WriteLine(Newplayer.name + "가 사망했습니다.");
Console.WriteLine("game over");
Main();
}
else
{
yourturn(Newplayer, Newmonster);
}
break;
case (int)2:
Console.WriteLine(Newmonster.name + "은(는)체력을 10 회복했습니다");
Newmonster.hp += 10;
yourturn(Newplayer, Newmonster);
break;
}
}
}
}
}
}
If하고 for문 다룰 줄 알면 넘어가는 거여 ~
얼마나 하기 싫으면 고작 이거했다고 이런 질문을 할까 싶네;;; 객체지향 기본개념 깨우치고 못해도 제네릭까지 배우고 해.