如何在用户单击时交换网格板上的图块中的图像?

How to swap images in a tile on a grid board upon user click?

我正在制作一款游戏,可以翻转网格板上的图块以在图像之间翻转,当所有图块都变成相同图像时,用户获胜。我当前的问题是 mousepressed() 中的 if 语句会根据用户单击的图块来交换图块。我收到一个错误,抱怨不兼容的类型,我不确定如何解决这个错误。我将添加我用于图块的图像。

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

int clickedRow, clickedCol;
void mousePressed(){
  clickedRow = int(mouseY/sqSide);
   clickedCol = int(mouseX/sqSide);
   if(board[clickedRow][clickedCol] == 1){
     board[clickedRow][clickedCol] = 2;
     image(image2, clickedCol*sqSide, clickedRow*sqSide);
     }else if(board[clickedRow][clickedCol] == 2){
      board[clickedRow][clickedCol] = 1;
     }
     
      if (checkGameOver() == true){
       System.exit(0);
     }
}

boolean checkGameOver(){
     
  for(int row=0; row<NUM_TILES; row++){
  for(int col=0; col<NUM_TILES; col++){
   int randValue = int(random(1,2));
   if( randValue == 1){
    imageShown[row][col] = 1;
    
    
     return false; 
    }
   }
   return true;
  }
  }

看起来您正在尝试将 PImage 与整数进行比较,将 1 和 2 替换为“image1”和“image2”应该可以解决问题。