2017-02-25 60 views
1

我試圖將asteroid1 - 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]); 
    } 
} 
+0

從哪裏調用'generate()',從類內部或外部調用?爲什麼它是與構造函數分離的方法? –

回答

1

保留SandBox對象在課堂上。

SandBox sandbox; 
public AsteroidField() { 

    sandbox = new SandBox(); 
    sandbox.setSandBoxMode(FLOW); 
    ... 
+0

謝謝你,這個伎倆! – hunter3035

+0

@ hunter3035,如果能幫到你,請考慮接受答案。 –

相關問題