Пример #1
0
        public void RankPrint()  // 플레이어들 성적 출력
        {
            Score temp;

            MergeSort(0, scores.Count - 1);
            Console.Clear();
            ConsoleUI.GotoLine(4);
            Console.WriteLine("\t\t\t\t\t===============================================================");
            for (int i = 0; i < scores.Count; i++)
            {
                temp = (Score)scores[i];
                Console.Write("\t\t\t\t\t {0} ", i + 1);
                temp.PrintScore();
            }
            Console.WriteLine("\t\t\t\t\t===============================================================");
            Console.WriteLine("\t\t\t\t\t\t\t\tPress Any Key...");
            while (true)
            {
                if (Console.ReadKey().KeyChar != 0)
                {
                    Console.Clear();
                    break;
                }
            }
        }
Пример #2
0
 public void PrintMenu()  // 메뉴 선택 UI
 {
     ConsoleUI.GotoLine(6);
     Console.WriteLine("\t\t\t\t\t\t\t=========== Menu ===========\n");
     Console.WriteLine("\t\t\t\t\t\t\t   1. Play With Computer\n");
     Console.WriteLine("\t\t\t\t\t\t\t   2. User vs User\n");
     Console.WriteLine("\t\t\t\t\t\t\t   3. Score Board\n");
     Console.WriteLine("\t\t\t\t\t\t\t   0. Exit\n");
     Console.WriteLine("\t\t\t\t\t\t\t============================\n");
     Console.Write("\t\t\t\t\t\t\t Menu Choice > ");
 }
Пример #3
0
        public void PrintGameScreen()  // 게임 화면을 출력한다
        {
            ConsoleUI.GotoLine(3);

            if (mode == 0)  // 모드에 따라 출력 메시지가 다름
            {
                Console.WriteLine("\t\t\t\t\t\t\t" + nickname[turn] + " turn");
            }
            else
            {
                if (turn == 1)
                {
                    Console.WriteLine("\t\t\t\t\t\t\t" + "Computer" + " turn");
                }
                else
                {
                    Console.WriteLine("\t\t\t\t\t\t\t" + nickname[turn] + " turn");
                }
            }

            for (int k = 0; k < 9; k += 3)  // 격자를 생성하고 map에 맞게 돌을 출력한다
            {
                if (k == 0)
                {
                    Console.WriteLine("\t\t\t\t\t  --------------------------------------------------------------");
                }
                for (int i = 0; i < 8; i++)
                {
                    for (int j = k; j < k + 3; j++)
                    {
                        if (j == k)
                        {
                            Console.Write("\t\t\t\t\t | ");
                        }
                        if (map[j] == -1)
                        {
                            Console.Write("                  ");
                        }
                        else if (map[j] == 0)
                        {
                            Console.Write(whiteBall[i]);
                        }
                        else
                        {
                            Console.Write(blackBall[i]);
                        }
                        Console.Write(" | ");
                    }
                    Console.WriteLine();
                }
                Console.WriteLine("\t\t\t\t\t  --------------------------------------------------------------");
            }
            Console.WriteLine("\t\t\t\t\t\t\t\t\t1 2 3\n\t\t\t\t\t\t\t\t\t4 5 6\n\t\t\t\t\t\t\t\t\t7 8 9");
        }
Пример #4
0
 public void PrintScreen()  // 초기화면 출력
 {
     ConsoleUI.GotoLine(5);
     Console.WriteLine("\t\t==================================================================================================================");
     Console.WriteLine("\t\t□□□□□□□  □□  □□□□□    □□□□□□□   □□     □□□□□    □□□□□□□  □□□□□  □□□□□");
     Console.WriteLine("\t\t      □        □□  □                  □        □  □    □                  □        □      □  □");
     Console.WriteLine("\t\t      □              □                  □       □    □   □                  □        □      □  □");
     Console.WriteLine("\t\t      □         □   □                  □      □      □  □                  □        □      □  □");
     Console.WriteLine("\t\t      □         □   □                  □      □□□□□  □                  □        □      □  □□□□□");
     Console.WriteLine("\t\t      □         □   □                  □      □      □  □                  □        □      □  □");
     Console.WriteLine("\t\t      □         □   □                  □      □      □  □                  □        □      □  □");
     Console.WriteLine("\t\t      □         □   □                  □      □      □  □                  □        □      □  □");
     Console.WriteLine("\t\t      □         □   □□□□□          □      □      □  □□□□□          □        □□□□□  □□□□□");
     Console.WriteLine("\t\t==================================================================================================================");
     Console.WriteLine();
     Console.WriteLine();
     Console.WriteLine("\t\t\t\t\t\t\t\t- Press Any Key -");
 }
