当我运行此代码时,我只看到一辆车 主要代码如下:
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();
}
这是汽车对象代码:
int xloc;
int yloc;
boolean windshieldControl;
class Car{
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 实例。您只能看到一辆车,因为它们共享相同的 x 和 y 坐标,因此会重叠绘制。当您创建汽车时,当前您只需重新分配全局
xloc
和 yloc
变量。
因此,当您创建第一辆车时,您为
xloc
和 yloc
分配值 0, 900
- 当您创建第二辆汽车时,您将这些相同的值重新分配给 400, 500
您的
int xloc
和 int yloc
是在类之外定义的,因此它们并不像您期望的那样真正属于该类。
如果您查看 p5 的 class 文档,您会发现您想要使用
this.<varname>' inside the
constructor` 来定义属于您的类的特定实例的属性。
class Frog {
constructor(x, y, size)
{
// This code runs once when an instance is created.
this.x = x;
this.y = y;
this.size = size;
}
}
这样,frag 的每个实例都有单独的 x 和 y 值,现在您只需在两个类实例中使用位于类外部的变量。