Der Listeninhalt wird nicht komplett angezeigt [gelöst]
Übersicht

![]() |
KlipBetreff: Der Listeninhalt wird nicht komplett angezeigt [gelöst] |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo zusammen!
Ich probiere gerade, für eine Bekannte eine Art Memory zu programmieren. Für die Karten nutze ich Types. Vor der Hauptschleife werden die Karten erstellt, mit TCard.deal_cards(5). In der Hauptschleife selbst zeichne ich den Inhalt der Liste mit Code: [AUSKLAPPEN] For Local card:TCard = EachIn cardlist
card.draw() Next Und so sehen dann die ominösen Methoden/Funktionen deal_cards und draw aus: Code: [AUSKLAPPEN] Function deal_cards(number:Int) For Local i = 1 To number Global card:TCard = New TCard card.id = i card.img = LoadImage("gfx/s/s"+i+".png") card.back = LoadImage("gfx/s/c_back.png") card.vis = True card.found = False card.x = i+Rnd(10,100) card.y = i*20 ListAddLast(cardlist, card) DebugLog("added card number: "+i+"") Next EndFunction Method draw() DrawImage img,x,y EndMethod Beide befinden sich innerhalb von TCard. Alle Karten (in diesem Fall 5) werden geladen. Allerdings wird immer nur die letzte Karte gezeichnet. Ich verstehe nicht wieso. Ich weise doch dem x-Wert jeweils einen Zufallswert zu. Also müssten alle Karten zu sehen sein und können sich nicht überlappen. Kann mir jemand sagen, was ich hier falsch mache? Liebe Grüße klip |
||
- Zuletzt bearbeitet von Klip am Fr, Jul 20, 2007 16:03, insgesamt einmal bearbeitet
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du tust eine Variable doppelt deklarieren:
Einmal mit: Code: [AUSKLAPPEN] For Local card:TCard = EachIn cardlist
in der Hauptschleife, und einmal in der Funktion deal_cards(): Code: [AUSKLAPPEN] For Local i = 1 To number
Global card:TCard = New TCard Als Globale... Du kannst in keiner schleife eine Variable neudeklarieren, schongarnicht eine Globale. Benutzte mal lieber SuperStrict, dann passiert dir sowas nicht mehr ![]() |
||
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7 |
![]() |
Klip |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habe die lokale Variable umbenannt. Bewirkt leider nichts. Immer noch dasselbe Problem =/ | ||
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ergänze auch mal das:
Code: [AUSKLAPPEN] Function deal_cards(number:Int) For Local i = 1 To number Global card:TCard = New TCard Durch das: Code: [AUSKLAPPEN] Function deal_cards(number:Int) Local card:TCard For Local i = 1 To number Edit: Und card.back = LoadImage("gfx/s/c_back.png") würd ich mal ganz schnell abändern, du brauchst ein und das selbe Bild nicht x-Mal laden ![]() |
||
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
mit dem local in der loop sollts gehen.
Global ist an sich auch korrekt, hat jedoch eine elementar andere bedeutung, denn es erzeugt eine statische variable die mit global ... = new ... direkt dort festgelegt wird und sich während der gesamten Laufzeit nicht mehr ändert (wenn das new in einer extra zeile ist, wird sie immer wieder neu initialisiert) Auch ist eine global in einer funktion oder einem scope allgemein keine programm globale. Was passiert denn jetzt nachdem du global durch local ersetzt hast? (angenommen natürlich ganz oben in deinem programm steht strict oder superstrict, ohne kannst du dir local sparen ...) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Klip |
![]() Antworten mit Zitat ![]() |
---|---|---|
Stimmt mit dem Bild, danke Reaper ^^
Ja, das war es, Dreamora! Das Local in der Create-Funktion hat geholfen. Vielen Danke euch beiden. Wieder etwas dazugelernt =) |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group