Problem mit ReadFloat :( ~ERLEDIGT~

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

flohrian

Betreff: Problem mit ReadFloat :( ~ERLEDIGT~

BeitragDi, Mai 23, 2006 2:14
Antworten mit Zitat
Benutzer-Profile anzeigen
hi leute, ich bin grad dabei einen level-editor zu programmieren.
vorher wurden die level-daten im spiel einfach mit readline und mid ausgelesen. (damit man per hand levels erstellen kann Wink )
jetz dacht ich mir, wo ich nen level-editor hab (fast hab), da kann ich das ganze auch mit byte, int oder float machn.
alle 3 möglichkeiten funktionieren jedoch nicht Crying or Very sad

hier ist mal der code, womit ich die levels auslese, damit ihr mich besser versteht:

BlitzBasic: [AUSKLAPPEN]
Function LoadLevel ()

file = ReadFile ("Levels\level" + Str$ (2) + ".jmp.lvl")


For i = 0 To game_height / tile_height - 1
For a = 0 To level_width / tile_width - 1

val = Int (ReadFloat# (file)) ; Das klappt iwi nicht!!

DebugLog val ; Der DebugLog zeigt nur nullen an!

Next
Next

CloseFile (file)

tile_block_number = counter_block
tile_item_number = counter_item + 1

End Function


die suche hab ich übrig. auch schon benutzt und bei google fand ich auch nichts... Rolling Eyes

EDIT:
Habs jetz hinbekommen!
Ich musste doch Integer nehmen.
  • Zuletzt bearbeitet von flohrian am Di, Mai 23, 2006 15:34, insgesamt 2-mal bearbeitet

x-pressive

BeitragDi, Mai 23, 2006 8:17
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Was soll den das Str$(2)? Schreib doch entweder gleich "2" oder hau eine Variable rein.

2. Immer erst mal testen, ob das File überhaupt geöffnet bzw. gefunden werden konnte:

If file <> 0 Then
...... auslesen .....
CloseFile file
End If

3. Woher willst du beim Lesen eines Level wissen, welche Werte game_height / tile_height haben müssen? Besser, du speicherst diese beiden Werte mit in die Datei, liest sie zuerst aus und benutzt die dann für die Schleife.

4. Was für einen Sinn hat "tile_item_number = counter_item + 1" ausserhalb der Schleife? Die Nummer der Tiles wird so jedenfalls nicht gezählt.

5. Variablen immer lokalisieren, sonst gibt es später Konflikte! Bei globalen Variablen immer z.B. ein g Voranstellen (gMeineVariable), dann erkennt man auf einen Blick, welche Variablen global sind.

6. Und warum liest du Floats für die Tiles ein? Hat das einen Grund?

7. Hast du val als Int oder Float deklariert? Wenn val eine Integer-Variable ist und du Kommazahlen unter 0 einliest, ist klar, woher die Nullen kommen.


Probier's doch mal so (natürlich musst du sie vorher auch im entsprechenden Format gespeichert haben):



Code: [AUSKLAPPEN]
Function LoadLevel% (num%)

   Local File%, x%, y%, w%, h%, val#

   File = ReadFile ("Levels\level" + num + ".jmp.lvl")
   If File = 0 Return False ; KONNTE NICHT GELESEN WERDEN

   ; LEVEL-GRÖSSE AUSLESEN:
   w = ReadInt(File)
   h = ReadInt(File)

   For y = 0 To h
      For x = 0 To w
         val = Int ( ReadFloat(File) ) : DebugLog val
      Next
   Next

   Closefile (File)

   Return True ; ERFOLGREICH GELESEN

End Function
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL
 

flohrian

BeitragDi, Mai 23, 2006 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
wie gesagt, ist alles erledigt.
das tile_block_nummer hatte nichts damit zu tun.
str$ (2) war für eine variable gedacht, die jetz auch drin steht.
um den fehler zu finden hab ich das eben vereinfacht!

aber wie gesagt, alles erledigt, es gibt kein problem mehr!

x-pressive

BeitragDi, Mai 23, 2006 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hüstel... räusper... einige der obigen Punkte solltest du dir aber dennoch zu Herzen nehmen, das schadet wirklich nicht Wink
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL
 

flohrian

BeitragMi, Mai 24, 2006 18:51
Antworten mit Zitat
Benutzer-Profile anzeigen
x-pressive hat Folgendes geschrieben:
Hüstel... räusper... einige der obigen Punkte solltest du dir aber dennoch zu Herzen nehmen, das schadet wirklich nicht Wink

ok Wink

x-pressive hat Folgendes geschrieben:
1. Was soll den das Str$(2)? Schreib doch entweder gleich "2" oder hau eine Variable rein.

2. Immer erst mal testen, ob das File überhaupt geöffnet bzw. gefunden werden konnte:

If file <> 0 Then
...... auslesen .....
CloseFile file
End If

3. Woher willst du beim Lesen eines Level wissen, welche Werte game_height / tile_height haben müssen? Besser, du speicherst diese beiden Werte mit in die Datei, liest sie zuerst aus und benutzt die dann für die Schleife.

4. Was für einen Sinn hat "tile_item_number = counter_item + 1" ausserhalb der Schleife? Die Nummer der Tiles wird so jedenfalls nicht gezählt.

5. Variablen immer lokalisieren, sonst gibt es später Konflikte! Bei globalen Variablen immer z.B. ein g Voranstellen (gMeineVariable), dann erkennt man auf einen Blick, welche Variablen global sind.

6. Und warum liest du Floats für die Tiles ein? Hat das einen Grund?

7. Hast du val als Int oder Float deklariert? Wenn val eine Integer-Variable ist und du Kommazahlen unter 0 einliest, ist klar, woher die Nullen kommen.


Probier's doch mal so (natürlich musst du sie vorher auch im entsprechenden Format gespeichert haben):



Code: [AUSKLAPPEN]
Function LoadLevel% (num%)

   Local File%, x%, y%, w%, h%, val#

   File = ReadFile ("Levels\level" + num + ".jmp.lvl")
   If File = 0 Return False ; KONNTE NICHT GELESEN WERDEN

   ; LEVEL-GRÖSSE AUSLESEN:
   w = ReadInt(File)
   h = ReadInt(File)

   For y = 0 To h
      For x = 0 To w
         val = Int ( ReadFloat(File) ) : DebugLog val
      Next
   Next

   Closefile (File)

   Return True ; ERFOLGREICH GELESEN

End Function


1. erledigt
2. erledigt
3. die werte sind konstant, vlt werden die später mal variabel, dann muss ichs halt anders machn, is klar!
4. hab ich raus genommen
5. ja, ich weiss, bin schon dabei mein stil zu verbesser Wink der code is etwas älter...
6. nö, erledigt
7. als int, erledigt

so, wie du siehst ist alles bis auf 5. erledigt Wink

x-pressive

BeitragMi, Mai 24, 2006 19:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Perfekt Wink
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group