Entonces, en mi clase estamos haciendo que los objetos se muevan de acuerdo con las variables de coordenadas x e y, cosas bastante simples. Sin embargo, parece que solo puedo hacer que el mío funcione si declaro las variables x e y en una clase estática separada, mientras que el código de ejemplo de los maestros no parece hacer esto. He estado mirando el código de ejemplo de los maestros, y tiene sentido por qué funciona como lo hace, pero cuando trato de aplicar métodos similares a mi código, parece que no funciona y no puedo averiguar qué es lo que estoy haciendo. estoy haciendo mal
Código del profesor:
// 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; } } }Ejemplo de mí tratando de hacer que un círculo se mueva sin una clase estática:
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; } }Aquí estaba el código que tenía en mi controlador:
Test draw; Test move; void setup(){ size(400,400); draw = new Test(); move = new Test(); } void draw(){ draw.drawThing(); move.moveThing(); } pero cambiando move por move.moveThing con draw.moveThing lo arregló.