I am trying to design a simple 3x3 sliding puzzle game. The only tile you can move is a blank tile and this can be swapped with any of its neighbouring tiles. There is currently no final goal for the game but I have had trouble implementing the puzzle and being able to swap tiles. I keep getting java null pointer exception when I test out my swap methods and can't seem to fix this. I am aware what this error is but can't see why it occurs in my code.
public class Game() {
public Node[][] buildPuzzle() {
Node[][] puzzle = new Node[3][3];
Node One = new Node("1", 0, 0, null, puzzle[0][1], null, puzzle[1][0]);
Node Two = new Node("2", 1, 0, null, puzzle[1][1], puzzle[0][0], puzzle[2][0]);
Node Three = new Node("3", 2, 0, null, puzzle[2][1], puzzle[1][0], null);
Node Four = new Node("4", 0, 1, puzzle[0][0], puzzle[0][2], null, puzzle[1][1]);
Node Five = new Node("5", 1, 1, puzzle[1][0], puzzle[1][2], puzzle[0][1], puzzle[2][1]);
Node Six = new Node("6", 2, 1, puzzle[2][0], puzzle[2][2], puzzle[1][1], null);
Node Seven = new Node("7", 0, 2, puzzle[0][1], null, null, puzzle[1][2]);
Node Eight = new Node("8", 1, 2, puzzle[1][1], null, puzzle[0][2], puzzle[2][2]);
Node blank = new Node("blank", 2, 2, puzzle[2][1], null, puzzle[1][2], null);
}
public void swapAbove (Node[][] puzzle, Node blank, Node blankAbove) {
if (blank.getLabel() == "blank" && blankAbove != null){
Node temp = blank;
Node temp2 = blankAbove;
blank = temp2;
blankAbove = temp;
puzzle[temp.getX()][temp.getY()] = blankAbove;
puzzle[temp2.getX()][temp.getY()] = blank;
} else {
System.out.println("Invalid Move");
}
}
//also have swapUp swapLeft and swapRight methods
}
Here is my Node class:
public class Node {
String label;
int x;
int y;
Node above;
Node below;
Node left;
Node right;
public Node(String label, int x, int y, Node above, Node below, Node left, Node right) {
this.label = label;
this.x = x;
this.y = y;
this.above = above;
this.below = below;
this.left = left;
this.right = right;
}
//also have accessor methods for my variables
}