private static List <ISquareCollection> BuildRows( int[] tiles, Action <BoardSquare> squareCreatedAction) { var rows = new List <ISquareCollection>(); int count = 0; int row = 0; while (count < tiles.Length) { var squareCollection = new SquareCollection(); var rowTiles = tiles.Skip(count).Take(10).ToList(); for (int column = 0; column < rowTiles.Count; column++) { if (rowTiles[column] == -1) { continue; } var square = CreateSquare(rowTiles[column], row, column); squareCreatedAction(square); squareCollection.AddSquare(square); } rows.Add(squareCollection); count += 10; row++; } return(rows); }
private static IEnumerable <ISquareCollection> BuildLeftDiagnals(List <ISquareCollection> rows) { var leftDiagnals = new List <ISquareCollection>(); int column = 0; for (int i = 0; i < 10; i++) { var diagnal = new SquareCollection(); foreach (var row in rows) { var square = row[column]; if (square != null) { diagnal.AddSquare(square); } column++; } if (diagnal.Length >= 5) { leftDiagnals.Add(diagnal); } else { break; } column = i + 1; } var reversedRows = rows.ToList(); reversedRows.Reverse(); column = 8; for (int i = 8; i > 0; i--) { var diagnal = new SquareCollection(); foreach (var row in reversedRows) { var square = row[column]; if (square != null) { diagnal.AddSquare(square); } column--; } if (diagnal.Length >= 5) { leftDiagnals.Add(diagnal); } else { break; } column = i - 1; } return(leftDiagnals); }
private static IEnumerable<ISquareCollection> BuildLeftDiagnals(List<ISquareCollection> rows) { var leftDiagnals = new List<ISquareCollection>(); int column = 0; for (int i = 0; i < 10; i++) { var diagnal = new SquareCollection(); foreach (var row in rows) { var square = row[column]; if (square != null) { diagnal.AddSquare(square); } column++; } if (diagnal.Length >= 5) leftDiagnals.Add(diagnal); else break; column = i + 1; } var reversedRows = rows.ToList(); reversedRows.Reverse(); column = 8; for (int i = 8; i > 0; i--) { var diagnal = new SquareCollection(); foreach (var row in reversedRows) { var square = row[column]; if (square != null) { diagnal.AddSquare(square); } column--; } if (diagnal.Length >= 5) leftDiagnals.Add(diagnal); else break; column = i - 1; } return leftDiagnals; }
private static List<ISquareCollection> BuildRows( int[] tiles, Action<BoardSquare> squareCreatedAction) { var rows = new List<ISquareCollection>(); int count = 0; int row = 0; while (count < tiles.Length) { var squareCollection = new SquareCollection(); var rowTiles = tiles.Skip(count).Take(10).ToList(); for (int column = 0; column < rowTiles.Count; column++) { if (rowTiles[column] == -1) continue; var square = CreateSquare(rowTiles[column], row, column); squareCreatedAction(square); squareCollection.AddSquare(square); } rows.Add(squareCollection); count += 10; row++; } return rows; }