public void Generate(int number) { ObservableCollection <Sticks> tempo = new ObservableCollection <Sticks>(); ObservableCollection <Sticks> alphatempo = new ObservableCollection <Sticks>(); ObservableCollection <Sticks> betatempo = new ObservableCollection <Sticks>(); first.Clear(); third.Clear(); second.Clear(); ALPHAfirst.Clear(); ALPHAsecond.Clear(); ALPHAthird.Clear(); BETAfirst.Clear(); BETAsecond.Clear(); BETAthird.Clear(); Procedure.Clear(); BackProcedure.Clear(); Steps = ""; if (pegname == "A" || pegname == "a") { pegname = "A"; tempo = first; alphatempo = ALPHAfirst; betatempo = BETAfirst; } if (pegname == "B" || pegname == "b") { pegname = "B"; tempo = second; alphatempo = ALPHAsecond; betatempo = BETAsecond; } if (pegname == "C" || pegname == "c") { pegname = "C"; tempo = third; alphatempo = ALPHAthird; betatempo = BETAthird; } for (int i = number; i > 0; i--) { var b = new Sticks(i.ToString()); tempo.Insert(0, new Sticks(i.ToString())); alphatempo.Insert(0, new Sticks(i.ToString())); betatempo.Insert(0, new Sticks(i.ToString())); } StepByStepFlag = false; }
private void StepByStepCommandProc() { if (StepByStepFlag == false) { Generate(NumberOfDisks); Queue <string> girl = new Queue <string>(); if (pegend == "C" || pegend == "c") { pegend = "C"; } if (pegend == "B" || pegend == "b") { pegend = "B"; } if (pegend == "A" || pegend == "a") { pegend = "A"; } if (pegname == "A" && pegend == "B") { girl = hoy.MoveStep(NumberOfDisks, BETAfirst, BETAsecond, BETAthird); while (girl.Count != 0) { BackProcedure.Add(girl.Dequeue()); } } if (pegname == "B" && pegend == "A") { girl = hoy.MoveStep(NumberOfDisks, BETAsecond, BETAfirst, BETAthird); while (girl.Count != 0) { BackProcedure.Add(girl.Dequeue()); } } if (pegname == "A" && pegend == "C") { girl = hoy.MoveStep(NumberOfDisks, BETAfirst, BETAthird, BETAsecond); while (girl.Count != 0) { BackProcedure.Add(girl.Dequeue()); } } if (pegname == "C" && pegend == "A") { girl = hoy.MoveStep(NumberOfDisks, BETAthird, BETAfirst, BETAsecond); while (girl.Count != 0) { BackProcedure.Add(girl.Dequeue()); } } if (pegname == "B" && pegend == "C") { girl = hoy.MoveStep(NumberOfDisks, BETAsecond, BETAthird, BETAfirst); while (girl.Count != 0) { BackProcedure.Add(girl.Dequeue()); } } if (pegname == "C" && pegend == "B") { girl = hoy.MoveStep(NumberOfDisks, BETAthird, BETAsecond, BETAfirst); while (girl.Count != 0) { BackProcedure.Add(girl.Dequeue()); } } string zxc = BackProcedure.First(); BackProcedure.Remove(BackProcedure.First()); string[] checker = zxc.Split(' '); //641 2 + 53 * if (checker[5] == "A" && checker[8] == "C") { var b = ALPHAfirst.ElementAtOrDefault(0); ALPHAthird.Insert(0, b); ALPHAfirst.RemoveAt(0); Procedure.Add(zxc); Steps = zxc; } if (checker[5] == "C" && checker[8] == "A") { var b = ALPHAthird.ElementAtOrDefault(0); ALPHAfirst.Insert(0, b); ALPHAthird.RemoveAt(0); Procedure.Add(zxc); Steps = zxc; } if (checker[5] == "A" && checker[8] == "B") { var b = ALPHAfirst.ElementAtOrDefault(0); ALPHAsecond.Insert(0, b); ALPHAfirst.RemoveAt(0); Procedure.Add(zxc); Steps = zxc; } if (checker[5] == "B" && checker[8] == "A") { var b = ALPHAsecond.ElementAtOrDefault(0); ALPHAfirst.Insert(0, b); ALPHAsecond.RemoveAt(0); Procedure.Add(zxc); Steps = zxc; } if (checker[5] == "B" && checker[8] == "C") { var b = ALPHAsecond.ElementAtOrDefault(0); ALPHAthird.Insert(0, b); ALPHAsecond.RemoveAt(0); Procedure.Add(zxc); Steps = zxc; } if (checker[5] == "C" && checker[8] == "B") { var b = ALPHAthird.ElementAtOrDefault(0); ALPHAsecond.Insert(0, b); ALPHAthird.RemoveAt(0); Procedure.Add(zxc); Steps = zxc; } StepByStepFlag = true; return; } if (StepByStepFlag) { if (BackProcedure.Count != 0) { string zxc = BackProcedure.First(); BackProcedure.Remove(BackProcedure.First()); string[] checker = zxc.Split(' '); //641 2 + 53 * if (checker[5] == "A" && checker[8] == "C") { var b = ALPHAfirst.ElementAtOrDefault(0); ALPHAthird.Insert(0, b); ALPHAfirst.RemoveAt(0); Procedure.Add(zxc); Steps = zxc; } if (checker[5] == "C" && checker[8] == "A") { var b = ALPHAthird.ElementAtOrDefault(0); ALPHAfirst.Insert(0, b); ALPHAthird.RemoveAt(0); Procedure.Add(zxc); Steps = zxc; } if (checker[5] == "A" && checker[8] == "B") { var b = ALPHAfirst.ElementAtOrDefault(0); ALPHAsecond.Insert(0, b); ALPHAfirst.RemoveAt(0); Procedure.Add(zxc); Steps = zxc; } if (checker[5] == "B" && checker[8] == "A") { var b = ALPHAsecond.ElementAtOrDefault(0); ALPHAfirst.Insert(0, b); ALPHAsecond.RemoveAt(0); Procedure.Add(zxc); Steps = zxc; } if (checker[5] == "B" && checker[8] == "C") { var b = ALPHAsecond.ElementAtOrDefault(0); ALPHAthird.Insert(0, b); ALPHAsecond.RemoveAt(0); Procedure.Add(zxc); Steps = zxc; } if (checker[5] == "C" && checker[8] == "B") { var b = ALPHAthird.ElementAtOrDefault(0); ALPHAsecond.Insert(0, b); ALPHAthird.RemoveAt(0); Procedure.Add(zxc); Steps = zxc; } } else { return; } } }