variabelnamen verändern (aber anders)

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

onkelz89

Betreff: variabelnamen verändern (aber anders)

BeitragSo, Okt 30, 2005 23:02
Antworten mit Zitat
Benutzer-Profile anzeigen
hi

habe eine frage:

also ich muss im spiel mehrmals auf eine variable zugreifen die sieht zb. so aus: objekt1000001 oder objekt1008461

naja gibt es eine möglichkeit sowas abzufragen:

objekt[zahl]=XXX

also so sähe es aus wenn es klappen würde:

zahl=1000001

objekt[zahl]=1 --> objekt100001=1


also das ich nicht die zahl eingebe sondern eine 2te variable...
weil sonst muss ich jede abfrage einzeln machen und das sind seeeeeehr viele...


hoffe das weiß einer von euch

mfg
onkelz[/code]

Hubsi

BeitragSo, Okt 30, 2005 23:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Problem versteh ich jetzt nicht so ganz, bzw. hast Du dir die Antwort eigentlich schon selbst gegeben:Zitat:
objekt[zahl]
Dein Vorhaben lässt sich ganz simpel mit einem Array realisieren Very Happy Etwas einfacher zu verstehen, wie ich finde, ist das Standardarray, welches vorher mit Dim variable(irgendwas) initialisiert wird. Zudem hast Du damit auch mehrere Dimensionen zur Verfügung (Dim vari(10,20,30) z.B.) und es ist standardmäßig global.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

onkelz89

BeitragSo, Okt 30, 2005 23:29
Antworten mit Zitat
Benutzer-Profile anzeigen
hört sich schon gut an aber nicht perfekt..

dann musste ich in den array weit über 1000 zahlen schreiben und das wäre auch ein haufen arbeit...

geht das denn hier bei blitz nich wie in php?

da geht sowas zb:

$zahl=1000001;
$ausgabe="objekt$zahl";
echo$ausgabe;

dann käme auf der seite folgendes raus: objekt1000001

geht sowas nicht?
 

feider

ehemals "Decelion"

BeitragSo, Okt 30, 2005 23:32
Antworten mit Zitat
Benutzer-Profile anzeigen
achso!
das müsstest du so realisieren können:

BlitzBasic: [AUSKLAPPEN]

$zahl=100001
$wort= Freeeed
$ausgabe=$zahl+$wort
Print $ausgabe


Dabei kommt das raus:
Zitat:
Freeeed100001
[/code]
 

onkelz89

BeitragSo, Okt 30, 2005 23:35
Antworten mit Zitat
Benutzer-Profile anzeigen
jo stimmt schon ...

aber sorry mein fehler hab das wesentliche vergessen:

die ausgabe soll eine neue variabel sein also

$zahl=100001
$wort= Freeeed
$ausgabe=$zahl+$wort

<das was hier zwischen muss fehlt mir>

$Freeeed100001=XXX

Hubsi

BeitragSo, Okt 30, 2005 23:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, sowas gibts in BB nicht. Aber Schleifen gibts auch in BB Wink Sei es nun zum befüllen oder zur Ausgabe der Werte:BlitzBasic: [AUSKLAPPEN]
For variable=0 To 1000
array(variable)=Rand(1,200)
Print array(variable)
Next
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

onkelz89

BeitragSo, Okt 30, 2005 23:41
Antworten mit Zitat
Benutzer-Profile anzeigen
das hilft mir leider nicht weiter

weil schau:
Code: [AUSKLAPPEN]

For haus.haus = Each haus
If haus\create = 10000001 Then
 varhaus10000001=0
 Delete haus.haus
endif
Next


das müsste ich jetzt für jede zahl machen... aber das muss doch einfacher gehen (ohne schleife sonst wär bei meinem spiel jedesmal ein ladebalken wenn man zu einem haus geht)

zum sinn von dem code da oben:
wenn ein haus erstellt wird kommt die variable des jeweiligen hauses auf 1 wenn es gelöscht wird muss es auch wieder auf 0 klar... damit es nicht nochmal gelöscht wird und andersrum damit es nicht mehrmals erstellt wird
 

