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; }
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); }
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); }
private bool isWinnerByColumn(TickTackToeBoard.TickTackToeToken playerTurnToken) { for (var column = 0; column < Board.BoardColumnCount; column++) { if (isWinningColumn(column, playerTurnToken)) { return(true); } } return(false); }
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); }
private bool isWinnerByRow(TickTackToeBoard.TickTackToeToken playerTurnToken) { for (var row = 0; row < Board.BoardRowCount; row++) { if (isWinningRow(row, playerTurnToken)) { return(true); } } return(false); }
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)); } }
private bool isWinnerByDiaganal(TickTackToeBoard.TickTackToeToken playerTurnToken) { if (isWinningFirstDiagonal(playerTurnToken)) { return(true); } if (isWinningSecondDiagonal(playerTurnToken)) { return(true); } return(false); }
public virtual TickTackToeGameResult CheckTurnResult(TickTackToeBoard.TickTackToeToken playerTurnToken) { if (this.HasGameBeenWon(playerTurnToken)) { return(GetGameWinResultFromToken(playerTurnToken)); } if (!Board.AnyMovesLeft()) { return(TickTackToeGameResult.CatsGame); } return(TickTackToeGameResult.InProgress); }
public virtual bool HasGameBeenWon(TickTackToeBoard.TickTackToeToken playerTurnToken) { if (isWinnerByRow(playerTurnToken)) { return(true); } if (isWinnerByColumn(playerTurnToken)) { return(true); } if (isWinnerByDiaganal(playerTurnToken)) { return(true); } return(false); }
public void SetPlayer2(string name, TickTackToeBoard.TickTackToeToken token) { Player2 = new TickTackToePlayer(name, token); }