私は - asteroid10
をAsteroidField()
コンストラクタ内のサンドボックスに送信しようとしています。 generate()
にsandbox.addBlob(asteroid1);
を書き込むことはできません。なぜなら、私は今コンストラクタの外にいるからです。これを回避するにはどうしたらいいですか?コンストラクタ変数を同じクラスの外部メソッドで設定する
public class AsteroidField implements BlobGUI {
private static Random random = new Random();
public AsteroidField() {
SandBox sandbox = new SandBox();
sandbox.setSandBoxMode(FLOW);
sandbox.setFrameRate(15);
sandbox.init(this);
}
public void generate() {
int z;
int i;
int[] x = new int[10];
int[] y = new int[10];
double[] r = new double[10];
for(i = 0; i < 10; i++) {
x[i] = 0;
while(x[i] == 0)
x[i] = random.nextInt(7) - 3;
y[i] = 0;
while(y[i] == 0)
y[i] = random.nextInt(7) - 3;
r[i] = 0;
while(r[i] == 0) {
z = random.nextInt();
if(z % 2 == 0)
r[i] = -0.1;
else
r[i] = 0.1;
}
}
i = 0;
Asteroid asteroid1 = new Asteroid(x[i], y[i], r[i]);
i++;
Asteroid asteroid2 = new Asteroid(x[i], y[i], r[i]);
i++;
Asteroid asteroid3 = new Asteroid(x[i], y[i], r[i]);
i++;
Asteroid asteroid4 = new Asteroid(x[i], y[i], r[i]);
i++;
Asteroid asteroid5 = new Asteroid(x[i], y[i], r[i]);
i++;
Asteroid asteroid6 = new Asteroid(x[i], y[i], r[i]);
i++;
Asteroid asteroid7 = new Asteroid(x[i], y[i], r[i]);
i++;
Asteroid asteroid8 = new Asteroid(x[i], y[i], r[i]);
i++;
Asteroid asteroid9 = new Asteroid(x[i], y[i], r[i]);
i++;
Asteroid asteroid10 = new Asteroid(x[i], y[i], r[i]);
}
}
クラスの内部または外部から 'generate()'が呼び出されていますか?なぜコンストラクタとは別のメソッドですか? –