Leveleditor Datei schreiben!
Übersicht

LarsBetreff: Leveleditor Datei schreiben! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey!
Ich habe ein problem ich will einen Leveleditor schreiben. Jedesmal wenn ich klicke sollen die Koordinaten der maus in einer Datei abgespeichert werden. Aber wenn ich in die datei gucke steht da nur noch die letzte Koordinate. Code: [AUSKLAPPEN] Graphics 640,480,0,2
SetBuffer = BackBuffer c=0 d=0 Repeat Repeat Rect MouseX(),MouseY(),40,40 x=MouseX() y=MouseY() Until MouseHit(1) Print x Print y fileout = WriteFile ( "test.txt" ) SeekFile fileout,c c=c+5 WriteLine fileout, x CloseFile ( fileout ) fileout = WriteFile ( "test.txt" ) SeekFile fileout,c c=c+5 WriteLine fileout, y CloseFile ( fileout ) Until KeyHit (1) WaitKey End Ich brauche Hilfe! Vielendank schon einmal im Vorraus. mfg Lars |
||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nimm statt
SeekFile ![]() das hier: SeekFile ![]() ![]() |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
Lion |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
desweiteren brauchst du nicht für jede variable den stream erneut öffnen, das kannst du ganz simpel in einem rutsch machen | ||
Intel Core 2 Quad 4x2.66 ghz - 4gb ddr2 - nvidia GeForce GTX660 2gb
Intel Atom 1x1.83 ghz - 2gb ddr2 - intel GMA 3150 256mb AMD A10-5750M 4x2.5 ghz - 8 gb ddr4 - AMD R9 M290x |
Lars |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
da ist leider weiterhin das gleiche Problem | ||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde einen etwas anderes Vorgehen vorschlagen, habe aber grad auch keine Lust auf alle penibelst einzugehen. Grob aber mal trotzdem ein paar Infos:
- Setbuffer Backbuffer() ist richtig, nicht Setbuffer = Backbuffer - Ich hab durch das ewige rumscrollen schon ein Krampf im Finger. Man muß es nicht unbedingt so weit ausdehnen. - Wenn man Backbuffer() benutzt, dann gehört auch ein Flip ![]() ![]() ![]() - Funktionen wie MouseX ![]() Code: [AUSKLAPPEN] Graphics 640,480,0,2
SetBuffer BackBuffer() Local Timer=CreateTimer(58) Local MX%,MY% Local IX%,IY% Local Datei% Const TILES=32 Const XDIM=19 Const YDIM=14 Dim Map%(XDIM,YDIM) While Not KeyHit(1) MX=MouseX()/TILES MY=MouseY()/TILES Rect MX*TILES,MY*TILES,TILES,TILES,0 Text 20,20,MX Text 20,40,MY If MouseDown(1) Then Map(MX,MY)=1 If MouseDown(2) Then Map(MX,MY)=0 ; MAP/ZEICHNEN For IY=0 To YDIM For IX=0 To XDIM If Map(IX,IY)=1 Then Rect IX*TILES,IY*TILES,TILES,TILES,1 Next Next ; F1/LOAD If KeyHit(59) Then Datei=ReadFile("c:\jojo.dat") For IY=0 To YDIM For IX=0 To XDIM Map(IX,IY)=ReadByte(Datei) Next Next CloseFile Datei End If ; F2/SAVE If KeyHit(60) Then Datei=WriteFile("c:\jojo.dat") For IY=0 To YDIM For IX=0 To XDIM WriteByte Datei,Map(IX,IY) Next Next CloseFile Datei End If WaitTimer Timer Flip 0 Cls Wend End |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn Du die X und Y Koordinaten so in die Datei scheiben willst, dass sie sich nachher dort als Text lesen lassen, ist das Beispiel von "hectic" nicht das Richtige. Das speichert gleich die ganze MAP ab. Un dies nicht als lesbare ASCIIs.
Ich habe mal gelesen, das WRITEFILE immer eine bestehende Datei 100% löscht, bevor er sie öffnet. Verwende doch mal OPENFILE. Dann kannst Du mit SEEKFILE und FILESIZE an das Ende der Datei springen und dort weiter Zeilen anfügen. Ich würde daraus eine eigene Function machen: Code: [AUSKLAPPEN] Function AppendFile(Datei$, Zeile$)
(kann sein, dass der Code noch Fehler enthält, ich habe leider kein BlitzBasic...)
AnzahlBytes%=FileSize(Datei) FileStream = OpenFile(Datei) SeekFile FileStream, AnzahlBytes WriteLine FileStream, Zeile CloseFile FileStream End Function In Deinem Programm rufst Du solche eine Function nur noch mit: Code: [AUSKLAPPEN] AppendFile "test.txt", X
AppendFile "test.txt", Y Übrigens halte ich es nicht für klug, die Koordinaten einfach so ohne Beschreibung abzuspeichern. Vielleicht wäre es so besser: Code: [AUSKLAPPEN] locZeile$= "X= " + X + "; Y=" + Y
ApendFile "test.txt", locZeile dann hast Du nachher in der Datei stehen... Code: [AUSKLAPPEN] X=14; Y=123;
X=28; Y=234; u.s.w Wofür wirst du denn die abgespeicherten Koordinaten benötigen? |
||
LarsBetreff: Danke! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen Dank für die schnelle Hilfe.
@Midimaster:Naja, Ich will einen Leveledior für ein 2D Prjekt von mir programmieren. In der txt Datei will ich eigentlich nur kontrollieren können ob alles geklappt hat und mir Übersicht verschaffen, fals ich noch andere Dinge einebauen will wie z.B. Fallen oder so Etwas. |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja, wenn Du X und y abwechselnd in die Datei schreibst, kann es später beim Duchlesen schon zu Verwechslungen kommen, welcher Wert nun x und wo y ist. Oder welches Y zu welchem X gehört. Probier doch mal die einzeilige Variante. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group