Stringverarbeitung, brauche hilfe.

Previous topic - Next topic

D2O

HI all, irgendwie steh ich mal wieder auf dem schlauch.

Folgendes in einer .txt datei steht z.B.

Quotejkhjzndnkjhkiedfnckjnkj  ckjlcnnc jkj ijn"$%"§$bn nbedf"fhb width="5"nmjkhk"üoy0ß20"3hight="5"90489sjcnu3ujkmcmnm
Nun möchte ich das width="5" und hight="5" herauspfrimeln und in einer neuen .txt untereinander abspeichern (speicher is kein problem ;)  )


Nun aber die "5" kann aber genauso "1352" heisen, hier sind also der text um die "width" variable genaus so der wert "5"
Nur eben solche schlüsselwörter wie width=" sind immer gleich.



Warum das ganze, im netz habe ich einen spassigen Mapeditor gefunder der nicht so überfrachtet ist und trotzdem einen gewissen Komfort hat.
Er selber ist in JAVA geschrieben und speichert Maps als .tmx  (schaut wie xml aus) und das kann man per readline gut auslesen.
Die eigendlichen map/layerdaten sind kein problem, hauptsächlich geht es mir um die versions info, Tile grösse, Tileset namen, und die Map grösse.
Und genau diese daten sind hintereinander geschrieben.

Das ist mal eine beispielmap mit 2 layer:
Code (glbasic) Select


 
 
 
   
   
   

 

 
   
   
   

 

 
   
   
   

 

 

 
 
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 

 

 
 
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 

 

I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Kitty Hello

oh dear. Einen XML parser.
Mach eine Funktion für jeden Eintrag:

 Read_image
 Read_Tile
 Read_Tileset
 Read_Properites:
 Read_Property:
usw.
darin parst Du immer nach einem "<" (mit MID$) und nimmst das nächste Wort. beginnt's mit "/", ist der Eintrag fertig, RETURN.

dann parst Du alle unter-einträge und gibst die an die jeweilige Funktion ab.

Nützliche Funktionen:

TrimLeft$: a$ // links alles " " und "\t" abschneiden.

SplitProps: a$, output$[] // alle attribut="wert" trennen

geht so:
trimleft
such nach nächstem "="
such nach "\"" (Start von Wert)
Such nach nächsten "\"" nach dem Start+1 = End von Wert
REDIM output[anzahl+1][2]
output$[anzahl][0]=name$
output$[anzahl][1]=wert$
INC anzahl,1

D2O

Danke Gernot, werd  mich gleich mal ran machen.
Im Englishen Forum hat einer ja einen Link  zum Devil editor geschrieben.
Der ist nicht schlecht, einfach und nicht so überladen, leider kann der nur einen Layer dafür kann man die map datei super einfach laden :) .

Der nächste Favorit ist eben Tiled von http://mapeditor.org der ist auch super einfach zu handhaben und er kann Layer :)
aber die map wird halt als XML gespeichert.
Hier hoffe ich einen einfachen Konverter zu schreiben der ein Byte file ausgibt.
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

D2O

Konverter TMX zur byte datei geht :)
Schreib jetzt mal einen einfachen loader.
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Kitty Hello


D2O

Bin gerade am Testen, kleine Bug hatte sich eingeschlichen ;) , vieleicht lade ich später die sachen mal hoch, bzw. morgen.
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Schranz0r

Öh für was solls das Gut sein?
Sprites laden kann ich auch einfacher ^^
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

D2O

Geht nicht um die Sprites sondern um das Map format,
da der editor in Java geschrieben ist, ist der auch wieder platform unabhängig und er kann layer.
Ist echt lustig das ding :)

Musst Du mal selber testen.
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Schranz0r

Layer kann ich auch ohne einen Fertig editor machen ;)
Wenn ich sowas mache, schreib ich mir selber einen Editor, der auf das Game angepasst ist, damit kann ich dann alles setzen, z.B Enemys Collboxen usw...
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

D2O

Ja. da hast Du schon recht,
aber ist doch schön, einfach schnell einen Editor nehmen zu können, ne einfache map erstellen und sich dann
nur noch auf seine eigene Gameengine zu konzentrieren.

Auch für anfänger ist sowas gut, wenn sie sich gleich ne map schnappen  und dann loslegen können.
Später, wenn man grössere Projekte anfängt, kömmt man eh nicht drum herum sich einen angepassten Editor zu schreiben.

Für einfache JuR, Arkanoid, ... Games reichts, und ich hab gerade spass an dran :)
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Kitty Hello


Schranz0r

Mappy wär doch besser?
Da sollte mal einer nen Port machen !
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard