示例#1
0
        public static MoveCollection SolveCube(Cube cube, Type cubeSolver)
        {
            CubeSolver solver;

            if (cubeSolver == typeof(CrossSolver))
            {
                solver = new CrossSolver(cube);

                solver.CalcMoves();

                if (!solver.Solved)
                {
                    MessageBox.Show("Der Würfel konnte nicht gelöst werden.");
                }

                return(solver.moves);
            }
            else if (cubeSolver == typeof(CubeSolverFridrich))
            {
                solver = new CubeSolverFridrich(cube);

                solver.CalcMoves();

                if (!solver.Solved)
                {
                    MessageBox.Show("Der Würfel konnte nicht gelöst werden.");
                }

                return(solver.moves);
            }
            else
            {
                throw new NotImplementedException();
            }
        }
        protected override void CalcMoves()
        {
            // Das weiße Kreuz lösen
            CrossSolver cross = new CrossSolver(cube);

            moves.AddRange(cross.GetMoves());

            FTLSolver ftl = new FTLSolver(cube);

            moves.AddRange(ftl.GetMoves());

            try {
                //CalcOLL();

                //CalcPLL();

                bool solved = GetCubeSolved();

                if (!solved)
                {
                    moves.Clear();
                }
            }
            catch (Exception) {
                throw;
            }
        }