我试图用两个图像为游戏绘制一个棋盘,但当我调用创建它的函数时,我收到了一个空指针异常。
final int NUM_TILES = 4;
PImage image1, image2;
PImage [][] imageShown;
PImage [][] board;
int sqSide;
float randValue = random(1,2);
void setup(){
size(500, 500);
sqSide = width/NUM_TILES;
imageShown = new PImage[NUM_TILES][NUM_TILES];
board = new PImage[NUM_TILES][NUM_TILES];
image1 = loadImage("helloseal.jpg");
image2 = loadImage("very-rotund.jpg");
displayPuzzle();
}
void draw(){
}
void displayPuzzle(){
for(int i=0; i<NUM_TILES; i++){
for(int j=0; j<NUM_TILES; j++){
image(board[i][j], j*sqSide, i*sqSide);
}
}
}
您必须初始化元素board
。在开头,所有元素都为空。为嵌套循环中的每个元素指定一个图像。例如:
void setup(){
size(500, 500);
sqSide = width/NUM_TILES;
imageShown = new PImage[NUM_TILES][NUM_TILES];
board = new PImage[NUM_TILES][NUM_TILES];
image1 = loadImage("helloseal.jpg");
image2 = loadImage("very-rotund.jpg");
for(int i=0; i<NUM_TILES; i++){
for(int j=0; j<NUM_TILES; j++){
board[i][j] = image;
}
}
}
displayPuzzle
必须在draw
中调用,而不是在setup
:中调用
void draw(){
displayPuzzle();
}