2017-04-25 63 views
-3

基本上我創建一個簡單的遊戲,我想界出現,但是當他們被印在屏幕上,他們不能相互重疊。創建對象並將其放入一個數組列表中,並且當創建另一個數組時,它需要檢查其與列表列表中已有數據的座標,以確保其不同。要檢查的方法稱爲isCollidingWith,並且有一個實際設置位置的setPosition方法。這是我的。查找NullPointerException異常

這是如何創建對象,我甚至不能得到一個被創建,一旦我得到它的工作我會創造更多的這些對象,因此這整點。

Circle circle = new Circle(rng,circles); 
    circles.add(circle); 

這是對象的構造函數需要一個隨機數和圓陣列表​​。它以一個while循環,併爲這個圈子的位置,然後它進入一個循環並檢查它是否與其他的和碰撞,如果是,它打破並回到while循環的頂部和設置不同的位置,然後重複檢查它是否與陣列列表中已有的其他位置發生碰撞。

public Planet(Random rng, ArrayList<Circle> circles){ 

     boolean key = true; 
     while(key){ 

     this.graphic.setPosition(rng.nextFloat()*GameEngine.getWidth(),rng.nextFloat()*GameEngine.getHeight()); 

     for(int i = 0; i<circles.size();i++){ 
      if(this.graphic.isCollidingWith(circles.get(i).graphic)){ 
       key = true; 
       break; 
      } 
      else key = false; 

     } 

     } 


    } 

問題是我不斷收到一個NullPointerException在構造函數中它說this.graphic.setPosition的行。但我猜它與陣列列表有關,因爲eclipse通常對於錯誤定位並不準確。如果有人能告訴我這裏看起來有什麼問題,那很好。

+0

你在哪裏初始化*** ***圖形對象??? –

+1

哇,從字面上看,我完全忘了初始化圖形對象。哇,我覺得在過去的5個小時裏一直盯着這個。非常感謝。 –

回答

0

1)如果你覺得「月蝕心不是準確的,錯誤positionning」你應該做一個乾淨的項目,重建它ABD刷新(F5)。它只是一個來源不明的問題,因爲沒有刷新。 2)爲了理解更好的yoyr誤差,你應該分幾步來分解這條線:第一行計算第二行的值來設置它。 3)看起來像這樣.graphic從不初始化,因此nullpointerexception?