操作非静态变量



所以在我的类中,我们让对象根据x和y坐标变量移动,非常简单的东西。但是,如果我在单独的静态类中声明 x 和 y 变量,而教师示例代码似乎没有这样做,我似乎只能让我的工作。我一直在看老师的示例代码,为什么它的工作原理是有道理的,但是当我尝试将类似的方法应用于我的代码时,它似乎不起作用,我无法找出我做错了什么。

教师守则:

// A Bug that moves from left to right and vibrates up and down randomly in the output window 
class Bug {
// The x- and y-coordinates as well as the speed a Bug is moving
int x;
int y;
int speed;
// The color of the Bug
int red;
int green;
int blue;
// Initialize the x- and y-coordinates, the speed and the RGB colors
Bug() {
x = -80;
y = (int) random(10, height - 10);
speed = (int) random(1, 5);
red = (int) random(255);
green = (int) random(255);
blue = (int) random(255);
}
// Set the fill color and ellipseMode
// Create a for loop that draw “bugs” as six consecutive attached circles 
void displayBug() {
fill(red, green, blue, 175);
ellipseMode(CENTER);
for (int ctr = 0; ctr < 90; ctr += 15) {
circle(x + ctr, y, 20);
}
}
// Add the speed instance variable to the x-coordinate
// Add a random value between -2 and 2 to the y-coordinate
void moveBug() {
x += speed;
y += (int) random(-2, 2);
}
// Constrain the y-coordinate between 10 and the height of the output window minus 10
void boundaries() {
y = constrain(y, 10, height - 10);
}
// If the x-coordinate is greater than width of the output window, reset the x-coordinate to 
-80
void resetBug() {
if (x > width) {
x = -80;
}
}
}

我试图在没有静态类的情况下使圆移动的示例:

class Test{
int x;
int y;
int speed;
Test(){
x = 1;
y =(int) random(0,400);
speed = 1;
}
void drawThing(){
circle(x,y,10);
}
void moveThing(){
x += speed;
}
}

这是我在驱动程序中的代码:

Test draw;
Test move;
void setup(){
size(400,400);
draw = new Test();
move = new Test();
}
void draw(){
draw.drawThing();
move.moveThing();
}

但是用draw.moveThingmove换成move.moveThing修复了它。

最新更新