示例#1
0
        static void Main(string[] args)
        {
            bool      player1 = true;
            int       win     = 0;
            GameBoard board   = new GameBoard();

            board.Print();
            do
            {
                board.Move(player1);
                board.Print();
                win = board.WinDraw(win);
                if (win == 0)
                {
                    player1 = !player1;
                }
            } while (win == 0);
            string[] player = board.Player(player1);
            if (win == 1)
            {
                Console.WriteLine("Congratulations {0} you have won the game.", player[0]);
            }
            else
            {
                Console.WriteLine("No more moves possible, it is a DRAW.");
            }
            Console.ReadKey();
        }
示例#2
0
        private static void PlayersInput(GameBoard gameBoard)
        {
            var ValidInput = false;

            while (!ValidInput)
            {
                Console.WriteLine($"{gameBoard.CurrentPlayersName()}, Enter a number between 1 to 9: ");

                if (userInputCheck(Console.ReadLine(), gameBoard))
                {
                    if (!gameBoard.IsSpaceAvaliable())
                    {
                        gameBoard.Print();
                        Console.WriteLine($"{gameBoard.LatestNumber} Space is already taken! Try again!");
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
示例#3
0
        public static void Main(string[] args)
        {
            var player1   = new Player("Player1", "O");
            var player2   = new Player("Player2", "X");
            var gameBoard = new GameBoard(new List <Player> {
                player1, player2
            });

            var gameActive = true;

            while (gameActive)
            {
                gameBoard.ResetBoard();

                while (!gameBoard.IsGameDone)
                {
                    gameBoard.Print();
                    PlayersInput(gameBoard);
                    gameBoard.Play();
                }
                gameActive = PlayAgain();
            }
        }
示例#4
0
        // the bulk of the desired functionality should be refactored into a
        // method that will be invoked once the class has been initialized.
        public void Invoke()
        {
            // declare local variables
            // this will used to determine which DAL method I need to call
            DatabaseAccessLayer _dal = new DatabaseAccessLayer();
            List <Player>       _listOfPlayers;

            // Title of game
            Console.WriteLine("Welcome to Tic-Tac-Toe");

            // Creates a new GameBoard
            GameBoard _board = new GameBoard();
            bool      IsPlayersNotSelected = true;

            Player _firstPlayer  = new Player();
            Player _secondPlayer = new Player();

            while (IsPlayersNotSelected)
            {
                // print out the main menu
                Console.WriteLine("Menu (L) - List all players, (S) Select players for the game, " +
                                  "(A) - Add Player, " +
                                  "(D) - Delete Player, (U) - Update Player");

                string _menuItemPicked = Console.ReadLine();

                // what does the user want to do
                switch (_menuItemPicked.ToUpper())
                {
                case "A":         // add user
                    // collect all the information from the user
                    Console.WriteLine("Enter first name (required): ");
                    string _firstNameInput = Console.ReadLine();
                    Console.WriteLine("Enter last name (required): ");
                    string _lastNameInput = Console.ReadLine();
                    Console.WriteLine("Enter birthdate MM/DD/YYYY (optional): ");
                    string _birthdateInput = Console.ReadLine();
                    Console.WriteLine("Enter gender M or F (optional): ");
                    string _genderInput = Console.ReadLine();

                    // constructor
                    Player _newPlayer = new Player(_firstNameInput, _lastNameInput,
                                                   _birthdateInput, _genderInput, PlayerType.Human);

                    // pass all value thru the object reference
                    _userReader.AddUser(_newPlayer);

                    break;

                case "D":      // delete a player from the db
                    // print out the list for them of they player ids
                    Console.WriteLine("Please enter player id you want to delete for the game.");
                    int _getAllPlayers = 0;
                    _listOfPlayers = _dal.GetAllPlayers(_getAllPlayers);

                    // print out the board
                    _board.PrintPlayers(_listOfPlayers);

                    // the get the player id
                    int _playerId = Convert.ToInt32(Console.ReadLine());

                    //delete the player and their stats
                    _dal.DeletePlayer(_playerId);

                    break;

                case "L":     // list all the players in
                    int _playerIDToGet = 0;
                    _listOfPlayers = _dal.GetAllPlayers(_playerIDToGet);
                    // add the bot player
                    _listOfPlayers.Add(new Player {
                        PlayerFirstName = "Bot", PlayerID = 666, PlayerLastName = "Boy", PlayerType = PlayerType.Bot
                    });

                    // uses the list
                    _board.PrintPlayers(_listOfPlayers);
                    break;


                case "S":
                    // print out the list for them of they player ids
                    Console.WriteLine("Please look at the list of available players, enter two player ids for the game.");
                    _getAllPlayers = 0;
                    _listOfPlayers = _dal.GetAllPlayers(_getAllPlayers);
                    _listOfPlayers.Add(new Player {
                        PlayerFirstName = "Bot", PlayerID = 666, PlayerLastName = "Boy", PlayerType = PlayerType.Bot
                    });

                    // print out the board
                    _board.PrintPlayers(_listOfPlayers);

                    // get the two players
                    Console.WriteLine("Please enter PlayerID for first player.");
                    int firstPlayerId = Convert.ToInt32(Console.ReadLine());
                    Console.WriteLine("Please enter PlayerID for second player.");
                    int secondPlayerId = Convert.ToInt32(Console.ReadLine());

                    // write some LINQ to get player one and create object for that player
                    Player _firstPlayerDAL = _listOfPlayers.Where(x => x.PlayerID == firstPlayerId).FirstOrDefault();

                    // write some LINQ to get player two and create object for that player
                    Player _secondPlayerDAL = _listOfPlayers.Where(x => x.PlayerID == secondPlayerId).FirstOrDefault();

                    // map these to player objects because that's what game play takes
                    //_firstPlayer = Mapper.PlayerDALtoPlayer(_firstPlayerDAL, 1, 'X');
                    //_secondPlayer = Mapper.PlayerDALtoPlayer(_secondPlayerDAL, 2, '0');
                    _firstPlayer                    = _firstPlayerDAL;
                    _secondPlayer                   = _secondPlayerDAL;
                    _firstPlayer.PlayerToken        = 'X';
                    _firstPlayer.PlayerOrderByPlay  = 1;
                    _secondPlayer.PlayerToken       = 'O';
                    _secondPlayer.PlayerOrderByPlay = 2;

                    // drop out of loop
                    IsPlayersNotSelected = false;
                    break;

                default:
                    break;
                }
            } // while end


            // continuing to game play

            ////Creates a new GameBoard
            //GameBoard board = new GameBoard(first, second);
            _board.SetPlayers(_firstPlayer, _secondPlayer);

            // print instructions to where your choice will go 1- 9
            Console.WriteLine("Players will pick a number between 1 and 9 to determnine where they will play");

            // prints out the rule board
            _board.Print();

            // game play code starting here

            // need a loop to go back and forth between the players
            bool IsContinueGame = true; // will be switched to false on a draw or winner inside the loop
            //string currentPlayer = player1; // used to determine what will be stored in the array
            Player _currentPlayer;
            int    _currentPlayerIndex = 0;
            string _position           = "";

            while (IsContinueGame)
            {
                _currentPlayer = _board.TwoPlayers[_currentPlayerIndex];


                // TODO: only for the screen players
                // need player to pick a location

                if (_currentPlayer.PlayerType == PlayerType.Human)
                {
                    Console.WriteLine(_currentPlayer.PlayerFirstName + " " + _currentPlayer.PlayerLastName + ", please pick a location 1 to 9 that is not already occupied");
                    Console.Write("Location: ");
                    _position = Console.ReadLine();


                    // only humans to things wrong
                    // need validation to make sure is legal spot
                    // checks for valid player input
                    _position = _board.ValidateInput(_position, _currentPlayer.PlayerFirstName + " " + _currentPlayer.PlayerLastName);

                    bool validMove = false;

                    // checks if the player made a valid move
                    while (validMove == false)
                    {
                        validMove = _board.ValidateMove(Convert.ToInt32(_position));

                        if (validMove == false)
                        {
                            Console.WriteLine(_currentPlayer.PlayerFirstName + " " + _currentPlayer.PlayerLastName +
                                              ", please use only the numbers 1 to 9 and a space that is not already occupied");
                            _board.Print();
                            Console.Write("Location: ");
                            _position = Console.ReadLine();
                            _position = _board.ValidateInput(_position, _currentPlayer.PlayerFirstName + " " + _currentPlayer.PlayerLastName);
                        }
                    }
                }
                else  // BOT turn
                {
                    // no validation needed



                    // need the current board state to decide
                    _position = _currentPlayer.BotMove(_board.BoardState);


                    // print the location picked
                    Console.WriteLine(_currentPlayer.PlayerFirstName + " " + _currentPlayer.PlayerLastName +
                                      ", please use only the numbers 1 to 9 and a space that is not already occupied");
                }



                // place it
                // do we place a X or O?
                char charToPlace;
                charToPlace = _currentPlayer.PlayerToken;



                // this is simply placing the token, all the hard decisions have been made
                _board.Place(charToPlace, Convert.ToInt32(_position));


                // print it
                _board.Print();

                // check if it's a winner or draw, if not flip the player
                string result = _board.CheckForWinnerOrDraw();


                switch (result)
                {
                case "win":
                    IsContinueGame = false;
                    Console.WriteLine(_currentPlayer.PlayerFirstName + " " + _currentPlayer.PlayerLastName + " wins!!!!!");
                    Console.WriteLine();
                    break;

                case "draw":
                    IsContinueGame = false;
                    Console.WriteLine("Game is a draw !!!!");
                    Console.WriteLine();
                    break;

                default:
                    break;
                }

                // flip the player
                if (_currentPlayerIndex == 0)
                {
                    _currentPlayerIndex = 1;
                }
                else
                {
                    _currentPlayerIndex = 0;
                }

                // ENH: add win loss draw to the database


                // ENH: to they want another game ?
            }  // game loop

            //Stops the program
            Console.WriteLine("Game Over");
            Console.ReadLine();
        }