Daten aus Datei in array speichern

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag 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...
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag 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?
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag 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.
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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!
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag 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:
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag von jojo1541 »

Sind alles Longs und es funktioniert perfekt.
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Antworten