Example #1
0
        /// <summary>
        /// Initialize the multi-round game.
        /// </summary>
        public void InitializeGame()
        {
            //
            // Initialize game variables
            //
            _playingGame         = true;
            _playingRound        = true;
            _roundNumber         = 0;
            _playerONumberOfWins = 0;
            _playerXNumberOfWins = 0;
            _numberOfCatsGames   = 0;

            if (File.Exists("Data\\scores.json"))
            {
                _scoreboard = JsonServices.ReadJsonFile("scores.json") as List <Scoreboard>;
            }
        }
Example #2
0
        public GameController()
        {
            InitializeGame();

            _gameView.DisplayWelcomeScreen();


            while (!_sendBack)
            {
                _usersChoice = _gameView.DisplayMainMenuScreen();

                switch (_usersChoice)
                {
                case 0:     //Play
                    if (_playingGame)
                    {
                        _gameboard.InitializeGameboard();
                        _gameView.InitializeView();
                        _playingRound = true;
                    }
                    _roundNumber++;
                    _gameboard.CurrentRoundState = _gameView.DisplayWhosOnFirst();
                    PlayGame();
                    break;

                case 1:     //Rules
                    _gameView.DisplayGameRules();
                    _sendBack = false;
                    break;

                case 2:     //Gamestats
                    _gameView.DisplayCurrentGameStatus(_roundNumber, _playerXNumberOfWins, _playerONumberOfWins, _numberOfCatsGames);
                    _sendBack = false;
                    break;

                case 3:     //Historic Scores
                    if (File.Exists("Data\\scores.json"))
                    {
                        _scoreboard = JsonServices.ReadJsonFile("scores.json") as List <Scoreboard>;
                        _gameView.DisplayPreviousGameStats(_scoreboard);
                    }
                    else
                    {
                        _gameView.DisplayNoGameStats();
                    }
                    _sendBack = false;
                    break;

                case 4:     //Save
                    _gameView.DisplaySaveGameScreen();
                    _sendBack = false;
                    break;

                case 5:     //Close
                    _gameView.DisplayClosingScreen();
                    _sendBack = true;
                    break;

                default:
                    break;
                }
            }
        }
Example #3
0
        /// <summary>
        /// manage each new task based on the current game state
        /// </summary>
        private void ManageGameStateTasks()
        {
            switch (_gameView.CurrentViewState)
            {
            case ConsoleView.ViewState.Active:
                _gameView.DisplayGameArea();

                switch (_gameboard.CurrentRoundState)
                {
                case Gameboard.GameboardState.NewRound:
                    _roundNumber++;
                    _gameboard.CurrentRoundState = _gameView.DisplayWhosOnFirst();
                    break;

                case Gameboard.GameboardState.PlayerXTurn:
                    ManagePlayerTurn(PlayerPiece.X);
                    break;

                case Gameboard.GameboardState.PlayerOTurn:
                    ManagePlayerTurn(PlayerPiece.O);
                    break;

                case Gameboard.GameboardState.PlayerXWin:
                    _playerXNumberOfWins++;
                    Scoreboard score = new Scoreboard()
                    {
                        gameTime     = DateTime.Now,
                        playerNames  = new string[] { "Player X", "Player O" },
                        playerScores = new int[] { _playerXNumberOfWins, _playerONumberOfWins }
                    };
                    _scoreboard.Add(score);
                    JsonServices.WriteJsonFile(_scoreboard, "scores.json");
                    _playingRound = false;
                    break;

                case Gameboard.GameboardState.PlayerOWin:
                    _playerONumberOfWins++;
                    score = new Scoreboard()
                    {
                        gameTime     = DateTime.Now,
                        playerNames  = new string[] { "Player X", "Player O" },
                        playerScores = new int[] { _playerXNumberOfWins, _playerONumberOfWins }
                    };
                    _scoreboard.Add(score);
                    JsonServices.WriteJsonFile(_scoreboard, "scores.json");
                    _playingRound = false;
                    break;

                case Gameboard.GameboardState.CatsGame:
                    _numberOfCatsGames++;
                    _playingRound = false;
                    break;

                default:
                    break;
                }
                break;

            case ConsoleView.ViewState.PlayerTimedOut:
                _gameView.DisplayTimedOutScreen();
                _playingRound = false;
                break;

            case ConsoleView.ViewState.PlayerUsedMaxAttempts:
                _gameView.DisplayMaxAttemptsReachedScreen();
                _playingRound = false;
                _playingGame  = false;
                break;

            default:
                break;
            }
        }
Example #4
0
        /// <summary>
        /// Get a player's position choice within the correct range of the array
        /// Note: The ConsoleView is allowed access to the GameboardPosition struct.
        /// </summary>
        /// <returns>GameboardPosition</returns>
        public int GetPlayerPositionChoice()
        {
            Console.CursorVisible  = false;
            Console.OutputEncoding = System.Text.Encoding.Unicode;
            ConsoleKeyInfo keyInfo;
            int            player_column = 0;

            do
            {
                Console.SetCursorPosition(_gameboard._board[0, player_column].Row, _gameboard._board[0, player_column].Column + DROP_PEICE_OFFSET);
                Console.Write(PLAYER_ICONS[(int)_gameboard.CurrentRoundState]);
                keyInfo = Console.ReadKey();
                //Console.SetCursorPosition(Console.CursorLeft -3, Console.CursorTop);
                Console.SetCursorPosition(_gameboard._board[0, player_column].Row, _gameboard._board[0, player_column].Column + DROP_PEICE_OFFSET);
                Console.Write("  ");
                switch (keyInfo.Key)
                {
                case ConsoleKey.LeftArrow:
                    if (player_column > 0)
                    {
                        player_column--;
                    }
                    break;

                case ConsoleKey.RightArrow:
                    if (player_column < _gameboard.MaxNumOfRowsColumns - 1)
                    {
                        player_column++;
                    }
                    break;

                case ConsoleKey.F1:
                    JsonServices.WriteJsonFile(_gameboard);     //debug
                    DisplayGameSavedScreen();
                    return(-1);

                case ConsoleKey.F2:
                    Gameboard _tempboard = JsonServices.ReadJsonFile() as Gameboard;
                    _gameboard._board = _tempboard._board;     //debug
                    DisplayGameLoadedScreen();
                    return(-1);

                case ConsoleKey.F3:
                    break;

                case ConsoleKey.F4:
                    break;

                case ConsoleKey.Escape:
                    return(-2);

                default:
                    break;
                }
            } while (keyInfo.Key != ConsoleKey.Enter);

            /*
             * //
             * // Initialize gameboardPosition with -1 values
             * //
             * GameboardPosition gameboardPosition = new GameboardPosition(-1, -1);
             *
             * //
             * // Get row number from player.
             * //
             * gameboardPosition.Row = PlayerCoordinateChoice("Row");
             *
             * //
             * // Get column number.
             * //
             * if (CurrentViewState != ViewState.PlayerUsedMaxAttempts)
             * {
             *  gameboardPosition.Column = PlayerCoordinateChoice("Column");
             * }*/

            return(player_column);
        }