Flexible Variablennamen möglich?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Backbuffer

Betreff: Flexible Variablennamen möglich?

BeitragMo, Jun 04, 2007 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute,

ich habe ein Problem, dass mich wahrscheinlich als Anfänger outet Sad . Ich möchte gerne den Namen einer Variablen mit einem Zahlenwert einer anderen Variablen verknüpfen.

Ich schreibe gerade einen Map-Editor bei dem ich verschiedene Tilesets (1-3) habe die der Benutzer auswählen kann. Dementsprechen gibt es die Variablen Graphikset1, Graphikset2 und Graphikset3.

Ich suche nun eine Funktion mit der ich sozusagen die Variable GraphiksetX aufrufen kann, wobei X das ausgewählte Tileset (also 1,2 oder 3) ist.

Ist sowas möglich?

Danke für die Hilfe

Holzchopf

Meisterpacker

BeitragMo, Jun 04, 2007 16:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, Dim macht sowas möglich, nennt sich Array...

Guck dir sonst noch das Variablen und Felder Tutorial auf der selben Seite an.

MfG
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

BladeRunner

Moderator

BeitragMo, Jun 04, 2007 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, da BB compiliert wird. es müssen alle Namen explizit bekannt sein. Abhilfe wäre ein scriptsystem oder aber das gute alte Array.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Jun 04, 2007 16:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie wäre es mit einem Array
Code: [AUSKLAPPEN]

Graphikset(1) ;usw

damit geht das...
[BB2D | BB3D | BB+]
 

Backbuffer

BeitragMo, Jun 04, 2007 16:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Holzchopf hat Folgendes geschrieben:
Ja, Dim macht sowas möglich, nennt sich Array...

Guck dir sonst noch das Variablen und Felder Tutorial auf der selben Seite an.

MfG


Na klar, das Array. Hab's schon dutzende Male in meinem Programm verwendet, aber ich bin hier nicht auf die Idee gekommen einfach ein eindimensionales Array zu verwenden Rolling Eyes .

Aber Danke für den Hinweis, jetzt weiß ich bescheid.

Edit: Also irgenwie kriege ich dass doch nicht gebacken. Tja zu früh gefreut. Am besten ich kopiere mal die Zeilen.


Global gfxtileset1 = LoadAnimImage ("tileset.bmp",50,50,0,45)
Global gfxtileset2 = LoadAnimImage ("units.bmp",50,50,0,90)
;hier sind die tilesets


Function drawtileset()
; und hier werden sie gemahlt, wie man sieht erfolgt die Auswahl ziemlich behindert mit if then Schleifen

If actualtileset = 1 Then
n=-1
For x = 0 To 2
For y = 0 To 14
n=n+1
DrawImage gfxtileset1,x*50+874,y*50+18,n
Next
Next
End If
;zeichnet die Terrainbilder

If actualtileset = 2 Then
n=-1

For x = 0 To 2
For y = 0 To 14
n=n+1
DrawImage gfxtileset2,x*50+874,y*50+18,n
Next
Next
End If
End Function

;was ich brächte wäre eine Befehl gfxtilset + actualtileset. aus den gfxtilests arrays zu machen hat mit dem syntax irgendwie nicht geklaptt.
 

Lador

BeitragMo, Jun 04, 2007 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, du musst doch einbauen, dass wenn die Variable "n" größer als max_frames (das ist die Anzahl der Frames deines Bildes), n = 0 ist, also 45 bzw. 90, oder?

MFG Lador
 

Backbuffer

BeitragMo, Jun 04, 2007 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Lador hat Folgendes geschrieben:
Hi, du musst doch einbauen, dass wenn die Variable "n" größer als max_frames (das ist die Anzahl der Frames deines Bildes), n = 0 ist, also 45 bzw. 90, oder?

MFG Lador


Ist schon drinne, n fängt immer bei -1 an und wird genauso oft durchgespult wie es frames gib.

Das Programm funktioniert einwandfrei, ich hätte nur gerne die if-then Schleifen beseitigt.
 

Lador

BeitragMo, Jun 04, 2007 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok sorry, dann mach das so:

- Mach ein Dim-Feld.
- Da speicherste dann die Tilesets (1,2 und 3).
- Dann machste eben:

Code: [AUSKLAPPEN]
For x = 0 To 2
 For y = 0 To 14
  DrawImage gfxtileset(actual_tileset), x*50+874,y*50+18,n
  n = n + 1
 Next
Next


- Das spart dir das n = -1, sowie eine 2. If-Abfrage^^.

Hoffe, das hilft dir.

MFG Lador
 

Backbuffer

BeitragMo, Jun 04, 2007 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für den Vorschlag. ABer irgendwie bekomme ich das mit dem Syntax nicht hin die gfxtileset in ein dim zu speicher und gleichzeitig damit loadanim auszuführen.

skey-z

BeitragMo, Jun 04, 2007 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
schau dir mal die Befehle in der Onlinehilfe an, Loadanimimage gibt einen Wert zurück, den du in das array Grafikset(x) lädst.

beim laden musst du das aktuelle Grafikset angeben und das dazugehörige image, zb so

Drawimage Grafikset(akt_set), x-pos, y_pos, AnimImage_Index
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

Backbuffer

BeitragMo, Jun 04, 2007 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen, vielen Dank an alle. Hab's jetzt endlich geschafft.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group