按下鼠标时随机化图像 - 处理

问题描述

  • 我正在尝试制作一个网格,其中每个单元格都包含我的数据文件夹中的一张随机图像。

  • 到目前为止,我已经在每个单元格中实现了不同的图像,但它不会随机

  • 它不是从文件夹中的 600+随机选择一个,而是将每个图像按 1 to 27 的顺序放置。

  • 除此之外,我希望它在每次我用鼠标单击时随机化,而不是在它关闭并再次播放时随机化。代码

    PImage img[];
    int nPics;
     
    int w;
    int h;
    
    
    int rand;
    
     
    void setup(){
      
      size(1500,500);
      nPics=27;
      img = new PImage[nPics];
    
      w=width/9;  
      h=height/3; 
    
    for (int i = 0; i <nPics; i++) {
        img[i] = loadImage("img_" +nf(i,3)+ ".jpg");
        imageMode(CORNERS);
      }

      //rand = int(random(0,687));
      //img[0]=loadImage("img_" + nf(rand,3)+ ".jpg");

    }
     
    void draw(){
    background(0);
      for(int i=0;i<nPics;i=i+3){  
         int col = i/3;
         for(int row=0;row<3;row++)
           image(img[i+row],col*w,row*h,(col+1)*w,(row+1)*h);
      }
      
    }

解决方法

加载图片时,您使用的是 i 而不是 rand。为了在单击鼠标时随机化图像,您可以使用 mousePressed() 将不同的图像重新加载到数组中。

这应该有效:

PImage img[];
int nPics;

int w,h;

void loadImages(){
  for (int i = 0; i < nPics; i++) {
    img[i] = loadImage("img_"+ nf(int(random(0,687)),3) + ".jpg");
    imageMode(CORNERS);
  }
}

void setup() {
  size(1500,500);
  nPics=27;
  img = new PImage[nPics];

  w=width/9;  
  h=height/3; 

  loadImages();
}

void mousePressed(){
  loadImages();
}

void draw() {
  background(0);
  for (int i=0; i<nPics; i=i+3) {  
    int col = i/3;
    for (int row=0; row<3; row++)
      image(img[i+row],col*w,row*h,(col+1)*w,(row+1)*h);
  }
}