Problem mit Darstellen eines Feldes
Übersicht

![]() |
LeroyBetreff: Problem mit Darstellen eines Feldes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
leider habe ich mal wieder ein für mich nicht Lösbares Problem. Undzwar möchte ich vollgendes: Ein Objekt wird erstellt, (das ganze 6x) und die x und y Koardienaten gehen jewalls um +10 hoch. Sollte dann am Ende so ausehen: X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Hier mein Code dazu: Code: [AUSKLAPPEN] Graphics 800, 600, 0
Type zobjekt Global zlist:TList = New TList Field zobjekt_x Field zobjekt_Y EndType For i2 = 0 To 6 info:zobjekt = New zobjekt info.zobjekt_x = 20 + vari info.zobjekt_Y = 20 + vari2 ListAddLast zobjekt.zlist, info vari = vari + 10 vari2 = vari2 + 10 Next Repeat Flip Cls For i:zobjekt = EachIn zobjekt.zlist DrawRect info.zobjekt_x, info.zobjekt_Y, 10, 10 Next Until KeyHit(KEY_ESCAPE) End Leider wird mir immer nur das letzte Feld angezeigt ![]() I need help pls ^^ Mfg. Leroy |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du hast da ein Variablen Scope Problem.
Ohne Strict / SuperStrict wirst du häufig in solche Probleme rennen fürchte ich Am besten gewöhnst du dir SuperStrict an, damit du Typendeklarationen nicht vergisst. Das hier sollte gehen: Code: [AUSKLAPPEN] SuperStrict Graphics 800, 600, 0 Type zobjekt Global zlist:TList = New TList field _link:TLink Field x ' wozu das zobject_? es ist schon im type zobject drin Field y Method New() _link = zlist.addlast(self) end method ' Zerstört das Objekt soferns nur in dieser Liste ist ' TLink.remove() ist beträchtlich schneller als TList.remove() ' welches durch die ganze liste muss method destroy() _link.remove() _link = null end method Function drawObjects() for local t:zobject = eachin zlist DrawRect t.x, t.y, 10, 10 next end function EndType ' deine Zählerstruktur war falsch For local i:int= 0 To 5 for local j:int = 0 to 5 local info:zobjekt = New zobjekt info.x = 20 + i*10 info.y = 20 + j*10 ' das gleiche wie deine Zählerstruktur, bei 2D brauchst du i und j als zählervars next Next Repeat Cls zobject.drawObjects() flip Until KeyHit(KEY_ESCAPE) End |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
klepto2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Abgesehen davon, das Dreamora recht hat und du wirklich auf SuperStrict umsteigen solltest. Dazu etwas strukturierter programmieren wäre auch nicht verkehrt.
In deinem Code gibt es einen ganz entscheidenden Fehler. In deiner 'Draw' Schleife verwendest du i:zobject wobei du innerhalb der schleife aber info:zobject verwendest. dieses 'info' wurde aber in der erstellungs schleife deklariert und definiert. Somit zeichnest du in deiner letzten Schleife nur das letzte zobjekt. damit dein code funktioniert (Dreamoras Code wäre allerdings die sauberere Lösung): Code: [AUSKLAPPEN] For i:zobjekt = EachIn zobjekt.zlist DrawRect i.zobjekt_x, i.zobjekt_Y, 10, 10 Next |
||
Matrix Screensaver
Console Modul für BlitzMax KLPacker Modul für BlitzMax HomePage : http://www.brsoftware.de.vu |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group