如何设置if语句以使循环前进然后反向?处理

时间:2016-10-11 20:51:15

标签: processing



int x = 31;
int y = 31;

int x_dir = 4;
int y_dir = 0;

void setup ()
{
 size (800, 800); 
}

void draw ()
{
 background (150);
ellipse (x,y,60, 60);


if (x+30>=width)
{
  x_dir =-4;
  y_dir = 4;
}
  if (y+30>=height)
  {
   x_dir=4;
   y_dir = 0;
  }

if (x+30>=width)
{
x_dir = -4;  
}

x+=x_dir;
y+=y_dir;
println(x,y);
}




您好,

我必须在处理过程中创建这个程序,它会生成一个以Z模式(左上角到右上角,右上角到右下角,然后从左下角到右下角)的球动画。它沿着同样的道路往后走。 虽然我已经为前进方向编写了代码,但我不知道我需要为程序编写的if或else语句,以便根据一个条件进行转发,并根据另一个条件进行向后,它将继续这样做,直到它终止。 如果我能够找出我需要写的两个if语句,我需要做的就是复制并反转前向循环上的x_dir和y_dir符号。

1 个答案:

答案 0 :(得分:0)

有很多不同的方法可以做到这一点。

一种方法是跟踪哪种&#34;模式&#34;您可以使用int变量0当您在路径的第一部分1时,if当您和&#39} #39;重新开始路径的第二部分等。然后使用int x = 31; int y = 31; int mode = 0; void setup () { size (800, 800); } void draw () { background (150); ellipse (x, y, 60, 60); if (mode == 0) { x = x + 4; if (x+30>=width) { mode = 1; } } else if (mode == 1) { x = x - 4; y = y + 4; if (y+30>=height) { mode = 2; } } else if (mode == 2) { x = x + 4; if (x+30>=width) { mode = 3; } } else if (mode == 3) { x = x - 4; y = y - 4; if (y-30 < 0) { mode = 2; } } } 语句来决定做什么,如何移动球等等。

以下是一个例子:

if

就像我说的,这只是解决问题的一种方法,你可以做出一些明显的改进。例如,您可以存储移动速度和更改模式在数组中的条件(或者更好的是,在对象中),并删除所有 public static int findSecondLargest(String nums){ String[] num = nums.split(" "); int[] numbers = new int[num.length]; int highest1 = Integer.MIN_VALUE; int highest2 = Integer.MIN_VALUE; for (int i =0; i < num.length; i++) { numbers[i] = Integer.parseInt(num[i]); } for (int numbers : numbers) { if (numbers >= highest1) { highest2 = highest1; highest1 = numbers; } else if (numbers > highest2) { highest2 = numbers; } } return highest2; } 语句。