Typenamen per Input

Übersicht BlitzBasic Allgemein

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

Brotenkopf

BeitragFr, Aug 12, 2011 9:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Type createbutton
   Field cube
   Field beschriftung$
   Field ausrichtung%
End Type

Function button(button$,beschr$,ausr%)
button$.createbutton=new createbutton
button$\cube=CreateCube()
ScaleEntity button$\cube,3,.5,.2

ausr%=button$\ausrichtung$
z%=7
If button$\ausrichtung$=1 Then PositionEntity button$\cube,0,5,y%
If button$\ausrichtung$=2 Then PositionEntity button$\cube,0,-5,y%

beschr$=button$\beschriftung$

End Function


Ich wollte einfach eine art 3d Menü erstellen mit cubes auf die ich erstmal eine textur mit der beschriftung "neues spiel" zB packe
ausrichtung soll von 1-5 gehen und die funktion positioniert den button dann automatisch.

habe es auch mit arrays probiert

Code: [AUSKLAPPEN]
Type createbutton
   Field cube
   Field beschriftung$
   Field ausrichtung%
End Type

Dim start.createbutton(20)

Function button(id%,beschr$,ausr%)

start(id%) = New createbutton
start(id%)\cube=CreateCube()
ScaleEntity start(id%)\cube,3,.5,.2

ausr%=start(id%)\ausrichtung$
z=7
If start(id%)\ausrichtung$=1 Then PositionEntity start(id%)\cube,0,5,y%
If start(id%)\ausrichtung$=2 Then PositionEntity start(id%)\cube,0,-5,y%

beschr$=start(id%)\beschriftung$

End Function


dann erstellt er aber immer nur einen cube und positioniert ihn

ich hab schon länger nichts mehr mit bb gemacht. ich hoffe ihr habt verständnis falls ich mich blöd anstell^^

Midimaster

BeitragFr, Aug 12, 2011 10:25
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist aber jetzt ein ganz anderes Thema....und lässt sich ganz leicht ohne "Typnamen per Input" regeln.

Doch zunächst noch ein Hinweis zur Lesbarkeit deines Codes: der Code von dir liest sich verwirrend, weil die Bezeichnungen irreführend sind das Wort "CreateButton" hört sich mehr nach einer Funktion als nach einer Typbeschreibung an. Verwende doch lieber "ButtonTyp"

So, nun zum deinem Code-Beispiel 2. Das funktioniert doch schon, es feht nur eine Zeile mit der Du die Funktion dann auch aufrufst:

BlitzBasic: [AUSKLAPPEN]

....
End Type

Dim start.CreateButton(20)

Button 0,"Exit" , 1 ; <----- diese hier

Function button(id%,beschr$,ausr%)
.....


Ich hab den Code mal ein wenig umgeschrieben, damit die Bezeichnungen treffender sind. Du dimensionierst ein Array mit 5 MenuButton vom Typ ButtonTyp, dann kannst Du dann in der Funktion CreateButton zu jedem eine Instanz erstellen und die mit Startwerten füllen.

BlitzBasic: [AUSKLAPPEN]
Graphics3D 800,600

Type ButtonTyp
Field Cube
Field Beschriftung$
Field Ausrichtung%
End Type

Dim MenuButton.ButtonTyp(5)

MenuButton(0) = CreateButton ( "Exit" , 1)

MenuButton(1) = CreateButton ( "New Game" , 2 )



For i=0 To 1
Print MenuButton(i)\Beschriftung
Next

Print "ende"

Function CreateButton.ButtonTyp( Beschr$ , Ausr% )
loc.ButtonTyp=New ButtonTyp

loc\cube=CreateCube()
ScaleEntity loc\cube,3,.5,.2

loc\Ausrichtung=Ausr
loc\Beschriftung=Beschr

z%=7 ; hää?

If Ausr=1
PositionEntity loc\Cube,0,5,y%
ElseIf Ausr=2
PositionEntity loc\Cube,0,-5,y%
EndIf

Return loc

End Function




Mir ist nicht ganz klar, warum in deinem Code die Zuweisungen scheinbar falsch herum waren:

BlitzBasic: [AUSKLAPPEN]
ausr%=button$\ausrichtung$  ; und warum "$"  ???


meiner Meinung nach willst du es doch so zuweisen:

BlitzBasic: [AUSKLAPPEN]
locButton\Ausrichtung=Ausr

Brotenkopf

BeitragFr, Aug 12, 2011 12:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal entschuldige ich mich für den verwirrenden Code. wie gesagt ich hab ziemlich lange nichts mehr mit bb gemacht oder allgemein etwas programmiert Smile.

z% sollte einfach nur die entfernung des cubes von der kamera sein.Ich wollte mit der entfernung rumprobieren und nicht jedes mal bei positionentity einen anderen z wert angeben.

ausr%=button$\ausrichtung$ war ein schreibfehler. button$\ausrichtung%
der wert den ich in der Funktion definiere sollte sozusagen den wert ausrichtung des typs "createbutton" oder "buttontyp" annehmen.

Ich habe mich jetzt mit deinem Code etwas beschäftigt und denke ich habe ihn verstanden und kann damit weiterarbeiten. Vielen Dank
Ich dachte mein Problem passt zu diesem Thema da ich ja für den Buttontyp selber einen Namen auswählen wollte. also in der Funktion Createbutton("beispiel",...)
der string name$ wäre dann "beispiel"
also würde die funktion dann erkennen Beispiel.Buttontyp = New Buttontyp
tut mir leid es fällt mir ziemlich schwer das korrekt auszudrücken.

Midimaster

BeitragFr, Aug 12, 2011 12:26
Antworten mit Zitat
Benutzer-Profile anzeigen
zu"z%":

ja, aber im "PositionEntity start(id%)\cube,0,5,y% " kommt ja dann plötzlich "y%" vor ?!?


zu den Namen nochmal:

natürlich kannst Du statt ...

BlitzBasic: [AUSKLAPPEN]
MenuButton(0) = CreateButton ( "Exit" , 1)


genausogut....

BlitzBasic: [AUSKLAPPEN]
ExitButton = CreateButton ( "Exit" , 1)


..verwenden.


Die Funktionweise "Typenamen per Input" , nach der Du urpsrünglich gesucht hattest, wäre ja nur notwendig, wenn der End-User den Variablennamen einer Typ-Instanz ändern können sollte.

Solange Du ihn schon während der Codephase kennst, kannst du ja gleich die Variable so nennen:

BlitzBasic: [AUSKLAPPEN]
ExitButton = CreateButton ( "Exit" , 1)

Brotenkopf

BeitragFr, Aug 12, 2011 12:40
Antworten mit Zitat
Benutzer-Profile anzeigen
ja dann war die Variable "y%" wohl auch ein Schreibfehler. tut mir leid. beim nächsten mal wenn ich einen Code poste pass ich besser darauf auf das ich keine falschen Variablennamen verwende.

Ich hab schon verstanden das der Benutzer dann den Typnamen eingibt.aber indirekt hatte es ja schon mit dem thema zutun und ich wollte nich extra ein neues Thema öffnen.
Ich bedanke mich trotzdem nochmal es klappt alles super jetzt Smile

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group