Seite 3 von 3

Verfasst: 12.04.2009 22:40
von jojo1541
Die Datei wird aber nach dem Speichern wieder geschlossen.

Ich könnte auch nachdem ich ihn geschlossen habe nicht direkt eine Datei öffnen, ohne vorher openfile zu benutzen.^^



Aber mal noch ne andere Frage:

mein Leveleditor zeigt die Karte auf dem screen mit

Code: Alles auswählen

For y = 0 To kgy
  For x = 0 To kgx
    For i = 1 To 55
      If map(x,y) = i
        DisplayTransparentSprite(i,x*32,y*32 - scrolly) 
      EndIf
    Next
  Next
Next
an, Geht das irgendwie schneller? Bei 25x400 tiles fängt das nämlich an zu ruckeln...

Verfasst: 12.04.2009 22:47
von Kaeru Gaman
ja, die innerste schleife ist doch Unfug.
die greift 55 mal auf das Array zu, und auch noch mit nem If,
wo du nur einen Zugriff brauchst, ganz ohne Bedingung.

Code: Alles auswählen

For y = 0 To kgy
  For x = 0 To kgx
    DisplayTransparentSprite( map(x,y) ,x*32,y*32 - scrolly)
  Next
Next
außerdem brauchst du nicht die gesamte Map darstellen,
sondern nur einen Ausschnitt der so groß ist wie dein Anzeigebereich.

guck mal:
http://www.purebasic.fr/german/viewtopi ... 634#116634

Verfasst: 12.04.2009 23:29
von jojo1541
ganz ohne nicht, denn 0 is bei mir kein sprite und wird folglich auch nichg geladen. :wink:

Aber gibts ne Lösung für dass Problem, dass die unterste Reihe abgeschnitten wird?

Verfasst: 12.04.2009 23:34
von Kaeru Gaman
> ganz ohne nicht, denn 0 is bei mir kein sprite und wird folglich auch nichg geladen.

och mensch, dann musst du eben dafür sorgen, dass in deinem Array keine Nuller drin sind!


> Aber gibts ne Lösung für dass Problem, dass die unterste Reihe abgeschnitten wird?

hab ich dir schon längst geschrieben! öffne das file nicht 2x.

Verfasst: 12.04.2009 23:59
von jojo1541
volti hat geschrieben:Die Datei wird aber nach dem Speichern wieder geschlossen.

Ich könnte auch nachdem ich ihn(den Leveleditor) geschlossen habe nicht direkt eine Datei öffnen, ohne vorher openfile zu benutzen.^^
Und ich hab geantwortet... /:->

Ich sagte ja, dass ich das Programm erst beende, dann erst neu starte und dann lade. Die Datei wird also nicht zweimal geöffnet.

Verfasst: 13.04.2009 00:15
von Kaeru Gaman
oh verdammt, kuckst du mal hin wovon ich rede?

das ist von dir:
datei$ = OpenFileRequester("Öffnen","C:\","Wrater's Revenge Level(*.wrl) | *.wrl;",0)
If OpenFile(#file,datei$)
kgx = ReadLong(#file)
kgy = ReadLong(#file)

Dim map(kgx,kgy)

ReadFile(#file, datei$)
ReadData(#file, Map(), kgx * kgy + 1 * SizeOf( Long ) )
StatusBarText(#statusbar,1,datei$)

EndIf
siehst du jetzt, wie du 2x öffnest?


und das hab ich geschrieben:
datei$ = OpenFileRequester("Öffnen","C:\","Wrater's Revenge Level(*.wrl) | *.wrl;",0)
If ReadFile(#file, datei$)
kgx = ReadLong(#file)
kgy = ReadLong(#file)

Dim map(kgx,kgy)

ReadData(#file, Map(), kgx * kgy * SizeOf( Long ) )
CloseFile(#file)
StatusBarText(#statusbar,1,datei$)

EndIf
... und das Close gehört ins selbe If!

Verfasst: 13.04.2009 00:24
von jojo1541
Oh hab mal wieder readfile verbuchselt. :oops: :oops: :oops:

Srry, aber hab da grad echt nicht geschalten.
Danke für die Geduld und dem auf die Sprünge helfen, Kaeru, ich geh mich jetzt schämen.


Ich könnte mich selber mal debuggen... :lol:

Verfasst: 13.04.2009 00:28
von Kaeru Gaman
schon in ordnung...

btw:
ich hoffe mal dass dein Array wirklich alles LONGs sind...
wenn du nen anderen Typ verwendest, musst du das natürlich ändern im SizeOf...

Verfasst: 13.04.2009 14:11
von jojo1541
Sind alles Longs und es funktioniert perfekt.