Speichern einer raster-Objekte mit x-und y-Koordinaten zur Beschreibung der Lage. Ein array ist eine akzeptable Lösung?

Ich entwickle ein Spiel auf Android-mit einem Netz von Objekten. Im Moment arbeite ich mit einem array zu speichern, das Objekte, wie diese:

public class ObjectBuffer {

  private final Object[] buffer;

  private final int playfieldWidth;

  ObjectBuffer(int playfieldWidth, int playfieldHeight) {
    super();
    this.buffer = new Object[playfieldWidth + (playfieldHeight * playfieldWidth)];
    this.playfieldWidth = playfieldWidth;
  }

  public static int getX(int id) {
    return id % playfieldWidth();
  }

  public static int getY(int id) {
    return id / playfieldWidth();
  }

  public Object get(int id) {
    return this.buffer[id];
  }

  public Object get(int x, int y) {
    return this.buffer[x + (y * this.playfieldWidth)];
  }
}

Aber meine Frage ist, ist dies der beste Weg, dies zu erreichen? Ich habe ein array (im Gegensatz zu einer Liste, ArrayList, oder einige andere Behälter) weil, sobald die Breite und Höhe des Spielfeldes gesetzt sind, Sie nicht ändern. Die Objekte gibt es für den Staat, und wenn Sie instanziiert und in das array eingefügt, Sie kann aktualisiert werden, aber sind nicht geordnet.

Meine Frage ist ähnlich Das speichern von Objekten für das Auffinden von x -, y-Koordinaten, aber unterschiedlich genug, dass ich Fragen wollte, meine Frage separat. Meine Anforderungen anders sind als seine und ich glaube nicht, dass ein räumlicher index wäre es angebracht in dieser situation. Bitte korrigieren Sie mich, wenn ich falsch Liege.

Sollte ich auch erwähnen, das die array-Dimensionen werden in der Regel 10x10 (100 Elemente), aber eventuell müssen in der Lage sein, um Platz für eine bescheidene Zunahme, aber nicht mehr als etwa einem 15x15 raster (225-Elemente). Diese Dimensionen werden immer bekannt sein, die bei der Generierung des Gitters. Nachdem das Gitter wurde erzeugt, der die Dimensionen nicht ändern.

  • Für Ihr Spiel, ich vermute, dass jeder Punkt im Netz zu halten, kann ein Objekt wie eine Kugel, Schlachtschiff, elf, oder was auch immer. Können zwei von Ihnen am gleichen Punkt? Wenn dem so ist, müssen Sie möglicherweise verwenden Sie irgendeine Art von Sammlung bei der jeder der Punkte auf dem Gitter.
  • Jede Position im Gitter halten eine Blase, und jede Blase kann eine unterschiedliche Farbe oder andere Attribute. Die Blasen nicht überlappen, beim Tippen, die Blase oder andere Blasen um ihn herum, wird 'pop' und verschwinden, dann werden die Blasen oben fallen zu nehmen, ist es Platz.
InformationsquelleAutor DavidDraughn | 2012-01-06
Schreibe einen Kommentar