Rasterbild (Karte) aus Datensatz (Listenmatrix) erstellen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
nunatak
User
Beiträge: 17
Registriert: Donnerstag 3. März 2011, 19:42

Hallo,

ich schreibe derzeit an einem kleinen Terminal basierten (mit Curses) Adventure. Etwas Rogue-like, aber nicht ganz so. Z.b. die Karte wird nicht vor Spielbeginn komplett generiert, sondern während der Spieler herumläuft, wird diese durch verschiedene Zufallsalgorithmen erzeugt. In Python habe ich sie mit verschiedenen Kodierungen für Terrain, Nutzung, Rohstoffe etc. in einer Matrix von Listen abgelegt. Abgespeichert wird sie als CSV-Tabelle. Derzeit als 1000x1000 Spielfeld, soll aber noch variabel werden, vielleicht auf mehrere Datensätze verteilt um Speicherbedarf zu reduzieren und nicht immer die komplette Map im RAM zu haben.
In der Curses-"GUI" bzw. TUI wird immer nur ein kleiner Ausschnitt um den Spieler herum visualisiert. Um eine besseren Übersicht zu ermöglichen würde ich nun gerne aus der Datenmatrix oder der gespeicherten CSV, auf Abruf eine einfache Rasterkarte (z.B. PNG) erstellen. Also 1000x1000 quadratische Pixel, die je nach Beschaffenheit anders gekachelt werden. Evtl. soll auch noch ein Grid alle 10 oder 50 Pixel eingefügt werden. Jemand eine Idee wie sowas zu realisieren wäre? Evtl. gibt es Module die sowas ermöglichen. Vielleicht mit matplotlib was zu machen?
Achso: Die Karte soll dann natürlich extern, in eigenem Fenster, geöffnet werden. Das geht wahrscheinlich am einfachsten mit tkinter, da die Module in der Standardbibliothek vorhanden sind.
BlackJack

@nunatak: So etwas kann man sicher mit Matplotlib machen. Mit etwas weniger Abhängigkeiten könnte man das aber auch mit der Python Imaging Library (`PIL`) oder der Alternative Pillow machen, welche nahezu die selbe API wie PIL hat. Diese Bibliothek braucht man auch um in Tkinter etwas anderes als XPM-, GIF-, oder PPM/PNM-Dateien anzuzeigen. Womit wir dann bei der Alternative angekommen wären für die man keine zusätzliche Bibliothek braucht: Man könnte eine PPM-Datei selbst erzeugen und die in Tk anzeigen lassen. PPM = Portable Pixel Map ist ein supersimples Dateiformat: man 5 ppm.

Wenn es Dir nur ums Anzeigen geht und keine Rastergrafikdatei erzeugt werden muss, dann könnte man die Karte auch direkt auf einem `Tkinter.Canvas` zeichnen um sie dem Benutzer zu zeigen.
Antworten