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); }
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); }