Пример #5
0
        override public void ChoicePlayer(ScoreList scores)
        {
            int choice = 0;

            for (int i = 0; i < 2; i++)
            {
                while (true)
                {
                    ConsoleUI.GotoLine(3);
                    Console.WriteLine("\t\t\t\t\t\t\t\t<Player {0} 설정>", i + 1);
                    Console.WriteLine("\t\t\t\t\t\t\t==============================");
                    Console.WriteLine("\t\t\t\t\t\t\t    1. 새로운 player 생성\n");
                    Console.WriteLine("\t\t\t\t\t\t\t    2. 기존 player 이어하기");
                    Console.WriteLine("\t\t\t\t\t\t\t==============================");
                    Console.Write("\t\t\t\t\t\t\tInput > ");

                    // 현재 입력된 키를 읽고 맞는지 체크한다.
                    char _input = Console.ReadKey().KeyChar;
                    if (_input < '1' || _input > '2')
                    {
                        Console.Clear();
                        Console.WriteLine("\n\t\t\tAlert : 1 ~ 2번 중 선택하세요");
                        continue;
                    }
                    else
                    {
                        choice = int.Parse(_input + "");
                        Console.WriteLine();
                        break;
                    }
                }

                if (choice == 1)
                {
                    bool repeat = true;

                    Console.WriteLine("\n\t\t\t\t\t\t\t<새 플레이어 명을 정해주세요.>");
                    while (repeat)  // 공백 문자가 포함되지 않은 닉네임이 입력될 때까지 반복
                    {
                        Console.Write("\t\t\t\t\t\t\tNickname : ");
                        this.nickname[i] = Console.ReadLine();
                        if (this.nickname[i].Length > 8)                         // 닉네임 길이가 8자가 넘어간다면
                        {
                            this.nickname[i] = this.nickname[i].Substring(0, 8); // 닉네임이 너무 길면 문자열을 자름
                            Console.WriteLine("\n\t\t\t\t\t\t\t닉네임이 너무 길어 자동으로 잘립니다.");
                        }
                        if (this.nickname[i].Length == 0)   // 공백 문자가 입력되면 다시 입력 받음
                        {
                            Console.WriteLine("\n\t\t\t\t\t\t\t공백 문자가 포함될 수 없습니다.");
                            continue;
                        }
                        else
                        {
                            for (int j = 0; j < this.nickname[i].Length; j++)                                                 // 공백 문자가 입력되면 임의로 닉네임을 생성
                            {
                                if (this.nickname[i][j] == '\n' || this.nickname[i][j] == '\t' || this.nickname[i][j] == ' ') // 공백 문자가 포함된다면
                                {
                                    Console.WriteLine("\n\t\t\t\t\t\t\t공백 문자가 포함될 수 없습니다.");
                                    break;
                                }
                                if (j + 1 == this.nickname[i].Length)  // 공백 문자 없음 확인
                                {
                                    repeat = false;
                                }
                            }
                        }
                        if (scores.IsThere(this.nickname[i]))
                        {
                            Console.WriteLine("\n\t\t\t\t\t\t\t해당 닉네임이 존재합니다. 다시 입력해주세요.");
                            repeat = true;
                            continue;
                        }

                        if (i == 1 && this.nickname[1].Equals(this.nickname[0]))
                        {
                            Console.WriteLine("\n\t\t\t\t\t\t\t플레이어의 이름이 중복됩니다. 다시 입력해주세요.");
                            repeat = true;
                            continue;
                        }
                    }
                    scores.Push(nickname[i]);
                }
                else
                {
                    while (true)
                    {
                        Console.WriteLine("\n\t\t\t\t\t\t\t불러올 플레이어 명을 입력하세요");
                        Console.Write("\t\t\t\t\t\t\tNickname : ");
                        this.nickname[i] = Console.ReadLine();

                        if (i == 1 && this.nickname[1].Equals(this.nickname[0]))
                        {
                            Console.WriteLine("\n\t\t\t\t\t\t\t플레이어의 이름이 중복됩니다. 다시 입력해주세요.");
                        }
                        else
                        {
                            break;
                        }
                    }
                    if (!scores.IsThere(this.nickname[i]))  // 닉네임이 존재하는지 검사한다
                    {
                        Console.WriteLine("\n\t\t\t\t\t\t\t닉네임 검색 결과 존재하지 않으므로 새로 생성합니다.");
                        scores.Push(this.nickname[i]);  // 새로운 닉네임을 등록한다
                    }
                }
                Thread.Sleep(400);
                if (i == 0)
                {
                    Console.Clear();
                }
            }
        }
