1

タイルを含む配列リストがあります。新しいタイルを下に配置すると、新しいタイルが古いタイルの上に配置されますが、古いタイルがまだ残っているため、問題が発生する可能性があります。たとえば、プレイヤーが通り抜けることができない石のタイルがあります。そこに空気タイルが置かれ、おそらくプレイヤーが通り抜けることができます。ただし、石のタイルは決して削除されないため、石のタイルは固体で衝突を引き起こすため、プレイヤーは通り抜けることができません。arraylist からタイルを削除することはできますか? リスト内の残りのデータが「移動」し、古いタイルがあった穴を埋めるため、できるとは思いません。残りのデータをシフトさせずに、タイルを削除してその上に新しいタイルを配置するにはどうすればよいですか?

4

4 に答える 4

2

set(int index, E element)ArrayList のメソッドを使用する必要があります。

ACC。Javadoc へ:

このリスト内の指定された位置にある要素を指定された要素に置き換えます

于 2013-01-02T13:18:58.060 に答える
1

からアイテムを削除しArrayListたいが、リストの残りの部分は保持したい場合は、単純に に置き換えてnullください。

myList.set(i, null);

もちろん、これは使用時に値をテストする必要があることを意味します。

于 2013-01-02T13:15:40.677 に答える
0

Tile列挙型を持つオブジェクトを使用して、その状態を保存します。

public class Tile {

  public enum State = { WALL, OPEN };

  private State state;

  public void setState(State state) {
    this.state = state;
  }
}

オープン スペースと壁を切り替える必要がある場合は、その状態を変更するだけです。

tile.setState(State.WALL);
于 2013-01-02T13:19:37.967 に答える
0

ArrayList の set() メソッドを使用して、リスト内の 1 つのオブジェクトを別のオブジェクトに「置き換える」ことができます。

      tileList.set(index, newTileObject);

インデックスのタイルを新しいタイル オブジェクトに置き換えます。他のすべてのタイルをリスト内の元の場所に残します。

于 2013-01-02T13:18:12.747 に答える