public void SetupFirstMoveToGrid(GridCoordinate gridCoordinate, BoardCellColor color) { m_color = color; m_startCoordinate.m_isOnGrid = false; m_endCoordinate.m_isOnGrid = true; m_endCoordinate.m_gridCoordinate = gridCoordinate; }
private void ValidateIfStartColorMatches(BoardCellColor color, GridCoordinate gridCoordinate) { var isColorCorrect = m_board.GetCellColor(gridCoordinate) == color; if (!isColorCorrect) { throw new Exception("Start coordinate and start color don't match."); } }
private bool IsWinByMainDiagonal(BoardCellColor playerColor) { var path = new List <GridCoordinate>(); for (var i = 0; i < m_board.GetBoardSize(); ++i) { path.Add(new GridCoordinate(i, i)); } return(IsPathWinning(path, playerColor)); }
private ImageBrush GetColorFromVM(BoardCellColor color) { switch (color) { case BoardCellColor.Dark: return(new ImageBrush(new BitmapImage(DARK_SQUARE_URI))); case BoardCellColor.Light: return(new ImageBrush(new BitmapImage(LIGHT_SQUARE_URI))); default: throw new NotImplementedException(); } }
private bool IsWinBySecondaryDiagonal(BoardCellColor playerColor) { var boardSize = m_board.GetBoardSize(); var path = new List <GridCoordinate>(); for (var i = 0; i < boardSize; ++i) { var row = i; var col = boardSize - i - 1; path.Add(new GridCoordinate(row, col)); } return(IsPathWinning(path, playerColor)); }
private bool IsPathWinning(List <GridCoordinate> path, BoardCellColor playerColor) { var matchCounter = 0; foreach (var cell in path) { if (playerColor == m_board.GetCellColor(cell)) { ++matchCounter; } } return(matchCounter == m_board.GetBoardSize()); }
private bool IsWinByColumn(BoardCellColor playerColor) { var boardSize = m_board.GetBoardSize(); for (var col = 0; col < boardSize; ++col) { var path = new List <GridCoordinate>(); for (var row = 0; row < boardSize; ++row) { path.Add(new GridCoordinate(row, col)); } if (IsPathWinning(path, playerColor)) { return(true); } } return(false); }
private void SwitchPlayer() { m_colorToMove = m_colorToMove == BoardCellColor.Blue ? BoardCellColor.White : BoardCellColor.Blue; }
public MoveData(BoardCellColor color, BoardCoordinate start, BoardCoordinate end) { m_color = color; m_startCoordinate = start; m_endCoordinate = end; }
public bool IsWinDetected(BoardCellColor playerColor) { return(IsWinByRow(playerColor) || IsWinByColumn(playerColor) || IsWinByMainDiagonal(playerColor) || IsWinBySecondaryDiagonal(playerColor)); }
private void SetCellColor(GridCoordinate coordinates, BoardCellColor color) { m_board[coordinates.GetRow()][coordinates.GetColumn()] = color; }