基本的に私は単純なゲームを作成していますが、サークルを表示したいのですが、画面に表示されているときに重なり合うことはありません。オブジェクトが作成され、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が得続けるです。しかし、私はそれがアライリストと関係があると推測しています。なぜなら、日食は通常、エラーの位置が正確ではないからです。誰かがここで間違っていると思われるものを教えてもらえればそれは素晴らしいものになるでしょう。
ここで、***グラフィック***オブジェクトを初期化していますか? –
それは文字通りそれだった、私は完全にグラフィックオブジェクトを初期化するのを忘れてしまった。うわー、私は愚かなことが過去5時間このことを凝視していると感じる。本当にありがとう。 –