public GameboardPosition GetPlayerPositionChoice(GameboardPosition gameboardPosition)
        {
            //
            // Initialize gameboardPosition with -1 values
            //
            gameboardPosition.Row = -1;
            gameboardPosition.Column = -1;

            //
            // Get row number from player
            //
            gameboardPosition.Row = PlayerCoordinateChoice("Row");

            //
            // Player successfully entered row number, get column number
            //
            if (CurrentViewState == ViewState.Active)
            {
                gameboardPosition.Column = PlayerCoordinateChoice("Column");
            }

            return gameboardPosition;

        }
Exemplo n.º 2
0
        /// <summary>
        /// Game Loop
        /// </summary>
        public void PlayGame()
        {
            //
            // Display game area
            //
            _gameView.DisplayGameArea();

            //
            // Initialize gameboard status
            //
            _gameboard.CurrentGameState = Gameboard.GameState.NewGame;

            //
            // Create PlayerPiece and GameboardPosition objects
            //
            Gameboard.PlayerPiece currentPlayerPiece;
            GameboardPosition gameboardPosition = new GameboardPosition();

            while (_playingGame)
            {
                while (_playingRound)
                {
                    _gameboard.UpdateGameboardState();

                    _gameView.DisplayGameArea();

                    switch (_gameboard.CurrentGameState)
                    {
                        case Gameboard.GameState.NewGame:
                            //
                            // The new game status should not be an option here
                            //
                            break;

                        case Gameboard.GameState.PlayerXTurn:
                            currentPlayerPiece = Gameboard.PlayerPiece.X;

                            GetPlayerPositionChoice(gameboardPosition);

                            if (_gameView.CurrentViewState == ConsoleView.ViewState.Active)
                            {
                                _gameboard.SetPlayerPiece(gameboardPosition, currentPlayerPiece);
                            }
                            break;

                        case Gameboard.GameState.PlayerOTurn:
                            currentPlayerPiece = Gameboard.PlayerPiece.O;
                            
                            GetPlayerPositionChoice(gameboardPosition);

                            if (_gameView.CurrentViewState == ConsoleView.ViewState.Active)
                            {
                                _gameboard.SetPlayerPiece(gameboardPosition, currentPlayerPiece);
                            }
                            break;

                        case Gameboard.GameState.PlayerXWin:
                            _playingRound = false;
                            break;

                        case Gameboard.GameState.PlayerOWin:
                            _playingRound = false;
                            break;

                        case Gameboard.GameState.CatsGame:
                            _playingRound = false;
                            break;

                        default:
                            break;
                    }
                }

                //
                // Player Was Unable to Enter Valid Position
                // TODO Handle with an exception
                //
                if (_gameView.CurrentViewState == ConsoleView.ViewState.PlayerUsedMaxAttempts)
                {
                    _gameView.DisplayMaxAttemptsMessage();

                    //
                    // Terminate the Game
                    //
                    Environment.Exit(0);
                }
            }

            Console.ReadLine();
        }
Exemplo n.º 3
0
 public bool IsValidMove(GameboardPosition gameboardPosition)
 {
     //
     // Confirm that the board position is empty
     //
     if (_positionState[gameboardPosition.Row - 1, gameboardPosition.Column - 1] == PlayerPiece.None)
     {
         return true;
     }
     else
     {
         return false;
     }
 }
Exemplo n.º 4
0
        /// <summary>
        /// validate player's move choice
        /// </summary>
        /// <param name="gameboardPosition"></param>
        /// <returns></returns>
        //
        // TODO: move to ConsoleView
        //
        private GameboardPosition GetPlayerPositionChoice(GameboardPosition gameboardPosition)
        {
            _gameView.GetPlayerPositionChoice(gameboardPosition);

            //
            // Player input a position that was taken
            //
            while (!_gameboard.IsValidMove(gameboardPosition))
            {
                _gameView.DisplayMessage("That position on the board is not available.",
                    "Please enter a new position.",
                    "");

                _gameView.GetPlayerPositionChoice(gameboardPosition);
            }

            return gameboardPosition;
        }
Exemplo n.º 5
0
        public void SetPlayerPiece(GameboardPosition gameboardPosition, PlayerPiece PlayerPiece)

        {
            //
            // Row and column value adjusted to match array structure
            //
            _positionState[gameboardPosition.Row - 1, gameboardPosition.Column - 1] = PlayerPiece;
        }