首页 > 解决方案 > 如何将变量保存在循环中以便以后再次使用?

问题描述

我想制作一个程序,将椭圆设置为彼此相邻,直到一个人触及我的画布的边框,然后朝另一个方向前进。不幸的是,它只在一个方向上起作用,当它碰到右边界时停止。有没有办法sx在某个时候保存变量,以便在第二个 if 语句中再次使用它?

void setup() {
    size(700, 500);
    frameRate(20); // frame rate = 20 Hz
}

int sx=50;
int sy=50;
int dx=15;

void draw() {

    if(sx<width){
        ellipse(sx,sy,20,20); 
        sx=sx+dx;

        if(sx>width){
            sx=sx-dx;
        }
    }
}

标签: javaprocessing

解决方案


sx在全局范围内,因此无需“存储”它,因为该值是持久的。
你想要做的很简单。关键是dx而不是sx。如果椭圆到达窗口的边界,则必须改变方向。这可以通过反相来实现dx

当位于右边界 ( ) 或左边界( ) 时,反转dx( )。例如:dx *= -1sxsx >= widthsx <= 0

void setup() {
    size(700, 500);
    frameRate(20); // frame rate = 20 Hz
}

int sx=50;
int sy=50;
int dx=15;

void draw() {

    background(196);
    ellipse(sx,sy,20,20); 
    sx=sx+dx;

    if (sx >= width || sx <= 0 ){
        dx *= -1;
    }
}

推荐阅读