Problem mit ReadFloat :( ~ERLEDIGT~
Übersicht

flohrianBetreff: Problem mit ReadFloat :( ~ERLEDIGT~ |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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 ![]() hier ist mal der code, womit ich die levels auslese, damit ihr mich besser versteht: BlitzBasic: [AUSKLAPPEN] Function LoadLevel () die suche hab ich übrig. auch schon benutzt und bei google fand ich auch nichts... ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hüstel... räusper... einige der obigen Punkte solltest du dir aber dennoch zu Herzen nehmen, das schadet wirklich nicht ![]() |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
flohrian |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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 ![]() 6. nö, erledigt 7. als int, erledigt so, wie du siehst ist alles bis auf 5. erledigt ![]() |
||
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
Perfekt ![]() |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group