private void CheckDraw(MiniAreaModel area) { bool flagOfDraw = area.CellsList.All(x => x.CellState != States.Empty); if (flagOfDraw) { area.AreaState = States.Draw; } }
public void CheckWin(MiniAreaModel area, States cellState) { var checkedCells = area.CellsList.Where(x => x.CellState == cellState); var diagonalRight = 0; var diagonalLeft = 0; for (int x = 0; x < area.Size; x++) { var horizontLines = 0; var verticalLines = 0; for (int y = 0; y < area.Size; y++) { horizontLines += checkedCells.Any(d => d.Coordinates.CoordX == x && d.Coordinates.CoordY == y) ? 1 : 0; verticalLines += checkedCells.Any(d => d.Coordinates.CoordX == y && d.Coordinates.CoordY == x) ? 1 : 0; } if ((verticalLines == 3 || horizontLines == 3) && area.AreaState == States.Empty) { //SetWinner(area, cellState); return; } diagonalRight += checkedCells.Any(d => d.Coordinates.CoordX == x && d.Coordinates.CoordY == x) ? 1 : 0; diagonalLeft += checkedCells.Any(d => d.Coordinates.CoordX == x && d.Coordinates.CoordY == area.Size - x - 1) ? 1 : 0; } if ((diagonalRight == 3 || diagonalLeft == 3) && area.AreaState == States.Empty) { //SetWinner(area, cellState); return; } CheckDraw(area); }