private void NewSudoku() { myCanvas.Children.Clear(); GridMaker.AddRandomDigitsToGrid(ref grid, 81 - level); gridDrafter = new GridDrafter(grid); gridDrafter.CreateGridForSudoku(myCanvas); solved = new int[81]; Array.Copy(grid, solved, 81); Solver.TrySolveSudoku(solved); gridDrafter.AddInputsForUser(myCanvas, grid); TextBox[] tbs = gridDrafter.GetInputs(); foreach (TextBox tb in tbs) { if (tb != null) { tb.KeyDown += Inputs_KeyDown; } } NextSudoku.IsEnabled = false; CheckInputs.IsEnabled = true; SolveButton.IsEnabled = true; PointsText.Content = $"Points: {points}"; }
private bool SolveGrid() { TextBox[] tbs = gridDrafter.GetInputs(); for (int i = 0; i < 81; i++) { if (tbs[i] != null && tbs[i].Text.ToString().Length != 0) { if (Solver.CheckNoConflict(grid, (int)(i / 9), (i % 9), Int32.Parse(tbs[i].Text.ToString()))) { grid[i] = Int32.Parse(tbs[i].Text.ToString()); } else { return(false); } } } myCanvas.Children.Clear(); if (Solver.TrySolveSudoku(grid)) { gridDrafter = new GridDrafter(grid); gridDrafter.CreateGridForSudoku(myCanvas); gridDrafter.AddInputsForUser(myCanvas, grid); } else { return(false); } return(true); }
private void CheckInputs_Click(object sender, RoutedEventArgs e) { tempGrid = new int[81]; Array.Copy(grid, tempGrid, 81); TextBox [] tbs = gridDrafter.GetInputs(); for (int i = 0; i < 81; i++) { if (tbs[i] != null && tbs[i].Text.ToString().Length != 0) { tempGrid[i] = Int32.Parse(tbs[i].Text.ToString()); } } for (int i = 0; i < 81; i++) { if (tbs[i] != null) { if (solved[i] != tempGrid[i] && tempGrid[i] != 0) { tbs[i].Foreground = new SolidColorBrush(Colors.Red); if (points > 0) { points--; PointsText.Content = $"Points: {points}"; } } else if (tempGrid[i] != 0) { tbs[i].Foreground = new SolidColorBrush(Colors.DarkGreen); tbs[i].IsEnabled = false; } } } bool gridsAreEqual = Enumerable.SequenceEqual(tempGrid, solved); if (gridsAreEqual) { points += 10 * (level - 1) + 1; if (level < 80) { level++; } PointsText.Content = $"Points: {points}"; NextSudoku.IsEnabled = true; NextSudoku.Focus(); CheckInputs.IsEnabled = false; } }