Пример #6
0
        public UserPlay(ScoreList scores)
        {
            int choice;

            mode = 0;  // 사용자 모드로 설정
            map  = new int[9] {
                -1, -1, -1, -1, -1, -1, -1, -1, -1
            };
            ChoicePlayer(scores);
            DecideTurn();
            while (true)
            {
                Console.Clear();
                PrintGameScreen();
                while (true)
                {
                    // 현재 입력된 키를 읽고 맞는지 체크한다.
                    char _input = Console.ReadKey().KeyChar;
                    if (_input < '1' || _input > '9')
                    {
                        Console.Clear();
                        Console.WriteLine("\n\t\t\tAlert : 1 ~ 9번 중 선택하세요");
                        PrintGameScreen();
                        continue;
                    }
                    else
                    {
                        choice = int.Parse(_input + "");
                        if (map[choice - 1] != -1)  // 이미 놓여진 자리라면
                        {
                            continue;
                        }
                        map[choice - 1] = turn;
                        if (turn == 0)
                        {
                            turn = 1;
                        }
                        else
                        {
                            turn = 0;
                        }
                        break;
                    }
                }
                win = CheckGame();
                if (win != -1)
                {
                    Console.Clear();
                    ConsoleUI.GotoLine(4);
                    ConsoleUI.DynamicPrint('#');
                    Console.WriteLine("  " + nickname[win] + "가 이겼습니다.");
                    scores.Update(nickname[win], true);
                    if (win == 0)
                    {
                        scores.Update(nickname[1], false);
                    }
                    else
                    {
                        scores.Update(nickname[0], false);
                    }
                    break;
                }
                else
                {
                    int iter;
                    for (iter = 0; iter < map.Length; iter++)
                    {
                        if (map[iter] == -1)
                        {
                            break;
                        }
                    }
                    if (iter == map.Length)
                    {
                        Console.Clear();
                        ConsoleUI.GotoLine(4);
                        ConsoleUI.DynamicPrint('#');
                        Console.WriteLine("  무승부입니다.");
                        for (int k = 0; k < 2; k++)  // 무승부이므로 둘 다 승이 아님
                        {
                            scores.Update(nickname[k], false);
                        }
                        break;
                    }
                }
            }
        }
