Frage zu Array und For-Schleife
Übersicht

ClayCBetreff: Frage zu Array und For-Schleife |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Also ich will das eine For-Schleife raufzählt Code: [AUSKLAPPEN] For i=1 to 10
Danach sollen die Werte der Arrays A1[0] - A10[0] ausgegebn werden aber ich bin mir nicht sicher wie das geht print A(i)[0] würde mir da auf die Schnelle einfallen, aber kA wie ich das in BlitzMax umsetze |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Blitz3d / Plus
Code: [AUSKLAPPEN] For i = 1 to 10
print a$(i) next Denk ned das es viel anders is in Bmax mfg |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ozzi, wenn du keine Ahnung hast, dann halte dich einfach mal da raus!
ClayC: Sieht für mich nach Array im Array aus! Code: [AUSKLAPPEN] Local Array:Int[10][10]
Local Count:Int = 100 'füllen: For Local i:Int = 0 Until 10 For Local j:Int = 0 Until 10 Array[i][j] = Count + i Next Next 'ausgeben von Index 0 in die Konsole: For Local i:Int = 0 Until 10 Print Array[i][0] Next Zumindest nehme ich mal an, dass du sowas meinst. Es wird aus deiner Fragestellung nicht ganz klar. P.S.: Bin gerade auf der Arbeit und kann das nicht testen, also ist das ohne Gewähr! |
||
ClayC |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
dein Code funktioniert so nicht...
Aber ich glaub dass ich meine Frage ein bisschen präziser stellen sollte. Code: [AUSKLAPPEN] Local A1:String[]=["60","480","2","1"]
Local A2:String[]=["120","480","3","2"] Local A3:String[]=["180","480","4","3"] Local A4:String[]=["240","480","5","4"] Hier werden die Arrays definiert. Gibt 64 von diesen Arrays daher fällt eine einfache If-Abfrage weg. Es geht darum das ich in der For Schleife gezählt wird und in der Schleife mit einer if anweisung verglichen wird welches Array ich haben will. Code: [AUSKLAPPEN] For u=0 To 64
If Eingabe=A(u) DrawImage Figur,A(u)[0], A(u)[1] EndIf Next Irgendwie so hätt ich mir das vorgestellt Es wird in ein Textfeld z.B. A1 eingegeben und danach soll an eine bestimmte Position ein Bild gezeichnet werden und daher brauche ich die ersten beiden Werte aus dem Array also z.B. A1[0] und A1[1] als x und y Position. |
||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also möchtest du den Variabelnamen des Arrays abfragen? Nee du, dass wir nicht funktionieren. Da bleibt dir wirklich nur Array im Array, so wie ich es oben gezeigt habe. Schau mal in der BlitzMax-Hilfe, da wird es gezeigt. | ||
![]() |
Suco-XBetreff: ..... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mal abgesehen davon dass das, was du vorhast, sicher 100 mal besser gelöst werden könnte, möchte ich dennoch auf deinen Weg eingehen und dir eine (wie ich finde) ganz nützliche Alternative zu den mehrdimensionalen Arrays (Die du benötigen würdest) bieten.
Code: [AUSKLAPPEN] Strict Type TEntry Field x:Int, y:Int Field ka:Int, ka2:Int Function Create:TEntry(x:Int, y:Int, ka:Int, ka2:Int) Local instance:TEntry instance = New TEntry instance.x = x instance.y = y instance.ka = ka instance.ka2 = ka2 Return instance End Function End Type Local map:TMap = New TMap map.insert("A1", TEntry.Create(60,480,2,1)) map.insert("A2", TEntry.Create(120,480,3,2)) map.insert("A3", TEntry.Create(180, 480, 4,3)) map.insert("A4", TEntry.Create(240,480,5,4)) Local eingabe:String = "A1" If map.contains(eingabe) Local Entry:TEntry Entry = TEntry(map.valueForKey(eingabe)) Print "X: "+Entry.x Print "Y: "+Entry.y Print "KA: "+Entry.ka Print "KA2: "+entry.ka2 EndIf |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
ClayC |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: Mal abgesehen davon dass das, was du vorhast, sicher 100 mal besser gelöst werden könnte, möchte ich dennoch auf deinen Weg eingehen und dir eine (wie ich finde) ganz nützliche Alternative zu den mehrdimensionalen Arrays (Die du benötigen würdest) bieten.
Ok danke soweit ist dein Code eine ziemlich gute Lösung, aber wie sehen andere Alternativen aus wenn du meinst das man das ganze leichter lösen kann. Ich bin für alle Vorschläge offen ![]() |
||
![]() |
Suco-XBetreff: ...... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Um dir eine Alternative zu zeigen, müsste ich zuerst mal wissen was du überhaupt vorhast. Wenn ich mir folgendes durchlese
Zitat: Irgendwie so hätt ich mir das vorgestellt Es wird in ein Textfeld z.B. A1 eingegeben und danach soll an eine bestimmte Position ein Bild gezeichnet werden und daher brauche ich die ersten beiden Werte aus dem Array also z.B. A1[0] und A1[1] als x und y Position. und die Zahl 64 in deinem obigen Posts betrachte, kommt mir der Verdacht, dass du vielleicht ein Schachspiel programmieren willst? Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
ClayC |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: und die Zahl 64 in deinem obigen Posts betrachte, kommt mir der Verdacht, dass du vielleicht ein Schachspiel programmieren willst?
Dein Verdacht war richtig! ![]() Es geht mir um die Steuerung der Figuren (welche als Funktionen deklariert werden) Ich hab 2 textfelder in denen ich die Startposition und die Endposition eingeben z.B: A1-A3 also den Turm von A1 auf das Feld A3 In A1 steht dann die x und y pos wo die Figur hingezeichnet wird, die 3 Zahl welche Figur und die 4 Zahl is die Feldnummer. Code: [AUSKLAPPEN] Local A1:String[]=["60","480","2","1"]
Das ist aus meinem alten Code also xposition ist 60, yposition ist 480 (linke untere Ecke), 2 ist der Turm und A1 hat die Feldnummer 1 die wird dann benötigt um die Zugmöglichkeiten der Figuren zu bestimmen. |
||
![]() |
Suco-XBetreff: ..... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi.
Du solltest dir das Schachbrett wie ein zweidimensionales Array vorstellen und es auch so behandeln. Das heißt, du erstellst ein zweidimensionales Array mit der Größe von 8*8 und für jedes Feld in diesem Array legst du Daten an die du für das jeweilige Feld auf dem Schachbrett verwenden willst. Ich habe da kurz einen kleinen Code zusammengebaut der dir das besser veranschaulichen soll: Code: [AUSKLAPPEN] Strict Const FELD_GROESSE:Int = 64 Type TSchachfeld Field farbe:Int Field figur:Int Field name:String End Type Type TSchachbrett Field feldDaten:TSchachfeld[8,8] Field bild:TImage Function Create:TSchachbrett(bild:TImage) Local instance:TSchachbrett instance = New TSchachbrett instance.bild = bild instance.reset() Return instance End Function Method draw() DrawImageRect bild, 0,0,FELD_GROESSE*8, FELD_GROESSE*8 End Method Method reset() Local names:String[] = ["a", "b", "c", "d", "e", "f", "g", "h"] Local farbe:Int = 0 For Local y:Int = 0 Until 8 For Local x:Int = 0 Until 8 feldDaten[x,y] = New TSchachfeld feldDaten[x,y].name = names[x]+String(8-y) feldDaten[x,y].farbe = farbe farbe = 1-farbe Next farbe = 1-farbe Next End Method Method feldAusgabe(fx:Int, fy:Int) Local feld:TSchachfeld Local str:String feld = feldDaten[fx,fy] If feld.farbe str = "weiss" Else str = "Schwarz" EndIf Print "" Print "Feld Arrayindex(x/y): "+fx+" : "+fy Print "Name: "+feld.name Print "Farbe: "+str End Method End Type Graphics 64*8, 64*8,0 Local bildSchachbrett:TImage = CreateImage(FELD_GROESSE*8, FELD_GROESSE*8) Local farbe:Int = 0 For Local x:Int = 0 Until 8 For Local y:Int = 0 Until 8 If farbe SetColor 255,255,255 Else SetColor 30,30,30 EndIf farbe = 1-farbe DrawRect x*FELD_GROESSE, y*FELD_GROESSE, FELD_GROESSE, FELD_GROESSE Next farbe = 1-farbe Next GrabImage(bildSchachbrett, 0,0) Cls SetColor 255,255,255 Local Brett:TSchachbrett = TSchachbrett.Create(bildSchachbrett) Repeat Cls If MouseHit(1) Local feldX:Int, feldY:Int feldX = MouseX()/FELD_GROESSE feldY = MouseY()/FELD_GROESSE brett.feldAusgabe(feldX, feldY) EndIf brett.draw() Flip Until KeyHit(KEY_ESCAPE) Wenn du auf ein Feld auf dem Schachbrett klickst, werden dir dessen Daten ausgegeben. Viele Sachen wie Position usw. ergeben sich halt automatisch aus dem Aufbau. So wirds im Grunde gemacht, hoffe ich konnte dich auf neue Idee bringen. Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
ClayC |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok vielen dank, werd mir die nächsten paar Tage überlegen welche Variante ich wählen werde obwohl mir der Code mit dem Type mehr zusagt, das mit den zweidimensionalen Arrays hab ich schon öfters gelesen aber aus irgendwelchen Gründen is mir die Methode unsympatisch ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group