Für allgemeine Fragen zur Programmierung mit PureBasic.
Drago
Beiträge: 148 Registriert: 02.02.2010 18:22
Computerausstattung: Win XP SP3, AMD Sempron (MMX) 1.2 GHz, 512 MB, Nvidia GeForce FX 5200, 128 MB, DirectX 9.0c
Wohnort: Westerwald
Beitrag
von Drago » 28.07.2013 12:16
Hallo Leute...
Ich möchte in einer Procedure eine Berechnung machen, die für viele/mehrere structurierte Listen
gebraucht wird.
Grundlegend weiß ich wie ich das mit EINER Liste machen kann.
Und ich weis auch, das ich das auf eine andere Art lösen könnte.
Mich interresiert es nur, wegen dem Pointergedöns....
Als Beispiel:
Code: Alles auswählen
;---------------------------------------- PseudoCode ---------------------------------------------------
#StartX = 512
#StartY = 384
Global Factor = 0.016
Structure Pos
x.f
y.f
angle.f
speed.f
EndStructure
Structure Sphaere Extends Pos
sphaere.i
EndStructure
Structure Smoke Extends Sphaere
smoke.i
EndStructure
Global NewList Sphaere.Sphaere()
Global NewList Smoke.Smoke()
;-----------------------------------------------------------------------
; Wie kann ich diese Procedure so gestalten, das ich sie mit verschiedenen
; structurierten Listen anspringen kann ?
;------------------------------------------------------------------------
Procedure SetXY_Position( *Zeiger.i )
*Zeiger\x + Cos( Radian( *Zeiger\y ) ) * *Zeiger\Speed * Factor
*Zeiger\x + Cos( Radian( *Zeiger\y ) ) * *Zeiger\Speed * Factor
EndProcedure
Procedure MoveObjekt()
SetXY_Position( @Sphaere() ); so ist es wohl falsch... :-(
SetXY_Position( @Smoke() )
EndProcedure
STARGÅTE
Kommando SG1
Beiträge: 7039 Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:
Beitrag
von STARGÅTE » 28.07.2013 12:20
Wenn du Zeicher noch die Structure gibst, ist es doch richtig (wenn man dann noch den Inhalt ändert ^^).
Code: Alles auswählen
Procedure SetXY_Position( *Zeiger.Pos )
*Zeiger\x + Cos( Radian( *Zeiger\Angle ) ) * *Zeiger\Speed * Factor
*Zeiger\y + Sin( Radian( *Zeiger\Angle ) ) * *Zeiger\Speed * Factor
EndProcedure
Drago
Beiträge: 148 Registriert: 02.02.2010 18:22
Computerausstattung: Win XP SP3, AMD Sempron (MMX) 1.2 GHz, 512 MB, Nvidia GeForce FX 5200, 128 MB, DirectX 9.0c
Wohnort: Westerwald
Beitrag
von Drago » 28.07.2013 12:33
VIELEN Dank... und ich rödel mir hier einen ab...nee, nee...
Hier die funktionierende Version:
Code: Alles auswählen
;----------------------------------------- Funktionierender Code -----------------------------------------------
#StartX = 512
#StartY = 384
Global Factor = 0.016
Structure Pos
x.f
y.f
angle.f
speed.f
EndStructure
Structure Sphaere Extends Pos
sphaere.i
EndStructure
Structure Smoke Extends Sphaere
smoke.i
EndStructure
Global NewList Sphaere.Sphaere()
Global NewList Smoke.Smoke()
Global Factor = 2
Procedure SetXY_Position( *Zeiger.Pos )
*Zeiger\x + Cos( Radian( *Zeiger\angle ) ) * *Zeiger\Speed * Factor
*Zeiger\y + Sin( Radian( *Zeiger\angle ) ) * *Zeiger\Speed * Factor
EndProcedure
Procedure CreateSphaere()
AddElement( Sphaere() )
With Sphaere()
\sphaere = Sprite1
\x = #StartX
\y = #StartY
\angle = Random( 360 )
\speed = 200
EndWith
EndProcedure
Procedure CreateSmoke()
AddElement( Smoke() )
With Smoke()
\smoke = Sprite2
\x = 18
\y = 30
\angle = Random( 360 )
\speed = 30
EndWith
EndProcedure
Procedure MoveObjekt()
SetXY_Position( @Sphaere() )
SetXY_Position( @Smoke() )
EndProcedure
CreateSphaere()
CreateSmoke()
Debug " Alte Werte"
Debug " -----Sphaere ------"
ForEach Sphaere()
Debug "\x = " + StrF( Sphaere()\x )
Debug "\y = " + StrF( Sphaere()\y )
Next
Debug ""
Debug "----- Smoke -------"
ForEach Smoke()
Debug "\x = " + StrF( Smoke()\x )
Debug "\y = " + StrF( Smoke()\y )
Next
MoveObjekt()
Debug ""
Debug " Neue Werte"
Debug " -----Sphaere ------"
ForEach Sphaere()
Debug "\x = " + StrF( Sphaere()\x )
Debug "\y = " + StrF( Sphaere()\y )
Next
Debug ""
Debug "----- Smoke -------"
ForEach Smoke()
Debug "\x = " + StrF( Smoke()\x )
Debug "\y = " + StrF( Smoke()\y )
Next