Variable als String übergeben

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

nameit

Betreff: Variable als String übergeben

BeitragSa, Nov 07, 2015 15:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde gerne statt:

Drawimage red, posx, posy

Drawimage playerfarbe$(), posx, posy

verwenden, da in playerfarbe die farbe ermittelt werden soll.. Gibt es einen einfachen weg, das auf diesem Weg zu lösen oder muss ich mir was anderes einfallen lassen? ich denke das Drawimage, das eh ziemlich penibel ist was global und variabeldeklaration angeht nicht damit klarkommt einen String übergeben zu bekommen, evtl erwartet es etwas anderes, denn "red" kann es zeichnen aber nicht den Rückgabewert "red" aus player$()

Code: [AUSKLAPPEN]
Function zeichne() ; Zeichne
If a1x=True
    DrawImage player$(), 1, 1
End If

End Function



Function player$() ; Test Spielerfarbe als String festlegen
Select True
Case farbe=1
   farbesw$="red"
Case farbe=2
   farbesw$="blue"
Default
   farbesw$="red"
End Select

Return farbesw$
End Function


Es ist nur ein Teil des codes. Global farbe kommt mit entweder 1 oder 2 in der funktion an und der rest ist getestet.

Mathias-Kwiatkowski

BeitragSa, Nov 07, 2015 17:06
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaube returnen

ging so

Function.WelcherType(Functionsvariabeln)
return WelcherType
end function
Skype: Anarchie1984
http://projektworks.de/maxbase/
Icq - Erneuert am 21.08.2017
Yahoo - Erneuert am 21.08.2017

Holzchopf

Meisterpacker

BeitragSa, Nov 07, 2015 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich dich richtig verstehe (im Zusammenhang mit dem Titel), würdest du gerne einen String auf einen Variablennamen prüfen und deren Inhalt anpeilen. Das ist nicht möglich. Aber:

Bild-Handles sind auch nur Variablen und deren Inhalt in erster Linie nur ein Wert, nennen wir ihn mal Zeiger, der als Integer behandelt wird (werden kann).

Wenn du nun verschiedene Spieler-Bild-Variablen geladen hast (red, blue etc.), könnte deine Funktion so aussehen: BlitzBasic: [AUSKLAPPEN]
Function player()
; Wert von Global farbe prüfen (ist entweder 1 oder 2)
If farbe = 1 Then
; Wert (Bild-Handle) von red zurückgeben
Return red
Else
; Wert (Bild-Handle) von blue zurückgeben
Return blue
EndIf
End Function
red und blue müssen dann natürlich global sein und dein DrawImage-Aufruf würde einfach Code: [AUSKLAPPEN]
DrawImage player(), posx, posy
lauten.

Bezüglich Penibilität:
DrawImage erwartet genau folgende Parameter:
  • Bild-Handle (ein Integer-Wert), das zum Beispiel von CreateImage, LoadImage und Konsorten generiert und zurückgegeben wird
  • x-Koordinate (Integer)
  • y-Koordinate (Integer)
  • Optional: Frame (Integer)

Es spielt keine Rolle, ob die Werte als globale oder lokale Variablen oder gar als fester Zahlenwert (ausser beim Bild-Handle, weil es da nicht funktionieren wird) übergeben werden. Wichtig ist, dass der Datentyp jeweils kompatibel ist.

Es wäre übrigens auch eine andere Lösung denkbar, die ich hier einfach mal als Pseudo-Code präsentieren möchte BlitzBasic: [AUSKLAPPEN]
; den (besser lesbaren und verständlicheren) Konstanten
; SPIELER_ROT und SPIELER_BLAU werden eindeutige Werte
; zugewiesen
Const SPIELER_ROT = 0
Const SPIELER_BLAU = 1


; Die Bild-Handles werden in einem Array gespeichert,
; das für jedes Spieler-Bild Platz bietet
; (Blitz-Array mit zwei Einträgen, nämlich 0 und 1)
Global img_player[2]


; Beim Laden der Bilder werden die Handles bereits
; SPIELER_ROT und SPIELER_BLAU zugeordnet
img_player[SPIELER_ROT] = LoadImage(...)
img_player[SPIELER_BLAU] = LoadImage(...)


; Beim Zeichnen kannst du nun über die Namen
; SPIELER_ROT und SPIELER_BLAU die entsprechende
; Spieler-Farbe wählen oder alternativ den entsprechenden
; Wert übergeben, also
DrawImage img_player[SPIELER_ROT], posx, posy
; oder
DrawImage img_player[farbe], posx, posy


MfG
Holzchopf
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group