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 :freak:

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 :freak:

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