public void Reset() { List <Square> list = tableLayoutPanel1.Controls.OfType <Square>().OrderBy(a => a.Number).ToList(); tableLayoutPanel1.Controls.Clear(); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { string order = PuzzleDriver.GetBasePuzzleOrder()[i * 3 + j].ToString(); var sq = list.SingleOrDefault(a => Regex.Replace(a.Name, "\\D*", "") == order); if (sq != null) { tableLayoutPanel1.Controls.Add(sq, j, i); } } } }
public void Shuffle() { do { List <Square> list = tableLayoutPanel1.Controls.OfType <Square>().ToList(); list.Add(null); List <Square> newList = new List <Square>(); int[,] matrix = new int[3, 3]; Random rnd = new Random(); while (list.Count > 0) { int r = rnd.Next(0, list.Count); newList.Add(list[r]); list.RemoveAt(r); } tableLayoutPanel1.Controls.Clear(); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { var obj = newList[i * 3 + j]; if (obj == null) { matrix[i, j] = obj?.Number ?? 0; continue; } matrix[i, j] = obj.Number; tableLayoutPanel1.Controls.Add(obj, i, j); } } } while (!isSolvable(PuzzleDriver.GetBasePuzzleOrder(), GetSequentalOrder)); }
private async void button5_Click(object sender, EventArgs e) { EditMode = !EditMode; if (!EditMode) { (sender as Button).Text = "KAYDET"; button4.Enabled = false; button3.Enabled = false; button2.Enabled = false; button1.Enabled = false; flowLayoutPanel1.Controls.Clear(); CTS = new CancellationTokenSource(); await Task.Factory.StartNew(() => { Color bakColor = Color.Empty; bool onOff = false; int exitConfirm = 0; do { if (CTS != null && CTS.Token.IsCancellationRequested) { CTS = null; exitConfirm = 1; } foreach (Square sq in n_Puzzle1.GetSquareList) { if (exitConfirm == 1) { sq.BorderColor = Color.Green; continue; } else if (exitConfirm == 2) { sq.BorderColor = bakColor; continue; } else if (exitConfirm == 3) { sq.BorderColor = bakColor; continue; } if (bakColor == Color.Empty) { bakColor = sq.BorderColor; } if (onOff) { sq.BorderColor = bakColor; } else { sq.BorderColor = Color.Red; } } if (exitConfirm != 0) { exitConfirm++; Thread.Sleep(500); } onOff = !onOff; Thread.Sleep(500); } while (!(exitConfirm == 3)); }, CTS.Token); } else { (sender as Button).Text = "Son Durumu Düzenle"; CTS.Cancel(); await Task.Delay(500); PuzzleDriver.SetBasePuzzleOrder(n_Puzzle1.GetSequentalOrder); button4.Enabled = true; button3.Enabled = true; button2.Enabled = true; button1.Enabled = true; } }