Exemplo n.º 1
0
        public TickTackToePlayer(string name, TickTackToeBoard.TickTackToeToken token)
        {
            Name = name;

            if (token == TickTackToeBoard.TickTackToeToken.Available)
            {
                throw new InvalidOperationException($"{TickTackToeBoard.TickTackToeToken.Available} is not a valid token");
            }

            Token = token;
        }
Exemplo n.º 2
0
 private bool isWinningSecondDiagonal(TickTackToeBoard.TickTackToeToken playerTurnToken)
 {
     for (var d = 0; d < Board.BoardRowCount; d++)
     {
         if (Board.GetValueAtLocation(d, Board.BoardRowCount - d - 1) != playerTurnToken)
         {
             return(false);
         }
     }
     return(true);
 }
Exemplo n.º 3
0
        private bool isWinningColumn(int column, TickTackToeBoard.TickTackToeToken playerTurnToken)
        {
            for (var row = 0; row < Board.BoardRowCount; row++)
            {
                if (Board.GetValueAtLocation(row, column) != playerTurnToken)
                {
                    return(false);
                }
            }

            return(true);
        }
Exemplo n.º 4
0
        private bool isWinnerByColumn(TickTackToeBoard.TickTackToeToken playerTurnToken)
        {
            for (var column = 0; column < Board.BoardColumnCount; column++)
            {
                if (isWinningColumn(column, playerTurnToken))
                {
                    return(true);
                }
            }

            return(false);
        }
Exemplo n.º 5
0
        private bool isWinningRow(int row, TickTackToeBoard.TickTackToeToken playerTurnToken)
        {
            for (var column = 1; column < Board.BoardColumnCount; column++)
            {
                if (Board.GetValueAtLocation(row, column) != playerTurnToken)
                {
                    return(false);
                }
            }

            return(true);
        }
Exemplo n.º 6
0
        private bool isWinnerByRow(TickTackToeBoard.TickTackToeToken playerTurnToken)
        {
            for (var row = 0; row < Board.BoardRowCount; row++)
            {
                if (isWinningRow(row, playerTurnToken))
                {
                    return(true);
                }
            }

            return(false);
        }
Exemplo n.º 7
0
        private TickTackToeGameResult GetGameWinResultFromToken(TickTackToeBoard.TickTackToeToken playerTurnToken)
        {
            switch (playerTurnToken)
            {
            case TickTackToeBoard.TickTackToeToken.O:
                return(TickTackToeGameResult.OWins);

            case TickTackToeBoard.TickTackToeToken.X:
                return(TickTackToeGameResult.XWins);

            default: throw new ArgumentException(message: "invalid enum value", paramName: nameof(playerTurnToken));
            }
        }
Exemplo n.º 8
0
        private bool isWinnerByDiaganal(TickTackToeBoard.TickTackToeToken playerTurnToken)
        {
            if (isWinningFirstDiagonal(playerTurnToken))
            {
                return(true);
            }
            if (isWinningSecondDiagonal(playerTurnToken))
            {
                return(true);
            }

            return(false);
        }
Exemplo n.º 9
0
        public virtual TickTackToeGameResult CheckTurnResult(TickTackToeBoard.TickTackToeToken playerTurnToken)
        {
            if (this.HasGameBeenWon(playerTurnToken))
            {
                return(GetGameWinResultFromToken(playerTurnToken));
            }

            if (!Board.AnyMovesLeft())
            {
                return(TickTackToeGameResult.CatsGame);
            }

            return(TickTackToeGameResult.InProgress);
        }
Exemplo n.º 10
0
        public virtual bool HasGameBeenWon(TickTackToeBoard.TickTackToeToken playerTurnToken)
        {
            if (isWinnerByRow(playerTurnToken))
            {
                return(true);
            }
            if (isWinnerByColumn(playerTurnToken))
            {
                return(true);
            }
            if (isWinnerByDiaganal(playerTurnToken))
            {
                return(true);
            }

            return(false);
        }
Exemplo n.º 11
0
 public void SetPlayer2(string name, TickTackToeBoard.TickTackToeToken token)
 {
     Player2 = new TickTackToePlayer(name, token);
 }