Um eine Karte wie diese zu erstellen, ohne eine Matrix zu verwenden, empfehle ich, mit einem mittleren Kachel zu beginnen und dann die Karte mit einem modifizierten ersten Suchalgorithmus nach außen zu füllen. Zuallererst brauchen wir etwas, das ein bisschen besser ist als eine Liste der angrenzenden Kacheln. Sie könnten einfach vier Variablen, eine für jede Richtung, die die nächste Kachel, als solche speichert:
private Tabellone up = null;
private Tabellone down = null;
private Tabellone left = null;
private Tabellone right = null;
sagen wir mit der Mitte-die meisten Fliesen beginnen. Alles, was Sie jetzt tun müssen, ist herauszufinden, wie viele der Richtungen Null sind, und ein neues Tabellone-Objekt für jede Richtung zu erstellen. Stellen Sie sicher, dass jede Variable in diesem aktuellen Objekt gesetzt ist und die entsprechende entgegengesetzte Variable im erstellten Objekt gesetzt wird .
Tabellone adj = new Tabellone();
up = adj;
adj.setDown(this);
Sobald Sie alle Anweisungen auf dieser Fliese ausgefüllt haben, wählen Sie dann eine der anderen Fliesen, die Sie erstellt haben und die gleiche Operation durchführen. Hier kommt der Breiten-Suchalgorithmus ins Spiel. Sie können eine Warteschlange verwenden, um jede von Ihnen erstellte Kachel durchzugehen und die Anweisungen auszufüllen. Um den Algorithmus zu stoppen, legen Sie einfach die Anzahl der zu erstellenden Kacheln fest und verwenden Sie einen Zähler, um zu verfolgen, wie viele Kacheln erstellt wurden.
int count = 0;
ArrayList<Tabellone> queue = new ArrayList<Tabellone>()
queue.add(/*center tile*/);
while (count < 100) { //if we want 100 tiles
//take out the center tile from the beginning of the array list, create a tile for each direction and add those tiles to the array list, then increment count by 1.
}
Hinweis: Dieser Algorithmus, da es eine rautenförmige Karte wird schaffen steht, wenn Sie einen Platz wollen, dann würden Sie auch eine Variable für jede Diagonalrichtung haben müssen.
Natürlich, wenn das etwas komplizierter erscheint, als Sie möchten, würde ich ein Koordinatensystem empfehlen.
Können Sie uns mehr Details geben, was dieses Spiel ist und welche Art von Karte Sie sprechen? Eine Weltkarte mit interessanten Orten? – akarnokd
Die Karte wird jedes Spiel generiert. Es ist nur eine Ebene und jede Zelle kann eine von 3 verschiedenen Arten sein (Stadt, Hügel, Ebene). Jede Zelle kann auch einen Gegenstand (Klasse Gegenstand) enthalten, der auch von 4 verschiedenen Arten sein kann. Der Charakter bewegt sich pro Zug um 1 Karte. – Gurzo