본문 바로가기
제출용/TIL

내일배움캠프 14일차 TIL + 퀘스트 입장, 콘솔꾸미기

by 유린테 2024. 5. 2.

할당량이 끝나서 다른 사람들의 스크립트를 안건들이면서 , 뭔가 더 해볼 수 있는게 없을까? 하다가

퀘스트를 새로운 스크립트로 진행하면 되겠다는 생각이 들어 시작해보았다!

 

아직 전투부분 구현이 덜 되어서 퀘스트 입장하는 부분까지만 진행하였다.

internal class Quest
{
    public static void quest()
    {

        bool exit = false;

        while (!exit)
        {
            Console.Clear();

            Console.WriteLine("   ____                  _     _ ");
            Console.WriteLine("  / __ \\                | |   | |");
            Console.WriteLine(" | |  | |_   _  ___  ___| |_  | |");
            Console.WriteLine(" | |  | | | | |/ _ \\/ __| __| | |");
            Console.WriteLine(" | |__| | |_| |  __/\\__ \\ |_  |_|");
            Console.WriteLine("  \\___\\_\\\\__,_|\\___||___/\\__| (_)");
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("1. 과제발생기 강탈 미션 ★");                      // 기본 공격으로 매니저님들의 컴퓨터를 부수면 되는 게임
            Console.WriteLine("2. 거대한 혁최몬 소탕 미션 ★ ★ ★");               // 혁최몬 체력이 좀 더 많아집니다
            Console.WriteLine("3. 스파르타 코딩클럽에서 생존하기 ★ ★ ★ ★ ★");    // 일단 넣어봄
            Console.WriteLine("0. 마을로 돌아가기");

            Console.WriteLine();
            Console.WriteLine("참여하실 퀘스트 번호를 입력해주세요");
            Console.Write(">>");


            int choice = ConsoleUtility.PromptMenuChoice(0, 3);

            switch (choice)
            {
                case 0:
                    exit = true;
                    break;

                case 1:
                    quest1();
                    break;
                case 2:
                    quest2();
                    break;
                case 3:
                    quest3();
                    break;
            }

        }
    }

    public static void quest1()
    {
        Console.Clear();

        Console.WriteLine("[ 퀘스트1. 과제발생기 강탈 미션 ]");
        Console.WriteLine("난이도 : ★");

        Console.WriteLine();
        Console.WriteLine("'있잖아... " + Start.player.Name + " ...'");
        Console.WriteLine("'그 소문 들었어?... 우리에게 자꾸 과제를 내주는 과제발생기의 위치를 알아냈대...'");
        Console.WriteLine("'그곳에 가서... 과제 발생기를 없애면 과제가 줄어들지도 몰라...'");
        Console.WriteLine("'어떻게 할래?... 도전해볼래?...'");

        Console.WriteLine();
        Console.WriteLine("1. 당연히 참여한다");
        Console.WriteLine("0. 무서우니 도망친다");
        Console.WriteLine();
        Console.Write(">>");

        int choice = ConsoleUtility.PromptMenuChoice(0, 1);

        switch (choice)
        {
            case 0:
                return;

            case 1:
                //1. 과제발생기 강탈미션으로 이동
                break;

        }
    }

    public static void quest2()
    {
        Console.Clear();

        Console.WriteLine("[ 퀘스트2. 거대한 혁최몬 소탕 미션 ]");
        Console.WriteLine("난이도 : ★ ★ ★");

        Console.WriteLine();
        Console.WriteLine("'큰일이야!! " + Start.player.Name + " !!!'");
        Console.WriteLine("'혁최몬이 내가 낸 과제물을 보고 분노해서 거대해져버렸대!!'");
        Console.WriteLine("'마을 사람들을 마구 찌르며 괴롭히고 있다는데, 도와주지 않을래?'");
        
        Console.WriteLine();
        Console.WriteLine("1. 당연히 참여한다");
        Console.WriteLine("0. 무서우니 도망친다");
        Console.WriteLine();
        Console.Write(">>");

        int choice = ConsoleUtility.PromptMenuChoice(0, 1);

        switch (choice)
        {
            case 0:
                return;

            case 1:
                //2. 거대한 혁최몬 소탕 미션으로 이동
                break;

        }
    }

