예제 #1
0
        private static bool validatePlayerType(string i_TypeNum)
        {
            bool validOponnent = i_TypeNum == "1" || i_TypeNum == "2";

            if (!validOponnent)
            {
                MessageDisplayer.DisplayMessage(MessageDisplayer.InvalidOpponent);
            }

            return(validOponnent);
        }
예제 #2
0
        private static bool validateYesNo(string i_Decision)
        {
            i_Decision = i_Decision.ToLower();
            bool validChoice = i_Decision.Equals("yes") || i_Decision.Equals("no");

            if (!validChoice)
            {
                MessageDisplayer.DisplayMessage(MessageDisplayer.InvalidPlayAnotherGame);
            }

            return(validChoice);
        }
예제 #3
0
        private bool getPlayerHalfMove(Player i_Player, Board i_Board, ref GameCell io_SelectedCell)
        {
            MessageDisplayer.DisplayMessage(i_Player.Name + MessageDisplayer.Turn);
            if (i_Player.Type == ePlayerType.Human)
            {
                MessageDisplayer.DisplayMessage(MessageDisplayer.EnterMove);
            }

            io_SelectedCell = i_Player.PlayerMove(i_Board);
            bool wantsToPlay = io_SelectedCell != null;

            return(wantsToPlay);
        }
예제 #4
0
        internal void RunGames()
        {
            MessageDisplayer.DisplayMessage(MessageDisplayer.Welcome);
            Player firstPlayer  = MainMenu.getHumanPlayer();
            Player secondPlayer = MainMenu.getSecondPlayer();
            bool   playAnotherGame;

            do
            {
                resetGame(firstPlayer, secondPlayer);
                Board board = MainMenu.getBoard();
                playAnotherGame = runSingleGame(firstPlayer, secondPlayer, board);
            }while(playAnotherGame);
        }
예제 #5
0
        private static bool validatePlayerName(string i_PlayerName)
        {
            bool validName = true;

            if (i_PlayerName.Length > 20)
            {
                MessageDisplayer.DisplayMessage(MessageDisplayer.NameTooLarge);
                validName = false;
            }

            if (i_PlayerName.Contains(" "))
            {
                MessageDisplayer.DisplayMessage(MessageDisplayer.NameContainsSpaces);
                validName = false;
            }

            return(validName);
        }
예제 #6
0
        internal static Player getHumanPlayer()
        {
            string     playerName;
            const bool v_InvalidName = true;

            //// Get Player #1 name from user
            while (v_InvalidName)
            {
                MessageDisplayer.DisplayMessage(MessageDisplayer.EnterPlayer);
                playerName = Console.ReadLine();
                if (validatePlayerName(playerName))
                {
                    break;
                }
            }

            return(new Player(playerName, ePlayerType.Human));
        }
예제 #7
0
        private bool stillWantToPlay()
        {
            bool       anotherGame;
            const bool v_NotYetAnswered = true;

            MessageDisplayer.DisplayMessage(MessageDisplayer.PlayAnotherGame);
            while (v_NotYetAnswered)
            {
                // Get player's decision
                string yesOrNoInput = Console.ReadLine().ToLower();
                if (validateYesNo(yesOrNoInput))
                {
                    anotherGame = yesOrNoInput.Equals("yes");
                    break;
                }
            }

            return(anotherGame);
        }
예제 #8
0
        private static bool validateBoard(int i_boardWidth, int i_boardHeight)
        {
            bool validBoardWidth  = i_boardWidth >= 4 && i_boardWidth <= 6;
            bool validBoardHeight = i_boardHeight >= 4 && i_boardHeight <= 6;
            bool validBoardSize   = (i_boardHeight * i_boardWidth) % 2 == 0;

            if (!validBoardWidth)
            {
                MessageDisplayer.DisplayMessage(MessageDisplayer.InvalidWidth);
            }

            if (!validBoardHeight)
            {
                MessageDisplayer.DisplayMessage(MessageDisplayer.InvalidHeight);
            }

            if (!validBoardSize)
            {
                MessageDisplayer.DisplayMessage(MessageDisplayer.InvalidSize);
            }

            return(validBoardWidth && validBoardHeight && validBoardSize);
        }
예제 #9
0
        internal static Player getSecondPlayer()
        {
            Player     secondPlayer  = null;
            const bool v_InvalidType = true;
            string     playerTypeString;

            //// Get input type from user: 1.Human / 2.Computer
            while (v_InvalidType)
            {
                MessageDisplayer.DisplayMessage(MessageDisplayer.ChooseOpponentType);
                playerTypeString = Console.ReadLine();
                if (validatePlayerType(playerTypeString))
                {
                    break;
                }
            }

            //// Convert input to ePlayerType
            int playerTypeNum;

            int.TryParse(playerTypeString, out playerTypeNum);
            ePlayerType playerType = (ePlayerType)playerTypeNum;

            // Create and return Player #2
            switch (playerType)
            {
            case ePlayerType.Computer:
                secondPlayer = new Player("COMPUTER", ePlayerType.Computer);
                break;

            case ePlayerType.Human:
                secondPlayer = getHumanPlayer();
                break;
            }

            return(secondPlayer);
        }