Image 在绑定循环中创建一行图像?

Image 在绑定循环中创建一行图像?,image,for-loop,processing,modulus,Image,For Loop,Processing,Modulus,所以我有一排3个茶杯,我想在一个for循环中生成。根据“计数”的值,它将显示PImage“emptyCup”或“fullCup”。代码大部分是有效的,但行的图形顺序不是我想要的 这是一个简单的循环 int count = 2; int width = 210; int length = 180; for (int i = 1; i <= 3; i++) { if (i <= 3) { length = length1; } else if ((3 <= i)

所以我有一排3个茶杯,我想在一个for循环中生成。根据“计数”的值,它将显示PImage“emptyCup”或“fullCup”。代码大部分是有效的,但行的图形顺序不是我想要的

这是一个简单的循环

int count = 2;
int width = 210;
int length = 180;

for (int i = 1; i <= 3; i++) {
  if (i <= 3) {
    length = length1;
  } else if ((3 <= i) && (i <= 6)) {
    length = length2;
  } else {
    length = length3;
  }
   if ((i <= count)) {
     image(fullCup, (width * (i % 3)), length);
     println("FULL CUP: Count = " + count + ", i = " + i);
   } else {
     println("EMPTY CUP: Count = " + count + ", i = " + i);
     image(emptyCup, (width * (i % 3)), length);
   }
}
相反,它给了我这个:

[ ] [o] [o]
同样,如果我将“count”更改为4,并将for循环继续更改为6,那么我将得到以下结果:

[o] [o] [o]
[ ] [o] [ ]

我知道我对模运算符的使用并没有得到我想要的,但我不能把我的手指放在我应该说的话上。有什么建议吗?

我希望你现在已经找到了答案,但我还是会回答的

这是由不良编程习惯导致的错误的典型案例。你可能是新手,我并不是说你不好,但你可以从中学习;)

首先,“宽度”和“长度”是处理中的关键字,不应指定,只能读出

其次,除非有特定原因,否则在0处启动for循环是一种习惯。这是因为计算机是如何工作的,因为它使代码其余部分的逻辑更容易。例如模量

这也是您的错误代码

  • 第一个杯子在x=宽度*(1%3)=宽度处绘制
  • 第二个杯子在x=宽度*(2%3)=2*宽度处绘制
  • 第三个杯子在x=宽度*(3%3)=0*宽度=0处绘制
使用的逻辑没有错误,但基于从0开始的for循环

此代码符合您的要求。它在x=0和y=0处绘制第一个图像。如有必要,可以添加偏移

void setup() {
  PImage fullCup = loadImage("fullCup.jpg");
  PImage emptyCup = loadImage("emptyCup.jpg");
  size(800, 800);

  int count = 4;
  int numberOfCups = 6;
  int img_width = 210;
  int img_length = 180;

  for (int i = 0; i < numberOfCups; i++) {
    if (i < count) {
      image(fullCup, img_width * (i % 3), img_length*(i/3));
    } else {
      image(emptyCup, img_width * (i % 3), img_length*(i/3));
    }
  }
}
void setup(){
PImage fullCup=loadImage(“fullCup.jpg”);
PImage emptyCup=loadImage(“emptyCup.jpg”);
大小(800800);
整数计数=4;
int numberOfCups=6;
int img_宽度=210;
int img_长度=180;
对于(int i=0;i
你能帮我发一封信吗?也许使用彩色矩形代替图像,这样我们可以复制并粘贴您的代码来运行它?谢谢您的回答!我在加工方面比较新,因此出现了宽度/长度错误。我知道零约束原则,但遗憾的是,我有一个理由必须将它与项目中的其他代码绑定为1——这不是我的想法。不过,也许我可以围绕这个限制进行调整(例如“Ivoid setup() { PImage fullCup = loadImage("fullCup.jpg"); PImage emptyCup = loadImage("emptyCup.jpg"); size(800, 800); int count = 4; int numberOfCups = 6; int img_width = 210; int img_length = 180; for (int i = 0; i < numberOfCups; i++) { if (i < count) { image(fullCup, img_width * (i % 3), img_length*(i/3)); } else { image(emptyCup, img_width * (i % 3), img_length*(i/3)); } } }