public bool Select(TicTacToeEnum ticTacToeEnum) { if (CurrentValue != TicTacToeEnum._) { return(false); } CurrentValue = ticTacToeEnum; return(true); }
private TicTacToeEnum CharToEnum(char player) { if (player == 'X') { gameState = TicTacToeEnum.X_WON; } else { gameState = TicTacToeEnum.O_WON; } return(gameState); }
private void Reset(char initialTurn) { this.turn = initialTurn; grid = new char[nRows, nColumns]; for (int i = 0; i < nRows; i++) { for (int j = 0; j < nColumns; j++) { grid[i, j] = ' '; } } nMarks = 0; gameState = TicTacToeEnum.IN_PROGRESS; }
public bool CheckWinner(TicTacToeEnum currentTurn, GameSpace[,] spaces) { if (currentTurn == TicTacToeEnum._) { return(false); } if (spaces[0, 0].CurrentValue == currentTurn && spaces[1, 1].CurrentValue == currentTurn && spaces[2, 2].CurrentValue == currentTurn) { return(true); } if (spaces[0, 2].CurrentValue == currentTurn && spaces[1, 1].CurrentValue == currentTurn && spaces[2, 0].CurrentValue == currentTurn) { return(true); } return(false); }
private void CheckForWinner(TicTacToeEnum currentTurn) { var horizontalWinner = _ticTacToeHorizontalChecker.CheckWinner(currentTurn, Spaces); var verticalWinner = _ticTacToeVertcalChecker.CheckWinner(currentTurn, Spaces); var crossWinner = _ticTacToeDiagonalChecker.CheckWinner(currentTurn, Spaces); if (horizontalWinner || verticalWinner || crossWinner) { if (CurrentTicTacToeTurn == TicTacToeEnum.O) { CurrentTicTacToeGameStatus = TicTakToeGameStatusEnum.OWins; } else { CurrentTicTacToeGameStatus = TicTakToeGameStatusEnum.XWins; } } TurnCount++; if (TurnCount == 9) { CurrentTicTacToeGameStatus = TicTakToeGameStatusEnum.Draw; } }
public GameSpace() { CurrentValue = TicTacToeEnum._; }
private TicTacToeEnum findWinner() { int winC = 0; for (int i = 0; i < nRows; i++) { for (int j = 0; j < nColumns; j++) { //checking horizontal win for (int k = 0; k < num_to_win; k++) { if (j + k < nColumns) { if (grid[i, j + k] == turn) { winC++; if (winC == num_to_win) { CharToEnum(turn); return(gameState); } } else { winC = 0; } } } winC = 0; //check vertical win for (int k = 0; k < num_to_win; k++) { if (i + k < nRows) { if (grid[i + k, j] == turn) { winC++; if (winC == num_to_win) { CharToEnum(turn); return(gameState); } } else { winC = 0; } } } winC = 0; //check for bottom right diagonal win for (int k = 0; k < num_to_win; k++) { if (i + k < nRows && j + k < nColumns) { if (grid[i + k, j + k] == turn) { winC++; if (winC == num_to_win) { CharToEnum(turn); return(gameState); } } else { winC = 0; } } } winC = 0; //check for bottom left diagonal win for (int k = 0; k < num_to_win; k++) { if (i - k >= 0 && j + k < nColumns) { if (grid[i - k, j + k] == turn) { winC++; if (winC == num_to_win) { CharToEnum(turn); return(gameState); } } else { winC = 0; } } } winC = 0; } } if (nRows * nColumns == nMarks) { gameState = TicTacToeEnum.DRAW; } return(gameState); }