如何设置 if 语句使循环前进然后倒退?加工
How to set up if statements so that loop goes forward and then in reverse? 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 模式运动的动画(从左上角到右上角,对角线从右上角到左下角,然后从左下角到右下角)然后沿着它来的同一条路倒退。
虽然我已经为正向编写了代码,但我不知道我需要为程序编写什么 2 个 if 或 else 语句,以便根据一个条件它前进,并根据另一个条件它会倒退,它将继续这样做直到它终止。
如果我能够弄清楚我需要写哪两个 if 语句,我需要做的就是复制并反转正向循环中的 x_dir 和 y_dir 符号。
有很多不同的方法可以做到这一点。
一种方法是跟踪您所在的 "mode"。您可以使用 int
变量来做到这一点,当您处于第一部分时 0
路径,1
当你在路径的第二部分时,等等。然后只需使用 if
语句来决定要做什么,如何移动球等。
这是一个例子:
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
语句。
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 模式运动的动画(从左上角到右上角,对角线从右上角到左下角,然后从左下角到右下角)然后沿着它来的同一条路倒退。 虽然我已经为正向编写了代码,但我不知道我需要为程序编写什么 2 个 if 或 else 语句,以便根据一个条件它前进,并根据另一个条件它会倒退,它将继续这样做直到它终止。 如果我能够弄清楚我需要写哪两个 if 语句,我需要做的就是复制并反转正向循环中的 x_dir 和 y_dir 符号。
有很多不同的方法可以做到这一点。
一种方法是跟踪您所在的 "mode"。您可以使用 int
变量来做到这一点,当您处于第一部分时 0
路径,1
当你在路径的第二部分时,等等。然后只需使用 if
语句来决定要做什么,如何移动球等。
这是一个例子:
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
语句。