微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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

enter image description here

enter image description here

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。