1vdlrwnsv1 님의 블로그
C#_TIL_TextRpg_만들기 본문
전지적 독자시점 웹소설을 재밌게 봤음 비슷한 느낌의 텍스트게임을 만들어보자
대충 책에 빨려들어가 책 속 세계에서 살아간다는 내용.
책 일러스트를 아스키아트로 변환하자
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::-=+**##+-::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::-=+*##%%%%###%%#+-:::::::::::::::::::::::
::::::::::::::::::::::::::::::::--=+*##%%%%%%#%%%#%#%#%%#*=:::::::::::::::::::::
::::::::::::::::::::::::::--=+*##%%%%%%###%%%%#%%%%%%##%%%%#*-::::::::::::::::::
::::::::::::::::::::-=+**#%%%%%###################%#%#######%%#+-:::::::::::::::
::::::::::::::-=+*###%%%%%############################%#######%%%*=-::::::::::::
::::::::-=+*##%%%%%##############################%%%#%%#%#########%#*=::::::::::
:::::::+=*%%#%##########################%%%%%%#%%%%%%%%##%%%#%########*=::::::::
:::::::*-:=*###%#########%%####%###%%#####%%%%%%%%%%%%%%%%%%%%%%#%%####*+:::::::
:::::::==::-+####%%%##%%#%%%%%%%%#%%%%#%#%#%####%%%%%%%%%%%%%%%%###***+:::::::::
:::::::-+::::=+###%#%%%%##%%%%%##%%%%%%%%%%%%#####%%%%%%%%%%%%#***++++-:::::::::
::::::::*=::::-=*#%%%%%%#%%%%####%#%%%%%%%%%%%%%%%%%%%%%%##**+++++++**=:::::::::
:::::::::++-:-::-=*%%%%%%%%############%%%%%%%%%%%%%###**++++++***+++**=::::::::
::::::::::=*+-:-::-+#%%%%%%%%####%#%##%%%%%%%%####*******+*********####=::::::::
::::::::::::+*=:::::-+#%%%%%%%%%#%%%%%%%%%%###****************#####*=-::::::::::
:::::::::::::-*+-:--::=*#%%%%%%%%%%%%%%###****************#%%##+=--:::::::::::::
:::::::::::::::=*=-:-::-=#%#%%%%%%###***************###%%#*+=--:::::::::::::::::
:::::::::::::::::+*-::-::-+####******##******#####%%%#*=---------:::::::::::::::
::::::::::::::::::-*+-::--+******#######*####%%%%#+=---------:::::::::::::::::::
::::::::::::::::::::+*=:::+*****#########%%%#*+=----------::::::::::::::::::::::
:::::::::::::::::::::-+*-:+#*****###%%%%#*+=-----------:::::::::::::::::::::::::
:::::::::::::::::::::::-*+=*###%%%%#*+=------------:::::::::::::::::::::::::::::
:::::::::::::::::::::::::=+*%%%#*=--::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::-==-:::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::----------::::::::::::----------::::::::::::::::::::::::
::::::::::::::+=---------::::::::--=-::::::-=--:::::::::--------=+::::::::::::::
:::::::::::::=#:::::::::::::::::::::-=-::-=-:::::::::::::::::::::#=:::::::::::::
::::::::::::=*+::::::::::::::::::::::::++::::::::::::::::::::::::+*=::::::::::::
:::::::::=+***+::::::::::::::::::::::::++::::::::::::::::::::::::+***+=:::::::::
:::::::::#%#+*=::::::::::::::::::::::::++::::::::::::::::::::::::=*+#@#:::::::::
::::::::-%%*+*:::::::::::::::::::::::::++:::::::::::::::::::::::::*+*%%-::::::::
::::::::=%%++*:::::::::::::::::::::::::++:::::::::::::::::::::::::*++%%=::::::::
::::::::*%#+++:::::::::::::::::::::::::++:::::::::::::::::::::::::+++#%*::::::::
::::::::#%*+*=:::::::::::::::::::::::::++:::::::::::::::::::::::::=*+*%#::::::::
:::::::-%%*+*-:::::::::::::::::::::::::++:::::::::::::::::::::::::-*++%%-:::::::
:::::::+%%++*::::::::::::::::::::::::::++::::::::::::::::::::::::::*++%%+:::::::
:::::::#%#+++::::::::::::::::::::::::::++::::::::::::::::::::::::::+++#%#:::::::
::::::-%%*+*+::::::::::::::::::::::::::++::::::::::::::::::::::::::+*+*%%-::::::
::::::=%%*+*-::::::::::::::::::::::::::++::::::::::::::::::::::::::-*++%%=::::::
::::::*%#++*::::::::::::::::----:::::::++::::::::----:::::::::::::::*++%%*::::::
::::::##*++*=======+=+++++++++++++=-:::++:::-=+++++++++++++=+=======*++#%#::::::
:::::-%%***+++++++++++++++=======++++=:++:=+++=======++++++++++++++++***%#-:::::
:::::+%%**++++++++++==============+++++**+++++==============+==+++++++**%%+:::::
:::::#%%##############################%%%%##############################%%#:::::
:::::#%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#:::::
::::::::::::::::::::::::::::::::::::-==++==-::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
오케이 이제 게임 시작화면을 만들어보자
방향키를 사용하여 게임시작 종료 토글 기능을 넣고싶다. 시작과 종료 앞에 "▶"로 뭐가 선택됐는지 알려줘야함
선택 된 문자 앞에 ▶ 넣고 만약 아래 방향키로 다른걸 선택하면 ▶를 삭제해야함
찾아보니 TrimStart라는 메서드가 있다 TrimStart('▶', ' ') 를 사용해 ▶와 공백을 제거하는 기능
class Program
{
static void Main()
{
int selectedOption = 0; // 0: 게임 시작, 1: 종료
string[] options = { " 게임 시작", " 종료" }; // 선택된 항목 표시
while (true)
{
Console.Clear();
Console.WriteLine("==== 대충 이세계물 소설 읽다가 책에 그 소설의 주인공이 되는 게임 ====");
Console.WriteLine("방향키로 선택하세요");
for (int i = 0; i < options.Length; i++)
{
Console.WriteLine(i == selectedOption ? $"▶ {options[i].TrimStart('▶', ' ')}" : $" {options[i]}");
}
ConsoleKeyInfo key = Console.ReadKey();
if (key.Key == ConsoleKey.UpArrow) // 위 방향키
selectedOption = (selectedOption - 1 + options.Length) % options.Length;
else if (key.Key == ConsoleKey.DownArrow) // 아래 방향키
selectedOption = (selectedOption + 1) % options.Length;
else if (key.Key == ConsoleKey.Enter) // 엔터 키
{
if (selectedOption == 0) // 게임 시작 선택
{
//게임 시작 코드
}
else // 종료 선택
{
Console.WriteLine("게임을 종료합니다...");
break;
}
}
}
}
결과
종료까지 잘 된다
이제 게임 시작을 하면 주인공의 이름을 정하는 코드를 만들자 약간의 대사와 함께
do while 문을 사용해서 이름 입력할때까지 물어봐야함
static void StartGame()
{
string playerName;
do
{
Console.Write("당신의 이름은 무엇입니까나리? ");
playerName = Console.ReadLine();
if (string.IsNullOrWhiteSpace(playerName))
{
Console.WriteLine("이름이 뭐냐고 .");
}
}
while (string.IsNullOrWhiteSpace(playerName));
Console.Clear();
Console.WriteLine($"환영합니다, {playerName}님!\n");
}
돌려보니 안돼서 뭔가 했는데 생각해보니까 //게임시작코드 여기에 StartGame()을 입력을 안했다 ㅂㅅ인가보다
잘 된다 Console.Clear()로 이름 정하고 넘어갈때 콘솔을 꺠끗하게 지워버리자
이름 설정과 대사 게임시작시 책 아스키 아트 출력
static void StartGame()
{
Console.Clear(); // 게임 시작 전 화면 초기화
string playerName;
// 이름을 비워두면 다시 묻는 루프
do
{
Console.Write("당신의 이름은 무엇입니까나리? ");
playerName = Console.ReadLine();
if (string.IsNullOrWhiteSpace(playerName))
{
Console.WriteLine("이름이 뭐냐고 .");
}
}
while (string.IsNullOrWhiteSpace(playerName));
Console.Clear();
Console.WriteLine($"환영합니다, {playerName}님!\n");
Console.WriteLine($"{playerName}: 아 심심한데 책이나 봐야지..");
Console.WriteLine($"{playerName}: [대충 이세계로 떠나는 책]이거 재밌는데 보는 사람이 없단말이야");
Console.WriteLine(@"
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::-=+**##+-::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::-=+*##%%%%###%%#+-:::::::::::::::::::::::
::::::::::::::::::::::::::::::::--=+*##%%%%%%#%%%#%#%#%%#*=:::::::::::::::::::::
::::::::::::::::::::::::::--=+*##%%%%%%###%%%%#%%%%%%##%%%%#*-::::::::::::::::::
::::::::::::::::::::-=+**#%%%%%###################%#%#######%%#+-:::::::::::::::
::::::::::::::-=+*###%%%%%############################%#######%%%*=-::::::::::::
::::::::-=+*##%%%%%##############################%%%#%%#%#########%#*=::::::::::
:::::::+=*%%#%##########################%%%%%%#%%%%%%%%##%%%#%########*=::::::::
:::::::*-:=*###%#########%%####%###%%#####%%%%%%%%%%%%%%%%%%%%%%#%%####*+:::::::
:::::::==::-+####%%%##%%#%%%%%%%%#%%%%#%#%#%####%%%%%%%%%%%%%%%%###***+:::::::::
:::::::-+::::=+###%#%%%%##%%%%%##%%%%%%%%%%%%#####%%%%%%%%%%%%#***++++-:::::::::
::::::::*=::::-=*#%%%%%%#%%%%####%#%%%%%%%%%%%%%%%%%%%%%%##**+++++++**=:::::::::
:::::::::++-:-::-=*%%%%%%%%############%%%%%%%%%%%%%###**++++++***+++**=::::::::
::::::::::=*+-:-::-+#%%%%%%%%####%#%##%%%%%%%%####*******+*********####=::::::::
::::::::::::+*=:::::-+#%%%%%%%%%#%%%%%%%%%%###****************#####*=-::::::::::
:::::::::::::-*+-:--::=*#%%%%%%%%%%%%%%###****************#%%##+=--:::::::::::::
:::::::::::::::=*=-:-::-=#%#%%%%%%###***************###%%#*+=--:::::::::::::::::
:::::::::::::::::+*-::-::-+####******##******#####%%%#*=---------:::::::::::::::
::::::::::::::::::-*+-::--+******#######*####%%%%#+=---------:::::::::::::::::::
::::::::::::::::::::+*=:::+*****#########%%%#*+=----------::::::::::::::::::::::
:::::::::::::::::::::-+*-:+#*****###%%%%#*+=-----------:::::::::::::::::::::::::
:::::::::::::::::::::::-*+=*###%%%%#*+=------------:::::::::::::::::::::::::::::
:::::::::::::::::::::::::=+*%%%#*=--::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::-==-:::::::::::::::::::::::::::::::::::::::::::::::::
");
Console.WriteLine("\n(아무 키나 눌러 계속하기...)");
Console.ReadKey();
}
}
주인공 대사가 한글자씩 출력 돼야 대사같은데 메서드를 만들자 이름은 PlayerText()
만능 지피티한테 물어보니 Thread.Sleep라는 메서드가 있대서 사용해보자
지피티 왈 : Thread.Sleep 함수는 C#에서 현재 실행 중인 스레드를 지정된 시간만큼 일시 정지(휴식)시킬 때 사용됩니다. 이 함수는 지정된 시간(ms 단위) 동안 현재 스레드를 실행하지 않고 대기 상태로 만들어, 다른 스레드가 실행될 수 있도록 합니다.
string message = "안녕하세요, C#입니다!";
foreach (char c in message)
{
Console.Write(c); // 글자 출력
Thread.Sleep(200); // 200ms (0.2초) 대기
}
Console.WriteLine(); // 출력 후 줄바꿈
이런식으로 쓰면 되나보다 게임 종료시에 문자 출력하게 바꿔보자
오호
메서드를 만들어 대사에 적용
static void PlayerText(string message)
{
foreach (char c in message)
{
Console.Write(c);
Thread.Sleep(100);
}
Console.WriteLine();
}
Good
문제가 생겼다 아무키나 눌러서 다음씬 넘어가야하는데 맨 처음 게임시작화면으로 가진다 Main()메서드에서 while루프가 계속 실행중이기 때문인데 함수 종료 조건이 없어 계속 루프를 돌게됨 Main() 함수 루프 종료를 위해 StartGame()을 호출하면 return으로 Main 종료
직업선택 기능 + 선택시 현재 스텟 창 보여줌
오느른 요기까지
using System;
static class Game
{
static string playerName;
static string npcName = "???";
static int hp = 100;
static int power = 1;
static int aglity = 1;
static int guard = 1;
static int gold = 10;
static string playerClass;
static void Main()
{
int selectedOption = 0; // 0: 게임 시작, 1: 종료
string[] options = { " 게임 시작", " 종료" }; // 선택된 항목 표시
while (true)
{
Console.Clear();
Console.WriteLine("==== 대충 이세계물 소설 읽다가 책에 그 소설의 주인공이 되는 게임 ====");
Console.WriteLine("방향키로 선택하세요");
for (int i = 0; i < options.Length; i++)
{
Console.WriteLine(i == selectedOption ? $"▶ {options[i].TrimStart('▶', ' ')}" : $" {options[i]}");
}
ConsoleKeyInfo key = Console.ReadKey();
if (key.Key == ConsoleKey.UpArrow) // 위 방향키
selectedOption = (selectedOption - 1 + options.Length) % options.Length;
else if (key.Key == ConsoleKey.DownArrow) // 아래 방향키
selectedOption = (selectedOption + 1) % options.Length;
else if (key.Key == ConsoleKey.Enter) // 엔터 키
{
if (selectedOption == 0) // "게임 시작" 선택
{
StartGame();
//InsideBook();
return;
}
else
{
Console.Clear();
string exitMessage = "게임을 종료합니다 ...";
foreach (char c in exitMessage)
{
Console.Write(c);
Thread.Sleep(100);
}
Thread.Sleep(500);
break;
}
}
}
}
static void StartGame()
{
Console.Clear(); // 게임 시작 전 화면 초기화
// 이름을 비워두면 다시 묻는 루프
do
{
NpcrText("당신의 이름은 무엇입니까나리? ");
playerName = Console.ReadLine();
if (string.IsNullOrWhiteSpace(playerName))
{
NpcrText("이름이 뭐냐고 .");
}
}
while (string.IsNullOrWhiteSpace(playerName));
Console.Clear();
NpcrText($"환영합니다, {playerName}님!\n");
PlayerText("아 심심한데 책이나 봐야지..");
PlayerText(" [대충 이세계로 떠나는 책]이거 재밌는데 보는 사람이 없단말이야");
Console.WriteLine(@"
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::-=+**##+-::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::-=+*##%%%%###%%#+-:::::::::::::::::::::::
::::::::::::::::::::::::::::::::--=+*##%%%%%%#%%%#%#%#%%#*=:::::::::::::::::::::
::::::::::::::::::::::::::--=+*##%%%%%%###%%%%#%%%%%%##%%%%#*-::::::::::::::::::
::::::::::::::::::::-=+**#%%%%%###################%#%#######%%#+-:::::::::::::::
::::::::::::::-=+*###%%%%%############################%#######%%%*=-::::::::::::
::::::::-=+*##%%%%%##############################%%%#%%#%#########%#*=::::::::::
:::::::+=*%%#%##########################%%%%%%#%%%%%%%%##%%%#%########*=::::::::
:::::::*-:=*###%#########%%####%###%%#####%%%%%%%%%%%%%%%%%%%%%%#%%####*+:::::::
:::::::==::-+####%%%##%%#%%%%%%%%#%%%%#%#%#%####%%%%%%%%%%%%%%%%###***+:::::::::
:::::::-+::::=+###%#%%%%##%%%%%##%%%%%%%%%%%%#####%%%%%%%%%%%%#***++++-:::::::::
::::::::*=::::-=*#%%%%%%#%%%%####%#%%%%%%%%%%%%%%%%%%%%%%##**+++++++**=:::::::::
:::::::::++-:-::-=*%%%%%%%%############%%%%%%%%%%%%%###**++++++***+++**=::::::::
::::::::::=*+-:-::-+#%%%%%%%%####%#%##%%%%%%%%####*******+*********####=::::::::
::::::::::::+*=:::::-+#%%%%%%%%%#%%%%%%%%%%###****************#####*=-::::::::::
:::::::::::::-*+-:--::=*#%%%%%%%%%%%%%%###****************#%%##+=--:::::::::::::
:::::::::::::::=*=-:-::-=#%#%%%%%%###***************###%%#*+=--:::::::::::::::::
:::::::::::::::::+*-::-::-+####******##******#####%%%#*=---------:::::::::::::::
::::::::::::::::::-*+-::--+******#######*####%%%%#+=---------:::::::::::::::::::
::::::::::::::::::::+*=:::+*****#########%%%#*+=----------::::::::::::::::::::::
:::::::::::::::::::::-+*-:+#*****###%%%%#*+=-----------:::::::::::::::::::::::::
:::::::::::::::::::::::-*+=*###%%%%#*+=------------:::::::::::::::::::::::::::::
:::::::::::::::::::::::::=+*%%%#*=--::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::-==-:::::::::::::::::::::::::::::::::::::::::::::::::
");
Console.WriteLine("\n(아무 키나 눌러 책 보기...)");
Console.ReadKey();
OpenBook();
}
static void OpenBook()
{
Console.Clear();
Console.WriteLine(@"
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::----------::::::::::::----------::::::::::::::::::::::::
::::::::::::::+=---------::::::::--=-::::::-=--:::::::::--------=+::::::::::::::
:::::::::::::=#:::::::::::::::::::::-=-::-=-:::::::::::::::::::::#=:::::::::::::
::::::::::::=*+::::::::::::::::::::::::++::::::::::::::::::::::::+*=::::::::::::
:::::::::=+***+::::::::::::::::::::::::++::::::::::::::::::::::::+***+=:::::::::
:::::::::#%#+*=::::::::::::::::::::::::++::::::::::::::::::::::::=*+#@#:::::::::
::::::::-%%*+*:::::::::::::::::::::::::++:::::::::::::::::::::::::*+*%%-::::::::
::::::::=%%++*:::::::::::::::::::::::::++:::::::::::::::::::::::::*++%%=::::::::
::::::::*%#+++:::::::::::::::::::::::::++:::::::::::::::::::::::::+++#%*::::::::
::::::::#%*+*=:::::::::::::::::::::::::++:::::::::::::::::::::::::=*+*%#::::::::
:::::::-%%*+*-:::::::::::::::::::::::::++:::::::::::::::::::::::::-*++%%-:::::::
:::::::+%%++*::::::::::::::::::::::::::++::::::::::::::::::::::::::*++%%+:::::::
:::::::#%#+++::::::::::::::::::::::::::++::::::::::::::::::::::::::+++#%#:::::::
::::::-%%*+*+::::::::::::::::::::::::::++::::::::::::::::::::::::::+*+*%%-::::::
::::::=%%*+*-::::::::::::::::::::::::::++::::::::::::::::::::::::::-*++%%=::::::
::::::*%#++*::::::::::::::::----:::::::++::::::::----:::::::::::::::*++%%*::::::
::::::##*++*=======+=+++++++++++++=-:::++:::-=+++++++++++++=+=======*++#%#::::::
:::::-%%***+++++++++++++++=======++++=:++:=+++=======++++++++++++++++***%#-:::::
:::::+%%**++++++++++==============+++++**+++++==============+==+++++++**%%+:::::
:::::#%%##############################%%%%##############################%%#:::::
:::::#%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#:::::
::::::::::::::::::::::::::::::::::::-==++==-::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::");
PlayerText(":역시 이책은 재밌어 ");
PlayerText("근데 뭔가 책이 빛나는거 같은..?....!!");
Console.WriteLine("\n(아무 키나 눌러 계속 진행...)");
Console.ReadKey();
InsideBook();
}
static void PlayerText(string message)
{
foreach (char c in $"{playerName}: {message}")
{
Console.Write(c);
Thread.Sleep(100);
}
Console.WriteLine();
Thread.Sleep(1000);
}
static void NpcrText(string message)
{
foreach (char c in $"{npcName}: {message}")
{
Console.Write(c);
Thread.Sleep(100);
}
Console.WriteLine();
Thread.Sleep(1000);
}
static void InsideBook()
{
string[] options = { "암살자(민첩하고 딜이 강하지만 유리몸)", "기사(딜 준수, 탱 준수, 민첩 준수)", "전사(힘쎄고 강한 아침)!" };
int selectedOption = 0;
Console.Clear();
Console.WriteLine();
PlayerText("아 잠깐 기절했네 요즘 너무 게임만 했나");
PlayerText("근데 왜 아무것도 안보이지...");
NpcrText($"야야...{playerName}");
PlayerText("....누구세여??");
NpcrText("알빠노 ");
NpcrText("이거 책 엔딩 개망해서 너를 내 책 속으로 소환했음 ");
NpcrText("너가 하는 행동에 따라서 엔딩이 정해질거야 그럼 화이팅 ");
PlayerText("잠시만요!");
NpcrText("왜 귀찮게...");
PlayerText("그럼 주인공이 저인건가요?");
NpcrText("ㅇㅇ 맞음 대충 직업 정하고 알아서 해");
NpcrText("너 이책 좋아하잖아 결말이 좀 아쉽지 않냐");
PlayerText("ㅇㅇ 그렇긴해요 개 쓰레기 엔딩 그러니까 평점이 1점이지");
NpcrText("ㅅㅂㄹ....");
PlayerText("님 그럼 이 책 작가세요?");
NpcrText("ㅇㅇ앞으로 뭐 필요 할 떄 가끔 말 걸어서 도와줄게 잘 해보셈");
PlayerText("제가 님을 뭐라고 부르면 되나요 ?");
NpcrText("알아서.");
Console.WriteLine("작가 이름을 정하세요:");
npcName = Console.ReadLine();
PlayerText($"오케이 {npcName}(이)라고 부를게요");
NpcrText($"{npcName}......그래 뭐 맘대로 해...간다 화이팅해라 결말 잘 써서 재출판 하면 수익 10퍼 줄게.");
PlayerText("확인");
Console.Clear();
Console.Clear();
Console.WriteLine("==== 직업 선택 ====");
Console.WriteLine("방향키로 선택하세요");
while (true)
{
for (int i = 0; i < options.Length; i++)
{
Console.WriteLine(i == selectedOption ? $"▶ {options[i]}" : $" {options[i]}");
}
ConsoleKeyInfo key = Console.ReadKey(intercept: true);
if (key.Key == ConsoleKey.UpArrow) // 위 방향키
selectedOption = (selectedOption - 1 + options.Length) % options.Length;
else if (key.Key == ConsoleKey.DownArrow) // 아래 방향키
selectedOption = (selectedOption + 1) % options.Length;
else if (key.Key == ConsoleKey.Enter) // 엔터 키
{
if (selectedOption == 0)
{
Console.Clear();
Console.WriteLine("암살자를 선택하셨습니다!");
aglity += 5;
guard -= 1;
power += 5;
DisplayStats();
break;
}
else if (selectedOption == 1)
{
Console.Clear();
Console.WriteLine("기사를 선택하셨습니다!");
aglity += 3;
guard += 3;
power += 3;
DisplayStats();
break;
}
else if (selectedOption == 2)
{
Console.Clear();
Console.WriteLine("전사를 선택하셨습니다!");
aglity -= 1;
guard += 5;
power += 5;
DisplayStats();
break;
}
}
Console.SetCursorPosition(0, 2);
}
Console.ReadKey();
}
static void DisplayStats()
{
Console.WriteLine($"이름: {playerName}");
Console.WriteLine($"HP: {hp}");
Console.WriteLine($"Power: {power}");
Console.WriteLine($"Agility: {aglity}");
Console.WriteLine($"Guard: {guard}");
Console.WriteLine($"Gold: {gold}");
}
}