Seite 1 von 1

Maps auslesen

Verfasst: 08.08.2007 20:06
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...

Verfasst: 08.08.2007 20:08
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

Verfasst: 09.08.2007 10:52
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?

Verfasst: 09.08.2007 13:05
von Zaphod
Nö, da gibt es keine Probleme.
Text ist vielleicht etwas unpraktisch als Mapformat, da wäre ein Binärformat deutlich komfortabler.

Verfasst: 09.08.2007 14:08
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

Verfasst: 09.08.2007 15:20
von X0r
Readstring & Writestring? Da könnte die Mapdatei aber groß werden..

Verfasst: 09.08.2007 15:29
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.

Verfasst: 10.08.2007 15:12
von Kir.tap
Ok, danke für die vielen Antworten, werd mich dann mal ranmachen ;)