You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Processing代码仅显示一辆Car实例,求问题原因

问题原因

你定义的xloc、yloc、windshieldControl是全局变量,不属于Car类的成员变量。当创建第二个Car实例honda时,会覆盖这三个全局变量的值,导致第一个实例leafy的位置被替换成honda的位置,所以运行时看起来只有一辆车。

修复方案

把这三个变量移到Car类内部,作为每个实例独有的成员变量,这样每个Car对象会维护自己的位置和状态:

修正后的主代码

Car leafy;
Car honda;

void setup(){
    size(1920, 1080);
    leafy=new Car(0,900);
    honda=new Car(400, 500);
}

void draw(){
    background(#736FEA);
    leafy.display();
    honda.display();
    leafy.movement();
    honda.movement();
}

修正后的Car类代码

class Car {
    // 将变量移到类内部,作为实例成员
    int xloc;
    int yloc;
    boolean windshieldControl;

    Car(int x, int y){
        windshieldControl=true;
        xloc=x;
        yloc=y;
    }

    void display() {
        fill(#FFA600);
        rect(xloc, yloc, 150, 100);
        fill(#0B0B0D);
        circle(xloc+35, yloc+100, 30);
        circle(xloc+125, yloc+100, 30);
        fill(#7AF7F0);
        windshield();
    }

    void movement() {
        if (keyPressed) {
            if (key=='d' || key=='D') {
                windshieldControl=true;
                xloc=xloc+5;
            }
            if (key=='a' || key=='A') {
                xloc=xloc-5;
                windshieldControl=false;
            }
        }
    }

    void windshield() {
        if (windshieldControl) {
            arc(xloc+150, yloc+30, 100, 50, PI/2, 3*PI/2);
        } else {
            arc(xloc, yloc+30, 100, 50, 3*PI/2, 5*PI/2);
        }
    }
}

修改后,两个Car实例会各自维护自己的位置和状态,运行时就能看到两辆分别在(0,900)和(400,500)的车了。

内容的提问来源于stack exchange,提问作者jlrw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 02:55:25