Zeilenenden in Level-Dateien?

Previous topic - Next topic

Luckeie

Ich habe angefangen ein kleines Spiel zu schreiben, welches verschiedene Level in Form von ASCII-Dateien verarbeiten kann. Dieses Programm funktioniert soweit ganz gut auf dem PC, aber nicht auf dem GP2X. Nach einigem Debuggen scheint es so zu sein, dass es sich in der Level-Laderoutine aufhängt. Dazu meine Frage: Hat GLBasic und dabei speziell der Befehl READLINE Probleme mit unter Windows erstellten ASCII-Dateien? Muss ich vorher eine Zeilenendekonvertierung durchführen?

Das Stück Code in dem der Fehler ist:

YCntr = 0
WHILE ENDOFFILE (1) = FALSE
READLINE 1, Line$
FOR XCntr = 0 TO LEN (Line$) - 1
PlayField$ [XCntr][YCntr] = MID$ (Line$, XCntr, 1)
NEXT
YCntr = YCntr + 1
WEND

Das Debuggen ist übrigens grausam:

- Teil des Codes entfernen
- Multiplattfom neue erstellen
- SD-Karte aus dem GP2X raus und in Computer rein
- Programm darauf kopieren
- SD-Karte aus dem Computer raus und in den GP2X rein
- Aufrufen und gucken was passiert
- und alles wieder von vorn... Puuuhhh!

Liebe Grüße

Luckeie

Quentin

hmmm habe jetzt nicht wirklich Ahnung, wie Zeilenvorschübe für GP2X aussehen, aber könntest es mal mit einem Editor versuchen, der als Zeilenvorschub nur LF statt CRLF setzt, z.B. mit WinVI

http://www.winvi.de/de/

bei einer Installation unter Windows ist glaube ich standardmäßig CRLF eingestellt. Das kannst du unter "Optionen - Einstellungen - Dateityp" ändern.

Schranz0r

Wenn du mich fragst, machst du es viel zu umständlich.

ich habs so gemacht, nicht schön, aber dürfte auch auf den GP2X laufen:


Code (glbasic) Select
FUNCTION Save:
IF KEY(31)
SETFONT 4
 FILLRECT 15,15,165,35, RGB(200,200,200)
 INPUT Name$,20,15
SELECT Name$
 CASE ""
PRINT "Kein Mapname eingegeben",150,2
 DEFAULT
 datei$ = Name$
  OPENFILE(1,"lvl/"+datei$+".dat",FALSE)
FOR X = 0 TO MaxX-1
FOR Y = 0 TO MaxY-1
FOR Z = 0 TO 2
WRITELINE 1,Level[X][Y][Z]
NEXT
NEXT
NEXT
  CLOSEFILE 1
  Name$ = ""
ENDSELECT
ENDIF
ENDFUNCTION

FUNCTION Load:
IF KEY(38)
SETFONT 4
 FILLRECT 15,15,165,35, RGB(200,200,200)
 INPUT Name$,20,15
SELECT Name$
 CASE ""
PRINT "Kein Mapname eingegeben",150,2
 DEFAULT
 datei$ = Name$
  OPENFILE(1,"lvl/"+datei$+".dat",TRUE)
FOR X = 0 TO MaxX-1
FOR Y = 0 TO MaxY-1
FOR Z = 0 TO 2
READLINE 1,Level[X][Y][Z]
NEXT
NEXT
NEXT
  CLOSEFILE 1
  Name$ = ""
ENDSELECT
ENDIF
ENDFUNCTION
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

Luckeie

Quote from: Schranz0rWenn du mich fragst, machst du es viel zu umständlich.

ich habs so gemacht, nicht schön, aber dürfte auch auf den GP2X laufen:


Code (glbasic) Select
FUNCTION Save:
FUNCTION Load:
ENDFUNCTION
Hallo Schranz0r!

Bevor ich das ausprobiere - kann diese Art mit READLINE einzulesen auch ASCII-Dateien so einlesen? Ich habe es naemlich so gemacht, da ich dann mit einem beliebigen ASCII-Editor meine Levels editieren kann?

Liebe Grüße

  Luckeie

Schranz0r

Ist dann halt alles in einer Reihe, also extern Bearbeiten ist da net mehr :D

Nimm doch eine INI Datei her, und les die Spalten so raus!
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

Luckeie

Quote from: Schranz0rIst dann halt alles in einer Reihe, also extern Bearbeiten ist da net mehr :D

Nimm doch eine INI Datei her, und les die Spalten so raus!
Also, bevor ich jetzt alles wieder umschmeis, hätte ich schon gerne eine Antwort auf meine anfangs gestellte Frage.

Wie meinst Du dass mit der INI-Datei?

Bitte versteh mich - es läuft docheigentlich alles und logisch scheint auch alles Ok zu sein - wenn ich wüßte wie der READLINE-Befehl intern arbeitet oder wenn Gernot mir einfach sagt Zeilenenden mit Carriage Return und Linefeed oder eben nur Linefeed oder so was ähnliches, dann ginge doch villeicht  schon alles bei mir...

Deine Lösung setzt eben auch ein entsprechendes Abspeichern voraus - aber ich will jetzt keinen Level-Editor programmieren! Ich bin ein bisschen am Herumtesten mit GLBasic und GP2X um einmal zu sehen ob das etwas für mich ist, sonst bleib ich bei Delphi, Java und Datenbanken und lass den GP2X in Ruhe. ;-)

Liebe Grüße

  Luckeie

Kitty Hello

Bitte poste ein kleines Projekt mit dem Fehler und der Eingabedatei zusammen per Z-Share oder so.
Kann schon sein, dass da ein Fehler ist. Sollte aber nicht.

Luckeie

Quote from: GernotFrischBitte poste ein kleines Projekt mit dem Fehler und der Eingabedatei zusammen per Z-Share oder so.
Kann schon sein, dass da ein Fehler ist. Sollte aber nicht.
Das ist der Link auf das Beispielprojekt - aber damit geht es!!!

http://www.zshare.net/download/2326925219a85d/

Vielleicht ist der Fehler doch woanders, ich werde weitersuchen.

Liebe Grüße

  Luckeie