1

バックグラウンド

画面の上部から下部に「落ちる」スプライト (openGL クワッド) があります。

画面の下部に到達すると、値がリセットされ、(上から下に) 再び開始されますが、X 軸に沿って新しい X 位置に移動します。

私がやっていることは、X 位置を ArrayList に格納することです (同じ場所に何度も落ちるのは 1 つだけ、または落ちるたびにわずかに移動するのは 10 の場合もあります)。

問題

私が解決できないのは、この配列リストを調べて、「次の」位置がない可能性があることを念頭に置いて、スプライトの新しい X 位置を「次の」配列リストの位置に保持されている値に設定する方法です。

そう....... (これは疑似コードです)....スプライトが落下し、その Y 位置が画面の上部にリセットされると:

spriteX = value_held_in_next_arrayList_position(if_there_is_one)

私のゲームのレベルが異なれば位置の数も異なるため、arrayList のサイズが 1 しかない場合は、「位置 2 に移動」と明示的に言うことはできません。基本的には、「次の位置に移動」と「次の位置がない場合は、位置 0 に戻ります。

4

6 に答える 6

1

リストからwithをList使用して反復できます。whileIterator

List<YourElement> yourList;
...
Iterator<YourElement> iterator = yourList.iterator();
while(iterator.hasNext()) {
    final YourElement yourElement = iterator.next();        
    // Do whatever with yourElement
    if (iterator.hasNext()) {
        // Do whatever if there's a next element to yourElement
    }
}
于 2013-08-01T13:40:02.220 に答える
0

あなたがしたいのは、イテレータを取得してから while ループを実行することです。イテレータが次のものを持っている場合はそれを取得して続行し、そうでない場合は出てきます。

コード例:

Iterator positions = spriteXPositions.iterator();
while(positions.hasNext()) {
    mySprite.position.X = positions.next();
}
于 2013-08-01T13:38:48.667 に答える
0

% 演算子を使用して、リスト リストの先頭に戻ることができます。

int nextSpriteX() {
   currentXPositionIndex = (currentXPositionIndex + 1) % xPositions.size();
   return xPositions.get(currentXPositionIndex);
}
于 2013-08-01T17:02:26.443 に答える