[gelöst] Tilemap mit TCanvas? Oder doch was anderes?

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
Hartkern
Beiträge: 69
Registriert: Sa 5. Dez 2015, 20:03
OS, Lazarus, FPC: Win10 IDE 1.6
CPU-Target: 64Bit
Wohnort: Leipzig

[gelöst] Tilemap mit TCanvas? Oder doch was anderes?

Beitrag von Hartkern »

Hallo,
ich zerbreche mir seit Wochen eigentlich den Kopf über eineTile Based Map in Lazarus.
Meine Idee ist es die Tiles in 32x32 TImages auf ein Panel zu basteln..Die Tiles sind in ner Klasse definiert und haben ein Onclick Event..Aus der Map, welches ein 2d Array aus meinen Tiles ist, wird lediglich der sichtbare Bereich angezeigt.

Gibt es irgendwelche Verbesserungsvorschläge für TImage als "Container" da ich ja nen Onclick Event gern für jedes Tile hätte, da ich ansonsten das geklickte Tile "ausrechnen" müsste.
Zuletzt geändert von Hartkern am Fr 10. Jun 2016, 17:46, insgesamt 1-mal geändert.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Tilemap mit TCanvas? Oder doch was anderes?

Beitrag von m.fuchs »

Bin mir nicht sicher ob ich dich richtig verstehe, aber wenn du TImages in einer Gitterstruktur anordnest und für jedes leicht auf das OnClick reagieren willst, dann könntest du dir auch mal TDrawGrid ansehen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Hartkern
Beiträge: 69
Registriert: Sa 5. Dez 2015, 20:03
OS, Lazarus, FPC: Win10 IDE 1.6
CPU-Target: 64Bit
Wohnort: Leipzig

Re: Tilemap mit TCanvas? Oder doch was anderes?

Beitrag von Hartkern »

Das würde eigentlich nur funktionieren wenn die Karte nur so groß ist, wie das Grid oder?

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Tilemap mit TCanvas? Oder doch was anderes?

Beitrag von Mathias »

Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Tilemap mit TCanvas? Oder doch was anderes?

Beitrag von m.fuchs »

Hartkern hat geschrieben:Das würde eigentlich nur funktionieren wenn die Karte nur so groß ist, wie das Grid oder?

Ja, aber das ist doch eigentlich kein Problem.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Tilemap mit TCanvas? Oder doch was anderes?

Beitrag von Michl »

m.fuchs hat geschrieben:
Hartkern hat geschrieben:Das würde eigentlich nur funktionieren wenn die Karte nur so groß ist, wie das Grid oder?

Ja,
Nicht unbedingt. Man kann das Grid scrollen oder ein Offset relativ zum Grid (oder der sonstigen Komponente). Evtl. müsste man manuell Scrollbars hinzufügen.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Tilemap mit TCanvas? Oder doch was anderes?

Beitrag von m.fuchs »

Michl hat geschrieben:
m.fuchs hat geschrieben:
Hartkern hat geschrieben:Das würde eigentlich nur funktionieren wenn die Karte nur so groß ist, wie das Grid oder?

Ja,
Nicht unbedingt. Man kann das Grid scrollen oder ein Offset relativ zum Grid (oder der sonstigen Komponente). Evtl. müsste man manuell Scrollbars hinzufügen.

Achso, mit Größe des Grids ist die Größe des Controls im Form gemeint. Ich meine die Größe aller Zellen, ob jetzt sichtbar oder verdeckt und nur durch Scrollen zu erreichen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Hartkern
Beiträge: 69
Registriert: Sa 5. Dez 2015, 20:03
OS, Lazarus, FPC: Win10 IDE 1.6
CPU-Target: 64Bit
Wohnort: Leipzig

Re: Tilemap mit TCanvas? Oder doch was anderes?

Beitrag von Hartkern »

Im sichtbaren Bereich des Bildschirms meinte ich..ich werd mich dann doch an TImages wagen und diese als Tiles nebeneinander/untereinander legen.

Was mir des Weiteren nen Kopf zerbricht:

wenn ich die Karte, welches lediglich nen 2d Integer Array ist, lade und anhand dieser dann ein 2d Array of Tile erzeuge, sind die Images dann schon quasi fertig geladen und sichtbar, obwohl sie im nicht sichtbaren Bereich der Zeichenfläche rumschwirren? Oder muss ich diese erzeugen wenn sie in meinen sichtbaren Bereich liegen und sobald wenn ich scrolle diese wieder löschen /free?
Sprich prüfen, welcher Ausschnitt aus dem Integer Array sich im sichtbaren Bereich befindet und dann erst erzeugen und löschen?

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Tilemap mit TCanvas? Oder doch was anderes?

Beitrag von m.fuchs »

Hartkern hat geschrieben:Im sichtbaren Bereich des Bildschirms meinte ich..

Ok, das ist kein Problem mit dem Grid. Es zeichnet nur die Zellen die sichtbar sind, aber es kümmert sich selbst darum welche Zellen das sind. Zum Beispiel wenn der Benutzer scrollt.

Hartkern hat geschrieben:ich werd mich dann doch an TImages wagen und diese als Tiles nebeneinander/untereinander legen.

Wie gesagt, ich denke dass das Grid die bessere Lösung ist.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Antworten