2017-07-16 5 views
0

私はJavaでPongゲームをコーディングすることを学んでいます。私のゲームの可視オブジェクトは、次のような容器内に保持されている:LinkedList <Entity>コンテナに保持されている場合、ゲームオブジェクトのインスタンスメソッドを呼び出す方法は?

LinkedList<Entity> gameObject = new LinkedList<Entity>(); 

私はコンテナを反復処理し、()の各インスタンスの更新を呼び出し、()関数をレンダリングします。

public class ObjectHandler { 

public void render(GraphicsContext g) { 
    for (int i = 0; i < this.gameObject.size(); i++) { 
     Entity tempObject = this.gameObject.get(i); 
     tempObject.render(g); 
    } 

    ... 

} 

しかし、私はball.flipXY()を呼び出す必要があり、衝突の場合には、どのように私は直接の容器内に、この特定のインスタンスにアクセスできますか?

答えて

0

私はあなたに何を求めているのかよく分かりませんが、変数tempObjectは実際には現在反復されているコンテナのインスタンスです。 forブロックが終了するたびに変数が変更されます。

しかし、この特定のケースではインデックスは必要ないと思われるので、代わりにforEachイテレータを使用します。

for (Entity entity : gameObject) { 
    // now entity is current instance being iterated, equals to gameObject.get(i) 
    entity.render(g); 
    if (something) entity.flipXY(); 
} // if algoritm reaches this point, entity is changed to next element of the container 
0

ボールオブジェクトの場合、コンテナ内の位置を戦略で固定することができます。たとえば、コンテナ内に常にボールを置く必要がある場合は、ボールオブジェクトにインデックスゼロが確保されていることを確認します。したがって、必要なときにいつでも検索することができます。ボールが常に利用可能なわけではない場合は、コンテナ内の最後のオブジェクトとしてボールオブジェクトを追加します。

関連する問題