public void moveGapRight() { int gapPos = getGapPosition(); int x = getXCoord(gapPos); int ypos = getYCoord(gapPos); if (!(ypos == 2)) { int valueOnRight = getValueAt(x, ypos + 1); setValue(x, ypos, valueOnRight); setValue(x, ypos + 1, 0); } }
public Object result(Object s, Action a) { EightPuzzleBoard board = (EightPuzzleBoard)s; if (EightPuzzleBoard.UP.Equals(a) && board.canMoveGap(EightPuzzleBoard.UP)) { EightPuzzleBoard newBoard = new EightPuzzleBoard(board); newBoard.moveGapUp(); return newBoard; } else if (EightPuzzleBoard.DOWN.Equals(a) && board.canMoveGap(EightPuzzleBoard.DOWN)) { EightPuzzleBoard newBoard = new EightPuzzleBoard(board); newBoard.moveGapDown(); return newBoard; } else if (EightPuzzleBoard.LEFT.Equals(a) && board.canMoveGap(EightPuzzleBoard.LEFT)) { EightPuzzleBoard newBoard = new EightPuzzleBoard(board); newBoard.moveGapLeft(); return newBoard; } else if (EightPuzzleBoard.RIGHT.Equals(a) && board.canMoveGap(EightPuzzleBoard.RIGHT)) { EightPuzzleBoard newBoard = new EightPuzzleBoard(board); newBoard.moveGapRight(); return newBoard; } // The Action is not understood or is a NoOp // the result will be the current state. return s; }