Maps auslesen

Anfängerfragen zum Programmieren mit PureBasic.
Kir.tap
Beiträge: 3
Registriert: 08.08.2007 19:47
Kontaktdaten:

Maps auslesen

Beitrag von Kir.tap »

Guten Tag PureBoard Gemeinde,
mein erster Beitrag in diesem Forum. Ich habe PB nun schon etwas länger, habe mich aber noch nie richtig damit befasst. Nun heute, nach langer Überlegung hab ich mich dazu entschlossen PB zu erlernen. Früher habe ich bereits mit BlitzBasic und anderen Sprachen gearbeitet, aber PB scheint mir auch ziemlich sympatisch, da es doch ziemlich komplex ist.
Nun aber eine Frage:
Wie kann ich Daten aus einer Datei auslesen und diese in Grafiken umwandeln. Ich benötige das für die Levels. Also ich habe eine Datei namens "level.txt" die ungefär so aussehen kann:

11111111111
1 P 3332 1
1 5 1
1 3 2 1
1 G 12231 1
111111111 1

Diese möchte ich laden und die Zeichen in Grafiken umwandeln, also die 1 stünde für eine Mauer, die Leerzeichen " " für Boden und so weiter.

Desweiteren soll es auch P(layer) und G(egner) geben. Ich hab mir für das Bewegen der Player und Gegner deshalb überlegt, wenn man also zB nach oben drückt (Pfeiltaste), wird die Datei überschrieben, sodass praktisch das P wieder mit " " (Boden) überschrieben wird und " " (Boden) durch das neue P. Wäre doch machbar oder?

Kann mir jemand helfen? Die SuFo hat mir keine wirklichen Ergebnisse geliefert oder ich war überlegt genug...
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

suchbegriffe:

Tile Tiles Tilemap Tileengine Mapengine

bitte suchen, es ist wahrlich schon sehr oft erklärt worden.

auch das mitgelieferte beispiel "LadyBug" benutzt eine in Data-Zeilen integrierte Map auf Zahlenbasis.


willkommen im Board :D
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Kir.tap
Beiträge: 3
Registriert: 08.08.2007 19:47
Kontaktdaten:

Beitrag von Kir.tap »

Oh, vielen dank ;)

Ich hab mir jetzt überlegt, einfach die BlitzBasic Variante in PB nachzucoden. Sähe so aus in BB:

Code: Alles auswählen

;laden
Dim Map(15.20)
file = ReadFile("map.txt")
For i = 0 to 14
GET$ = Readline(file)
For j = 0 to 19
MAP$(i,j) = Mid$(GET$,j+1,1)
next
next
Closefile(file)

; Zeichnen
repeat
For i = 0 to 14
 for j = 0 to 19
 select MAP$(i,j)
 Case " " 
 ; boden image
 Case "1"  
 ; Block
end select
next
next

until keyhit(1)
end 
Das ließe sich eigentlich problemlos in PB umsetzen, oder gibt es da Probleme?
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

Nö, da gibt es keine Probleme.
Text ist vielleicht etwas unpraktisch als Mapformat, da wäre ein Binärformat deutlich komfortabler.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

und eine zuordnung über If bzw. Select ist auch etwas umständlich.
direkte IDs ist praktischer.

da ich zufällig heut grad in nem anderen thread mit dem thema befasst bin,
hier mal zwei links:
http://www.purebasic.fr/german/viewtopic.php?t=13624
http://www.purebasic.fr/german/viewtopi ... 634#116634
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

Readstring & Writestring? Da könnte die Mapdatei aber groß werden..
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Forge hat geschrieben:Readstring & Writestring? Da könnte die Mapdatei aber groß werden..
wus?
wieso soll die größer werden? Bild

ein zeichen braucht in ANSI 1byte, damit wird das kleiner als wenn man für jedes Tile ein Long nimmt.
es ist lediglich ziemlich unpraktisch.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Kir.tap
Beiträge: 3
Registriert: 08.08.2007 19:47
Kontaktdaten:

Beitrag von Kir.tap »

Ok, danke für die vielen Antworten, werd mich dann mal ranmachen ;)
Antworten