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符号。
答案 0 :(得分:0)
有很多不同的方法可以做到这一点。
一种方法是跟踪哪种"模式"您可以使用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;
}
语句。