Seite 2 von 2
hilfe durchblick
Verfasst: 21.10.2008 18:55
von xverbatim
Hi Stargate,
ich glaube auch, das ich da irgendwie in die falsche Richtung denke, aber ehrlich gesagt, klar ist mir die Sache ...sorry...immernoch nicht...
muß ich denn bei meinem Vorhaben nicht die Variablen als Global deklarieren ?
ich blick da nicht durch
Mit einem Sprite bekomme ich die Sache ja zum laufen (siehe unteren Code), sobald ich aber zwei nehme, klappt das mit den Variablen nicht mehr
hatte jetzt auch schon mit static in der Procedure was versucht, ging aber auch nicht...
For i = 1 to 9
Element(i)\x = Element(i)\x + 1
Next
Das verstehe ich ja schon, nur das Problem ist, das ich das alles in einer Procedure habe und da blick ich dann nicht mehr durch ;-(
Code: Alles auswählen
Global xw,y,xw2
Global flag,flag2
Procedure sprite_move(sprite,x,y,x2,y2,mode)
If flag=0
xw= x:flag=1
EndIf
If x2<> xw And flag<>2
xw=xw+1
EndIf
If x2=xw
flag=2
EndIf
If flag=2
xw=xw-1
EndIf
If xw=x And flag=2
flag=0
xw=x
EndIf
DisplaySprite(sprite,xw,y)
EndProcedure
Verfasst: 21.10.2008 19:40
von xverbatim
hat evtl. jemand ein beispielcode, wie ich eine procedure nutzen kann, die mir MEHRERE sprites von a nach b bewegt ?
move_sprite(nr1,vonx,nachx,100)
move_sprite(nr2,vonx,nachx,200)
usw.
ich kriege das so nicht gebacken ;-(
ein sprite ja, aber nicht mehrere ;-(
gruß tom
Verfasst: 21.10.2008 19:52
von Kaeru Gaman
jedes sprite braucht sein eigenes von/nach usw... alles was jedes eigenes braucht, muss in die Structure.
... dir wär kein Zacken aus der Krone gebrochen, wenn du dir das Waponez II example mal angeschaut hättest.
bissl Eigeninitiative tut nich weh.
Verfasst: 21.10.2008 20:15
von xverbatim
"jedes sprite braucht sein eigenes von/nach usw"
ist mir ja schon klar, nur das problem sind für mich die variablen, die ich ja durch den aufruf der procedure immerwieder verliere.
ich meine das so, wenn ich die procedure sprite_move(sprite,x,y,x2,y2,mode) aufrufe, dann habe ich ja die Startposition=x,y und die Entposition=x2,y2 erstmal der procedure übergeben, somit brauche ich dann ja auch mindestens zwei globale variablen, damit ich die positionen überhaupt ändern kann.
mir ist die ganze umsetzung nicht klar und da hilft mir das "Waponez II" auch nicht...sorry...deshalb wäre ein einfacher beispielcode der logisch nachvollziehbar ist, meiner meinung nach am sinnvollsten...
"bissl Eigeninitiative tut nich weh."
irgendwie daneben finde ich
Ich versuche jetzt schon seit gestern abend da durchzublicken und dann solche Kommentare...
Gruß
Tom
erstmal eine lösung gefunden
Verfasst: 21.10.2008 21:39
von xverbatim
Ich habe jetzt erstmal eine Lösung gefunden; wenn jemand eine elegantere Lösung hätte, vielleicht ja sogar mit Structures, würde ich mir das gerne ansehen wollen.
Danke+Gruß
Tom
Code: Alles auswählen
Global Dim xw(10)
Global Dim flags(10)
;
; bewegt einen Sprite von x nach x2 und wieder zurück
;
Procedure sprite_move(sprite,x,y,x2,y2,mode)
If flags(sprite)=0
xw(sprite)=x
flags(sprite)=1
EndIf
If flags(sprite)=1
xw(sprite)=xw(sprite)+1
EndIf
If xw(sprite)>x2
flags(sprite)=2
EndIf
If flags(sprite)=2
xw(sprite)=xw(sprite)-1
If xw(sprite)=x
flags(sprite)=0:xw(sprite)=x
EndIf
EndIf
DisplaySprite(sprite, xw(sprite),y)
EndProcedure
Re: erstmal eine lösung gefunden
Verfasst: 21.10.2008 22:01
von STARGÅTE
Code: Alles auswählen
Structure StrucName
xw.l
flags.l
EndStructure
Global Dim Array.StrucName(10)
;
; bewegt einen Sprite von x nach x2 und wieder zurück
;
Procedure sprite_move(sprite,x,y,x2,y2,mode)
If Array(sprite)\flags=0
Array(sprite)\xw=x
Array(sprite)\flags=1
EndIf
If Array(sprite)\flags=1
Array(sprite)\xw=Array(sprite)\xw+1
EndIf
If Array(sprite)\xw>x2
Array(sprite)\flags=2
EndIf
If Array(sprite)\flags=2
Array(sprite)\xw=Array(sprite)\xw-1
If Array(sprite)\xw=x
Array(sprite)\flags=0:Array(sprite)\xw=x
EndIf
EndIf
DisplaySprite(sprite, Array(sprite)\xw,y)
EndProcedure
so zum Beispiel

Verfasst: 21.10.2008 22:23
von xverbatim
Danke Stargate für die Mühe
ich glaube in Sachen "Structures" habe ich noch viel zu lernen.
Gruß Thomas