feider

ehemals "Decelion"

BeitragSo, Okt 30, 2005 23:56
Antworten mit Zitat
Benutzer-Profile anzeigen
ach so meinst du das!
ok, da kann ich dir nicht helfen.
 

Florian

BeitragMo, Okt 31, 2005 0:10
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]


Type VarTyp
Field Name$
Field Wert$
End Type

Global Var.VarTyp

VarNew \"X$\",\"Test1$\"
VarNew \"Y$\",\"Test2\"
VarADD \"X$\",\"Y$\",\"E$\"

Print VarWert$(\"E$\")

RenameVar2 \"E$\",\"X$\"
Print VarWert$(\"Test1$\")

WaitKey

Function VarNew(V$,Wert$)
Var=New VarTyp
Var\Name$=V$
Var\Wert$=Wert$
End Function

Function VarWert$(V$)
For Var=Each VarTyp
If Var\Name$=V$ Then
Return Var\Wert$
EndIf
Next
End Function

Function DeleteVar(V$)
For Var=Each VarTyp
If Var\Name$=V$ Then
Delete Var
EndIf
Next
End Function

Function RenameVar(V1$,VarName$)
For Var=Each VarTyp
If Var\Name$=V1$ Then
Var\Name$=VarName$
Return True
EndIf
Next
End Function

Function RenameVar2(V1$,V2$)
For Var=Each VarTyp
If Var\Name$=V2$ Then
Wert$=Var\Wert$
Exit
EndIf
Next

For Var=Each VarTyp
If Var\Name$=V1$ Then
Var\Name$=Wert$
Return
EndIf
Next
End Function

Function VarADD(V1$,V2$,V3$)
For Var=Each VarTyp
If Var\Name$=V1$ Then
Var1Wert$=Var\Wert$
EndIf

If Var\Name$=V2$ Then
Var2Wert$=Var\Wert$
EndIf

If Var\Name$=V3$ Then
Ergibnis.VarTyp=Var
End If
Next

If Ergibnis=Null Then
VarNew V3$,Var1Wert$+Var2Wert$
Else
Ergibnis\Wert$=Var1Wert$+Var2Wert$
End If
End Function

  • Zuletzt bearbeitet von Florian am Mo, Okt 31, 2005 0:25, insgesamt 2-mal bearbeitet

Mr.Keks

BeitragMo, Okt 31, 2005 0:13
Antworten mit Zitat
Benutzer-Profile anzeigen
was genau ist hier jetzt eigentlich los? *irritation*


blitzarrays gehen doch...
Code: [AUSKLAPPEN]
local objekt[1000]
objekt[zahl-100000]=1 --> objekt[100001-1000000]=1  --> objekt[1]=1



Code: [AUSKLAPPEN]
$zahl=1000001;
$ausgabe="objekt$zahl";
echo$ausgabe;
das geht auch 1:1 nach bb zu übertragen..
Code: [AUSKLAPPEN]
zahl%=1000001
ausgabe$="objekt"+zahl
print $ausgabe


Code: [AUSKLAPPEN]
For haus.haus = Each haus
If haus\create = 10000001 Then
 varhaus10000001=0
 Delete haus.haus
endif
Next




zu dem hausproblem:
Code: [AUSKLAPPEN]
Type haus
 Field id
 Field text$
End Type

Local haeuser.haus[1000]

h.haus = New haus
h\id = 230
h\text = "hello world"
haeuser[h\id] = h

;jetzt kann man direkt auf das haus zugreifen über haeuser

Print haeuser[230]
Delete haeuser[230]


Ungetesteter Code, im Fenster geschrieben...
MrKeks.net
 

onkelz89

BeitragMo, Okt 31, 2005 2:28
Antworten mit Zitat
Benutzer-Profile anzeigen
ok vielen dank Very Happy Very Happy Very Happy

klappt jetzt so ziemlich alles

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group