    public static void quest3()
    {
        Console.Clear();

        Console.WriteLine("[ 퀘스트3. 스파르타 코딩클럽에서 생존하기 ]");
        Console.WriteLine("난이도 : ★ ★ ★ ★ ★");

        Console.WriteLine();
        Console.WriteLine("'스파르타 코딩클럽에 온 것을 환영한다... " + Start.player.Name + " 이여...'");
        Console.WriteLine("'이곳에 온 이상 너는 도망칠 수 없다'");
        Console.WriteLine("'코딩을 해라.. 공부를 해라.. " + Start.player.Name + " ..!!!!");

        Console.WriteLine();
        Console.WriteLine("도망칠 수 없습니다. 아무 키나 입력해 스파르타 코딩클럽에 입장하세요");
        Console.ReadKey();

        // 아무 키를 누르면 스파르타코딩클럽으로 입장
        // 지금은 아무거나 누르면 메인화면으로 돌아감
    }


}

 

일단 먼저! 팀장님께서 뒤로 나가기를 하면 메인화면으로 나가지는데, 한칸씩 뒤로 갔으면 좋겠다고 말씀하셨다,

예를 들면 퀘스트 - 퀘스트1 에서 나가면 바로 메인이었는데, 

퀘스트1에서 뒤로가면 퀘스트, 다시 뒤로가면 메인 이런식으로 되는게 좋지 않겠냐는 말씀에 찾아보았더니

 

bool exit = false;



while (!exit) 

{



}

요걸 이용해서 한칸씩 뒤로가게 해줄 수 있을 것 같았다.

뒤로 가고 싶은 경우엔 exit = true; 로 해주면 된다!! 

내 코드에 넣어 본 결과 잘 작동하고 있는 듯 하다. 

다른 팀원분들께도 알려드렸는데 이걸로 사용하셨을지 다른 방법을 찾으셨을지 궁금하다. 히히

 

그리고 퀘스트 지문에서 앞서 설정한 캐릭터 이름을 넣고 싶었는데, 어떻게 해야하나 이것 저것 넣어보다가

Start.player.Name 을 넣으면 되는 걸 알게 되었다.

Start 라는 클래스 안의, player 생성자에 있는 Name 정보를 가져온다는 뜻으로 생각한다

생성자가 맞는지 잘 모르겠다!! 생성자 부분이 너무 어렵다.

 

그리고 팀장님이 게임 시작할 때 콘솔에 그림같은걸 띄우시길래

그냥 글로만 있는게 심심해서 다른 요소를 넣고싶어 고민중이던 찰나에 저걸 써보면 되겠다고 생각했다!

 

게임 StartScene에 들어간 코드. 

 Console.WriteLine("   _____                         _____ _             _   ");
 Console.WriteLine("  / ____|                       / ____| |           | |  ");
 Console.WriteLine(" | |  __  __ _ _ __ ___   ___  | (___ | |_ __ _ _ __| |_ ");
 Console.WriteLine(" | | |_ |/ _` | '_ ` _ \\ / _ \\  \\___ \\| __/ _` | '__| __|");
 Console.WriteLine(" | |__| | (_| | | | | | |  __/  ____) | || (_| | |  | |_ ");
 Console.WriteLine("  \\_____|\\__,_|_| |_| |_|\\___| |_____/ \\__\\__,_|_|   \\__|");

 

퀘스트 부분에 들어간 코드.

 Console.WriteLine("   ____                  _     _ ");
 Console.WriteLine("  / __ \\                | |   | |");
 Console.WriteLine(" | |  | |_   _  ___  ___| |_  | |");
 Console.WriteLine(" | |  | | | | |/ _ \\/ __| __| | |");
 Console.WriteLine(" | |__| | |_| |  __/\\__ \\ |_  |_|");
 Console.WriteLine("  \\___\\_\\\\__,_|\\___||___/\\__| (_)");

 

너무 크고 정신사납지 않으면서, 이 화면이 어떤 화면인지를 재미있게 보여줄 수 있는 걸 찾다가

조금 자그마하면서 글씨는 확실한! 꽤 귀여운걸 발견해서 사용해보았는데 꽤 귀엽다!!!!!

 

게임스타트 화면 실행 모습
퀘스트 화면 실행 모습

 

저거 하나 넣어주니 꽤 게임 분위기가 산다.

히히 맘에들어

 

그리고 오늘은 C# 으로 배치고사가 있었는데, 베이직 스탠다드 챌린지 세가지 분반으로 나뉜다고 한다.

우리 조는 일단 시험 전 배치고사 공부를 하는 시간을 가졌기 때문에 오늘은 조별과제에서 크게 진도가 나가진 않았다.

물론 난... 베이직 확정인듯 ㅠㅠ 

차라리 이렇게 분반으로 해서 베이직부터 차근차근 다시 배워나가는 것도 좋을 것 같다.

 

기능 구현보다 콘솔 꾸미기에 맛들려버려서 큰일이다..

하지만 재밌는걸.

이따 본가에 내려갈 예정이라, 본가에 가서 마저 퀘스트를 구현해 볼 예정이다. 재밌겠다~