2017-04-25 17 views
-3

基本的に私は単純なゲームを作成していますが、サークルを表示したいのですが、画面に表示されているときに重なり合うことはありません。オブジェクトが作成され、arraylistに配置され、別のものが作成されると、arraylist内の他のすべてとの座標をチェックして、同じでないことを確認する必要があります。チェックするメソッドはisCollidingWithと呼ばれ、実際に位置を設定するsetPositionメソッドがあります。これは私が持っているものです。nullpointerExceptionを見つける

これは、オブジェクトが作成される方法であり、作成することさえできません。一度動作させると、これらのオブジェクトの多くを作成することになります。

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

これは、乱数と円のarraylistを取るオブジェクトのコンストラクタです。それはwhileループから始まり、この円の位置を設定してforループに入り、それが他のものと衝突しているかどうかをチェックし、そうであればブレークしてwhileループの先頭に戻り、異なる位置を設定し、arraylistに既にある他の位置と衝突しているかどうかを確認します。

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; 

     } 

     } 


    } 

問題は、私はそれがthis.graphic.setPositionを言うコンストラクタ内の行にNullPointerExceptionが得続けるです。しかし、私はそれがアライリストと関係があると推測しています。なぜなら、日食は通常、エラーの位置が正確ではないからです。誰かがここで間違っていると思われるものを教えてもらえればそれは素晴らしいものになるでしょう。

+0

ここで、***グラフィック***オブジェクトを初期化していますか? –

+1

それは文字通りそれだった、私は完全にグラフィックオブジェクトを初期化するのを忘れてしまった。うわー、私は愚かなことが過去5時間このことを凝視していると感じる。本当にありがとう。 –

答えて

0

1)「エラーポジショニングで正確なものではない」と思われる場合は、プロジェクトをきれいにする必要があります。それを元に戻す(F5)。そのリフレッシュされていないので、ソースの問題は同期されていません。 2)より良いyoyrエラーを理解するには、問題の行をいくつかの手順で分解する必要があります。最初の行は値を計算して2番目の行に設定します。 3)this.graphicは初期化されないので、nullpointerexceptionのように見えますか?