Пример #7
0
        override public void ChoicePlayer(ScoreList scores)  // 플레이어를 생성하거나 기존의 닉네임을 선택한다
        {
            int choice;

            while (true)
            {
                ConsoleUI.GotoLine(3);
                Console.WriteLine("\t\t\t\t\t\t\t==============================");
                Console.WriteLine("\t\t\t\t\t\t\t    1. 새로운 player 생성\n");
                Console.WriteLine("\t\t\t\t\t\t\t    2. 기존 player 이어하기");
                Console.WriteLine("\t\t\t\t\t\t\t==============================");
                Console.Write("\t\t\t\t\t\t\tInput > ");


                // 현재 입력된 키를 읽고 맞는지 체크한다.
                char _input = Console.ReadKey().KeyChar;
                if (_input < '1' || _input > '2')
                {
                    Console.Clear();
                    Console.WriteLine("\n\t\t\tAlert : 1 ~ 2번 중 선택하세요");
                    continue;
                }
                else
                {
                    choice = int.Parse(_input + "");
                    Console.WriteLine();
                    break;
                }
            }
            if (choice == 1)    // 플레이어를 새로 생성한다.
            {
                bool repeat = true;
                Console.WriteLine("\n\t\t\t\t\t\t\t<새 플레이어 명을 정해주세요.>");
                while (repeat)  // 공백 문자가 포함되지 않은 닉네임이 입력될 때까지 반복
                {
                    Console.Write("\t\t\t\t\t\t\tNickname : ");
                    this.nickname[0] = Console.ReadLine();
                    if (this.nickname[0].Length > 8)
                    {
                        this.nickname[0] = this.nickname[0].Substring(0, 8);  // 닉네임이 너무 길면 문자열을 자름
                        Console.WriteLine("\n\t\t\t\t\t\t\t닉네임이 너무 길어 자동으로 잘립니다.");
                    }
                    if (this.nickname[0].Length == 0)   // 공백 문자가 입력되면 임의로 닉네임을 생성
                    {
                        Console.WriteLine("\n\t\t\t\t\t\t\t공백 문자가 포함될 수 없습니다.");
                        continue;
                    }
                    else
                    {
                        for (int i = 0; i < this.nickname[0].Length; i++) // 공백 문자가 입력되면 임의로 닉네임을 생성
                        {
                            if (this.nickname[0][i] == '\n' || this.nickname[0][i] == '\t' || this.nickname[0][i] == ' ')
                            {
                                Console.WriteLine("\n\t\t\t\t\t\t\t공백 문자가 포함될 수 없습니다.");
                                break;
                            }
                            if (i + 1 == this.nickname[0].Length)
                            {
                                repeat = false;
                            }
                        }
                    }
                }

                if (scores.IsThere(this.nickname[0]))  // 현재 입력된 닉네임이 존재하는지 확인한다.
                {
                    Console.WriteLine("\n\t\t\t\t\t\t\t해당 닉네임이 존재하여 이어서 시작합니다.");
                }
                else
                {
                    scores.Push(this.nickname[0]);  // 닉네임 추가
                    Console.WriteLine("\n\t\t\t\t\t\t\t\t\t\t플레이어 생성!");
                }
            }
            else
            {
                Console.WriteLine("\n\t\t\t\t\t\t\t불러올 플레이어 명을 입력하세요");
                Console.Write("\t\t\t\t\t\t\tNickname : ");
                this.nickname[0] = Console.ReadLine();
                if (!scores.IsThere(this.nickname[0]))  // 불러올 닉네임이 있는지 확인한다.
                {
                    Console.WriteLine("\n\t\t\t\t\t\t\t닉네임 검색 결과 존재하지 않으므로 새로 생성합니다.");
                    scores.Push(this.nickname[0]);  // 닉네임을 추가한다.
                }
            }
        }
Пример #8
0
        public int NormalGame()    // 보통 모드
        {
            int    choice;
            Random rand = new Random();

            DecideTurn();  // 사용자와 컴퓨터 턴을 결정한다.

            while (true)
            {
                PrintGameScreen();  // 게임 화면 출력

                // 컴퓨터가 아직 놓이지 않은 자리에 놓는다
                if (turn == 1)
                {  // 컴퓨터 차례이면
                    while (true)
                    {
                        choice = PositionDecision();  // 컴퓨터가 위치를 찍는다
                        if (map[choice - 1] == -1)
                        {
                            break;
                        }
                    }
                    map[choice - 1] = 1;
                    turn            = 0;
                }
                else
                {  // 사용자 차례이면
                    while (true)
                    {
                        // 현재 입력된 키를 읽고 맞는지 체크한다.
                        char _input = Console.ReadKey().KeyChar;
                        if (_input < '1' || _input > '9')
                        {
                            Console.Clear();
                            Console.WriteLine("\n\t\t\tAlert : 1 ~ 9번 중 선택하세요");
                            PrintGameScreen();
                            continue;
                        }
                        else
                        {
                            choice = int.Parse(_input + "");
                            if (map[choice - 1] != -1)
                            {
                                continue;
                            }
                            map[choice - 1] = 0;
                            Console.WriteLine();
                            break;
                        }
                    }
                    turn = 1;
                }
                Console.Clear();
                win = CheckGame();
                if (win != -1)
                {
                    ConsoleUI.GotoLine(4);
                    ConsoleUI.DynamicPrint('#');
                    if (win == 1)
                    {
                        Console.WriteLine("  컴퓨터가 이겼습니다.");
                    }
                    else
                    {
                        Console.WriteLine("  {0}가 이겼습니다.", nickname[0]);
                    }
                    break;
                }
                else
                {
                    int iter;
                    for (iter = 0; iter < map.Length; iter++)  // 무승부 여부를 판단한다
                    {
                        if (map[iter] == -1)
                        {
                            break;
                        }
                    }
                    if (iter == map.Length)
                    {
                        ConsoleUI.GotoLine(4);
                        ConsoleUI.DynamicPrint('#');
                        Console.WriteLine("  무승부입니다.");
                        return(0);
                    }
                }
            }
            return(win);
        }