Exemplo n.º 1
0
        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;
                }
            }
        }