Zweiter Restore führt zu Runtime Error

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

worschtbrot

Betreff: Zweiter Restore führt zu Runtime Error

BeitragDo, Nov 04, 2010 13:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich programmiere derzeit einen Clon des allerersten Zelda Teils für den NES und bin dabei auf folgendes Problem gestoßen:

Da das Spiel es immer nur erlaubt eine vollständige Map nach der anderen zu sehen, benötige ich ein wechsel zwischen den Maps. Und genau da liegt mein Problem, denn sobald ich die neue Map einladen möchte erhalte ich den Runtime Error "Out of Data".

Um mein Problem besser zu verdeutlichen ein stark reduziertes Beispiel:

Zum einen habe ich die "maps.dat"-Datei welche ich gleich mit Include einlade. Die Datei sieht so aus:
BlitzBasic: [AUSKLAPPEN]
.map1
Data 1,2,1,1
Data 1,2,1,1
Data 1,2,1,1
Data 1,2,2,2

.map2
Data 1,2,1,1
Data 1,2,1,1
Data 1,2,1,1
Data 1,2,1,1


Und zum anderen ist dann da noch der normale Code:
BlitzBasic: [AUSKLAPPEN]
Include "maps.dat"

Restore map1
For y=0 To 3
For x=0 To 3
Read map(x,y)
Next
Next
WaitKey()
Restore map2
For y=0 To 3
For x=0 To 3
Read map(x,y)
Next
Next
WaitKey()
End


Und der Runtime Error, kommt in diesem Beispiel direkt nachdem man das erste mal eine Taste drückt.
Ich habe schon ein bisschen rum probiert, bin aber zu keiner Lösung gekommen und würde mich deshalb über jede Hilfe freuen.

Mfg worschtbrot

Tennisball

BeitragDo, Nov 04, 2010 13:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum includest du denn eine .dat-Datei?
Benenn sie doch einfach mal um in *.bb

mfg,
Tennisball

Hubsi

BeitragDo, Nov 04, 2010 13:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast Du schonmal an ein dreidimensionales Array gedacht? Also so das alle Kartenteile zusammen geladen werden und im Spiel lediglich der Ausschnitt gewählt wird? Würde dann etwa so aussehen:

BlitzBasic: [AUSKLAPPEN]
;Pseudocode

Dim map(x,y,layer)
For l=0 To maxlayer
For y=0 To maxy
For x=0 To maxx
Read map(x,y,l)
Next
Next
Next


Die einzelnen Abschnitte wären dann sicher gut durch Kommentare getrennt in den Data-Blöcken, wenn es schon Data und Read sein muß. Üblicherweise, das sei aber jetzt nur als Tip zu sehen, verwendet man für sowas Dateien und einen kleinen Mapeditor zum erstellen der Maps. Aber wie gesagt, nur ein Tip. Die Anforderungen des Projekts kennst Du sehr viel besser Mr. Green

Edit: @Tennisball: Das umbenennen bringt was genau? Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Tennisball

BeitragDo, Nov 04, 2010 13:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Hubsi hat Folgendes geschrieben:
Edit: @Tennisball: Das umbenennen bringt was genau? Very Happy


Nix (ausser dass der Dateiname um ein Buchstaben kürzer ist). Kleiner Fail von mir. Confused
Aber jetzt wo ich deinen Code teste, merke ich: Bei mir funktioniert es.
Das mit den dreidimensionalen Arrays ist natürlich auch ne gute Sache.

worschtbrot

BeitragDo, Nov 04, 2010 14:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu nächst mal Danke ihr beiden.
@Hubsi:
1. Das mit den layeren könnte funktionieren werde ich nachher mal umsetzen und ausprobiern.
2.An einen Mapeditor und eizelne Maps habe ich auch schon gedacht, wobei ich das Problem habe meine 144 Tiles (und das nur für die Oberwelt O.o) unterzubringen.

@Tennisball:
Die Datei heißt bei mir nur ".dat", da ich sie so mit dem Texteditor öffne und das bearbeiten dann einfach schneller geht.

EDIT:Ich habe allerdings noch immer nicht begriffen, was genau nicht funktioniert.

MfG worschtbrot

Xeres

Moderator

BeitragDo, Nov 04, 2010 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
.dat Dateien zu includen ist einfach unlogisch - du kannst nur .bb Code includen. Der ganze Code wird ja schließlich zu einer Exe umgewandelt, da kannst du deine Karte nicht nachträglich bearbeiten...
Zum Problem: Debugger eingeschaltet? Gibt es eine genauere Fehlermeldung / Zeile? Benutz du die neuste BB-Version?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

worschtbrot

BeitragDo, Nov 04, 2010 17:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Dateiname, macht in dieser Situation keinen unterschied, da meine Map eigentlich BB-Code enthält nur möchte ich sie eben nicht mit mit BB öffnen sondern mit dem Texteditor. (Man kann übrigens auch .bb-Dateien mit dem Texteditor öffnen)
Und da ich noch lange keine Exe erstellen werde, kann ich die Datei auch weiterhin bearbeiten und verändern wie ich will.

Zu den anderen Fragen:
Debugger ist ein.
Die Fehlermeldung ist "Out of Data".
Und die Zeile ist folgende:
BlitzBasic: [AUSKLAPPEN]
Read map(x,y)

Ich benutze Blitz3D Version 1.106.

EDIT:@Hubsi Danke die Labels Funktionieren muss nur sehr viel dokumentieren um den Überblick zu behalten, aber das sollte nicht das Problem sein.

MfG worschtbrot

Xeres

Moderator

BeitragDo, Nov 04, 2010 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Läuft tadellos:
BlitzBasic: [AUSKLAPPEN]
Local x, y
Dim map(3,3)

Restore map1
For y=0 To 3
For x=0 To 3
Read map(x,y)
Next
Next
Print("Map1 geladen")
;WaitKey()
Restore map2
For y=0 To 3
For x=0 To 3
Read map(x,y)
Next
Next
Print("Map2 geladen")
WaitKey()
End

.map1
Data 1,2,1,1
Data 1,2,1,1
Data 1,2,1,1
Data 1,2,2,2

.map2
Data 1,2,1,1
Data 1,2,1,1
Data 1,2,1,1
Data 1,2,1,1
Was machst du noch anderes zwischendrin?

Und nein, es macht keinen Sinn eine .bb Datei mit einem anderen Texteditor bearbeiten zu wollen. Kann man machen - ist im Prinzip auch nur Textinhalt - aber es bleibt bb Code der kompiliert wird. Es gibt keinen Grund sich zusätzliche Fehlerquellen ein zu arbeiten, indem man Code-Dateien falsch benennt.
Sinnvoll wäre es, dein eigenes Dateiformat zu verwenden und auf Data/Read/Restore zu verzichten um die Level vom Code getrennt zu haben.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

worschtbrot

BeitragDo, Nov 04, 2010 21:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Komisch so gehts...

Mhh, ich kann dir so jetzt nicht sagen, was ich noch zwischendrin hatte, weil ich es mittlerweile abgeändert habe und mein Backup schon gelöscht/überschrieben habe.

Und zu der Datei: Es ist halt meine Art so zu programmieren und wenn ich dadurch Fehler mache, ist das halt mein Pech, aber es gibt kaum ein Problem, dass man nicht lösen kann. Razz

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group