Aufbauspiel: Maps, Objekte, Array?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

M2M

Betreff: Aufbauspiel: Maps, Objekte, Array?

BeitragDi, Aug 09, 2011 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich arbeite wieder ein wenig an einem Spiel.. Hatte selbiges vor einiger Zeit kurzzeitig aufgegeben, weil ich vor einem Problem stand..

Es ist ein Aufbauspiel. Ich weiß nur nicht, wie ich am besten die Gebäude usw. die man bauen kann, speichern soll..
Zunächst hatte ich es mit einem 2D-Array versucht, klassisch eben. Rastermaß 50x50.
Allerdings sind die Gebäude unterschiedlich groß, zB kann eine Straße beliebig lang sein, ein anderes Haus ist zB 300 Pixel breit, ein anderes wiederum nur 50, dafür aber 100 Pixel hoch usw..

Das alleine ist ja nicht das Problem, könnte man ja zB einfach alle Bilder auf das Rastermaß umrechnen, also 300, 250 usw. nehmen und eben die Felder die benötigt werden mit einem Dummywert beschreiben.

Also zB

G E B Ä U D E
1 3 3 3 3 3 3

1 steht für das Gebäudetile an sich, die anderen (3) Dummywerte zeigen an, das diese Felder nicht leer sind, aber auch nichts an deren Stelle gezeichnet wird.


Ein anderer Ansatz wäre es, die Gebäude als Objekte zu speichern, dann bräuchte ich das Rastermaß nicht. Auch eine Interaktion wäre viel einfacher..
Aber dann ist das leidige Thema mit dem Zeichnen wieder.. Wenn die Gebäude alle unterschiedlich groß sind, wie soll ich da prüfen ob ein anderes Gebäude davor oder dahinter ist? Ich müsste dann ständig sortieren, das alles in der richtigen Reihenfolge gezeichnet wird..


Habt ihr einen bewährten Ansatz? Habe es auch schon mit einer Mischung aus Beiden versucht.. Also ich speicherte sowohl die Felder auf der Map, also zB

9 9 9
9 9 9
9 9 9

, zeitgleich erstelle ich aber auch ein Objekt. In ein zweites Array vom Typ TObject erstelle ich beim Bauen des Gebäudes einen Verweis auf das eben erstellte Objekt mit den gerade verwendeten Kartenkoordinaten.

Also,
global arr:TObject[x,y]
arr[curX,curY] = object

So kann ich das Objekt leichter aufrufen..

Aber funktionieren tut es nicht...


Ich bräuchte dringend einige Denkanstöße, bevor das Projekt wieder einfriert...

DANKE!

Xeres

Moderator

BeitragDi, Aug 09, 2011 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, deine Letzt genannte Option hört sich für mich am praktischsten an.
Ein 3x3 großes Gebäude:
- Karte:Int[x,y] markiert den block als "belegt"
- Gebäude:TBuilding[x,y] hat in allen 9 Felder die Referenz zum Gebäude
- ggf. Eine zusätzliche Liste aller Gebäude für Update-Geschichten.
Kein zu simples Prinzip, aber wenn's läuft kann für jede Aktion (bauen, zeichnen, auswählen) die passende Quelle gewählt werden.

Ich würde dabei natürlich davon ausgehen, das es um viele Gebäude geht (wie in Strategie- oder SimCity like Spielen).
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group