Zeilenumbruch aus Dateien entfernen...

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

maximilian

Betreff: Zeilenumbruch aus Dateien entfernen...

BeitragSa, Feb 14, 2004 13:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin,

ich habe ein Mega-Problem: Ich designe meine Levels für mein Spiel in einem Text-Editor. Das sieht etwa so aus:

Code: [AUSKLAPPEN]

0,0
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
()()()()()()()()()()()()()()()()()()()()
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
........................................
()()()()()()()()()()()()()()()()()()()()
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%
ww*xww*xww*xxww*xxxww*xxxwww*xxww*xxxwww
ww*xww*xw*xw*xw*xw*xw*xw*xw*xw*xw*xw*xww
ww*xww*xw*xw*xw*xw*xw*xw*xw*xw*xw*xw*xww
ww*xxxxxw*xw*xw*xxxww*xxxww*xw*xw*xxxwww
ww*xww*xw*xw*xw*x*xww*x*xww*xw*xw*x*xwww
ww*xww*xw*xw*xw*xw*xw*xw*xw*xw*xw*xw*xww
ww*xww*xww*xxww*xw*xw*xw*xww*xxww*xw*xww
$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%
()()()()()()()()()()()()()()()()()()()()
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
........................................
()()()()()()()()()()()()()()()()()()()()
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1,3
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
x.   .   .   .   .   .   .   .   .   . x
usw... Die Matrix ist 40x28 Einheiten groß. Nun möchte ich daraus alle Zeilenumbrüche entfernen, und die Zahlen über den Levels (0, 0 1,3) usw. zu Shorts machen. Das ist wohl ziemlich simpel, aber ich kriege es einfach nicht hin. Soweit bin ich gekommen:
Code: [AUSKLAPPEN]

Dim Element$(40)

EntwurfFile = ReadFile(entwurf$)
 MapFile = WriteFile(map$)

   Repeat
     PosX = ReadInt(EntwurfFile)
     PosY = ReadInt(EntwurfFile)
     WriteShort MapFile, PosX
     WriteShort MapFile, PosY
      For y = 1 To 28
       For x = 1 To 40
        Element$(x) = ReadByte(EntwurfFile)
        WriteString MapFile, Chr$((Element$(x))
       Next
      Next
   Until Eof(EntwurfFile)

 CloseFile MapFile
CloseFile EntwurfFile

WaitKey()
End

Das Programm sah schonmal besser aus, aber durch die ganze Verzweiflung habe ich das jetzt so krum gecodet, das dieser Ansatz wohl nur noch scwer ins reine zu bringen ist. Ich hoffe jemand kann mir helfen.

Grüße,
LordEverything[/code]
 

Edlothiol

BeitragSa, Feb 14, 2004 13:32
Antworten mit Zitat
Benutzer-Profile anzeigen
1. ReadInt liest keine Zahl als Text, sondern binär. Dafür müsstest du ReadLine benutzen und das aufteilen.
2. Read/WriteString schreiben nicht nur die eigentlichen Strings, sondern vorher noch einen (binären) Integer, der die Länge des Strings angibt, in die Datei.
Zum entfernen der Zeilenumbrüche:
Code: [AUSKLAPPEN]
while not eof(file)
  ; Linie ohne Zeilenumbruch lesen
  s$ = readline(file)
  ; Linie ohne Zeilen umbruch und ohne Stringlänge schreiben
  for i = 1 to len(s)
    writebyte(zielfile,asc(mid(s,i,1)))
  next
  wend

So in etwa. Bei dir kennst du natürlich die Anzahl der Zeichen etc.

bruZard

BeitragSa, Feb 14, 2004 13:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicht so kompliziert... Code: [AUSKLAPPEN]
in$=Trim(ReadLine(stream))
... entfernt den Zeilenumbruch ebenso Wink
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

TheShadow

Moderator

BeitragSa, Feb 14, 2004 14:04
Antworten mit Zitat
Benutzer-Profile anzeigen
level in ascii-datei zu speichern ist keine so gute idee - macht nur bei pacman - im besten fall noch bei breakout sinn (da wird es aber schon schwierig)
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

maximilian

BeitragSa, Feb 14, 2004 14:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Super! Danke!!!

Grüße,
LordChaos

TheShadow

Moderator

BeitragSa, Feb 14, 2004 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
bitte^_^
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group