variabeln ändern

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Jey

Betreff: variabeln ändern

BeitragMi, Okt 05, 2005 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe wieder mal ein seltsames problem, und zwar habe ich eine funktion zum mapladen aus einer textdatei. Als Operatoren, möchte ich den namen der zu ladenden Map angeben können und den Namen der Dim in der sie gespeichert wird.
Also so etwa:

Code: [AUSKLAPPEN]
Function load_map(map_name$, dim_name$)
 Text 400,300,"LOADING MAP...",1
 karte$ = ReadFile("Map\"+map_name$+".map")
  ;Map angaben
  Tilebreite   = ReadLine(karte$)
  Tilehoehe    = ReadLine(karte$)
  Tileanzahl1  = ReadLine(karte$)
  Tileanzahl2  = ReadLine(karte$)
 Mapbreite    = ReadLine(karte$)
  Maphoehe     = ReadLine(karte$)


  For x = 0 To mapbreite
  For y = 0 To maphoehe
   ;layer1
   dim_name$(x,y,0) = ReadInt(karte$)
   ;layer2
   dim_name$(x,y,1) = ReadInt(karte$)
   ;layer3
   dim_name$(x,y,2) = ReadInt(karte$)
  Next
  Next

 CloseFile(karte$)
End Function


Die Array dim_name$ kennt er aber so ja nicht. Also bräuchte ich eine Möglichkeit aus einem string eine variabel zu machen.
Hoffe das war verständlich und kein Unsinn Wink aber das würde mir vieles erleichtern. Danke im vorraus
 

Omenaton_2

BeitragDo, Okt 06, 2005 9:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein DIM muß erst deklariert werden, bevor du Werte zuweisen kannst.

Also,
DIM dim_name$(Mapbreite, Maphoehe,1)
... dann erst sie Werte aus Datei auslesen und in DIM hineinschreiben.

Außerdem, du mußt nicht unbedingt immer alles als String auslesen, du kannst ja auch gleich Ziffern nehmen, aber das ist kein Problem. Du mußt nur deinen eigenen Karten-File-Format genau kennen, wann Zahlen und wann Strings geschrieben und gelesen werden sollen. Du kannst sie mischen, mußt nur beim Lesen auf die richtige Reihenfolge achten.

Bei dieser Sache bin ich mir jetzt nicht so sicher, aber ich glaube mir war schon früher aufgefallen, daß BlitzBasic die Sachen mit der Integer aus String lesen nicht so streng nimmt, es geht also viel einfacher als man denkt aus einem String einen Zahlenwert zu bekommen.

*************************************

Ok, ich habe nochmal nachgeschaut und das geht so doch nicht, da BlitzBasic das (soweit ich es weiß) nicht erlaubt, einen DIM (oder gar eine BANK) mit einem aus einem anderen Variablen aus stammenden Namen zu versehen. Das geht leider nicht. Sowas hätte ich auch schon mal gebraucht.

Man muß tricksen.
Wenn du gleichzeitig nur einen Map in deinem Programm anzeigst, dann ist es einfach. Dann nimmst du immer einen default Namen.

Wenn du zwar mehr als nur einen, aber eine begrenzte Anzahl (so 2-20) Maps auf ein Mal verwalten willst, dann kannst du einfach in einer herkömlichen Select oder IF Then Schleife je nach Map ID (jede Map bekomt eine ID Nummer) eine passend benannte Dim erschaffen. So:

Select map_IDnummer
Case 1 : Dim dim_N1$(Mapbreite, Maphoehe,1)
Case 2 : Dim dim_N2$(Mapbreite, Maphoehe,1)
...und so weiter...
End Select

Anzeigen kannst du den tatsächlichen String Namen, aber intern arbeitest du nur mit ID-Nummer, nicht mit Strings.
Das alles ist so nicht schön, aber leider klappt es nicht so wie man es gerne hätte.
 

Jey

BeitragDo, Okt 06, 2005 13:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Dank dir, ich hätte es jetzt wahrscheinlich sowieso so gemacht. Ist zwar nicht so schön wir ich mir das vorstellte, aber scheinbar ist das nicht anderst machbar.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group