Example #1
0
        private static void SolveEightPuzzleProblem()
        {
            var initialState = EightPuzzleState.CreateRandomState();
            var goalState    = new EightPuzzleState(new int[3, 3] {
                { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 0 }
            });
            var actionFunction  = new EightPuzzleActionFunction();
            var resultFunction  = new EightPuzzleResultFunction();
            var goalTest        = new EightPuzzleGoalTest(goalState);
            var stepCost        = new EightPuzzleStepCost();
            var heuristic       = new EightPuzzleHeuristicFunction(goalState);
            var searchAlgorithm = new AStarGraphSearch <EightPuzzleState, EightPuzzleAction>(heuristic);

            SolveProblem(actionFunction, resultFunction, goalTest, stepCost, initialState, searchAlgorithm);
        }
Example #2
0
        private void ShowNextMove()
        {
            EightPuzzleState kState = _viewModel.NextMoveState();

            if (kState == null)
            {
                return;
            }

            Position kBlankTilePosition = kState.Board.BlankTilePosition;

            Debug.Assert(kState.Direction != null, "state.Direction != null");
            MoveDirection kMoveDirection = kState.Direction.Value.Opposite();

            m_kTiles[kBlankTilePosition.Row, kBlankTilePosition.Column].Move(kMoveDirection, () =>
            {
                SetTileValues(kState.Board);
                ShowNextMove();
            }, TILE_MOVE_DURATION_MSEC);
        }