static private void movePuzzle() { int direction = (int)stackDFS.Pop(); if (direction == 0) { PuzzleData.moveLeft(xTempPuzzle, yTempPuzzle); } else if (direction == 1) { PuzzleData.moveUp(xTempPuzzle, yTempPuzzle); } else if (direction == 2) { PuzzleData.moveRight(xTempPuzzle, yTempPuzzle); } else if (direction == 3) { PuzzleData.moveDown(xTempPuzzle, yTempPuzzle); } if (!trackBack) { addMove(direction); } addVisitedList(); trackBack = false; }
static private void addNextMove() { bool moveAdded = false; if (isValidMove(0)) { PuzzleData.moveLeft(xTempPuzzle, yTempPuzzle); if (isVisitedState()) { PuzzleData.moveRight(xTempPuzzle, yTempPuzzle); } else { PuzzleData.moveRight(xTempPuzzle, yTempPuzzle); stackDFS.Push(0); moveAdded = true; } } if (isValidMove(1)) { PuzzleData.moveUp(xTempPuzzle, yTempPuzzle); if (isVisitedState()) { PuzzleData.moveDown(xTempPuzzle, yTempPuzzle); } else { PuzzleData.moveDown(xTempPuzzle, yTempPuzzle); stackDFS.Push(1); moveAdded = true; } } if (isValidMove(2)) { PuzzleData.moveRight(xTempPuzzle, yTempPuzzle); if (isVisitedState()) { PuzzleData.moveLeft(xTempPuzzle, yTempPuzzle); } else { PuzzleData.moveLeft(xTempPuzzle, yTempPuzzle); stackDFS.Push(2); moveAdded = true; } } if (isValidMove(3)) { PuzzleData.moveDown(xTempPuzzle, yTempPuzzle); if (isVisitedState()) { PuzzleData.moveUp(xTempPuzzle, yTempPuzzle); } else { PuzzleData.moveUp(xTempPuzzle, yTempPuzzle); stackDFS.Push(3); moveAdded = true; } } if (!moveAdded) { int lastMove = (int)stackMoves.Pop(); if (lastMove == 0) { lastMove = 2; } else if (lastMove == 1) { lastMove = 3; } else if (lastMove == 2) { lastMove = 0; } else if (lastMove == 3) { lastMove = 1; } stackDFS.Push(lastMove); trackBack = true; } }