This PlayBASIC code demonstrates the use of **LinkedList** features for managing dynamic objects in a simple animation. Here's what the code does step-by-step:
1. Setup and Initialization:
- The program sets the frame rate to 60 frames per second (`setfps 60`).
- A type, `tAnimatedObject`, is defined to represent individual animated objects with attributes for position (`X#, Y#`), angle (`Angle#`), speed (`Speed#`), and color (`Colour`).
2. Dynamic Object Creation:
- When the left mouse button is pressed (`if mb=1`), a new `tAnimatedObject` is created and added to the `LinkedList`:
- The angle starts at `0`, representing the initial position.
- The speed of movement is set to `4.45`.
- A random color is assigned to the object (`rndrgb()`).
3. Object Animation:
- The objects are animated in a circular motion around the mouse pointer:
- The position of each object (`X#, Y#`) is calculated using trigonometric functions (`cos` and `sin`) based on its angle, spanning a radius of 100 pixels around the mouse.
- Each object's angle is incremented by its speed, causing it to move along the circular path.
4. Object Removal:
- If an object's angle exceeds 180 degrees, it is removed from the `LinkedList` (`if (angle# > 180) then Object = null`), simulating objects "disappearing" after completing their path on the left-hand side of the mouse pointer.
5. Visual Feedback:
- A circle is drawn around the mouse pointer to indicate the reference position.
- Each animated object is rendered as a circle with its assigned color at its calculated position (`circlec`).
- The angle of each object is displayed for debugging purposes.
6. Loop:
- The program continuously runs this logic in a loop, redrawing the screen (`cls` and `sync`) and updating all active objects.
Summary:
This demo creates and animates objects dynamically using PlayBASIC's **LinkedList** features. Objects are created when the mouse is clicked and move in a 180-degree arc around the mouse pointer, from the right-hand side to the left. They are removed from the list once they complete their arc. The code demonstrates dynamic object creation, animation, and memory management using `LinkedList` operations.
1. Setup and Initialization:
- The program sets the frame rate to 60 frames per second (`setfps 60`).
- A type, `tAnimatedObject`, is defined to represent individual animated objects with attributes for position (`X#, Y#`), angle (`Angle#`), speed (`Speed#`), and color (`Colour`).
2. Dynamic Object Creation:
- When the left mouse button is pressed (`if mb=1`), a new `tAnimatedObject` is created and added to the `LinkedList`:
- The angle starts at `0`, representing the initial position.
- The speed of movement is set to `4.45`.
- A random color is assigned to the object (`rndrgb()`).
3. Object Animation:
- The objects are animated in a circular motion around the mouse pointer:
- The position of each object (`X#, Y#`) is calculated using trigonometric functions (`cos` and `sin`) based on its angle, spanning a radius of 100 pixels around the mouse.
- Each object's angle is incremented by its speed, causing it to move along the circular path.
4. Object Removal:
- If an object's angle exceeds 180 degrees, it is removed from the `LinkedList` (`if (angle# > 180) then Object = null`), simulating objects "disappearing" after completing their path on the left-hand side of the mouse pointer.
5. Visual Feedback:
- A circle is drawn around the mouse pointer to indicate the reference position.
- Each animated object is rendered as a circle with its assigned color at its calculated position (`circlec`).
- The angle of each object is displayed for debugging purposes.
6. Loop:
- The program continuously runs this logic in a loop, redrawing the screen (`cls` and `sync`) and updating all active objects.
Summary:
This demo creates and animates objects dynamically using PlayBASIC's **LinkedList** features. Objects are created when the mouse is clicked and move in a 180-degree arc around the mouse pointer, from the right-hand side to the left. They are removed from the list once they complete their arc. The code demonstrates dynamic object creation, animation, and memory management using `LinkedList` operations.
PlayBASIC Code:
setfps 60 type tAnimatedObject X#,Y# Angle# Speed# Colour endtype Dim object as tAnimatedobject list do cls mx=mousex() my=mousey() mb=mousebutton() if mb=1 Object = new tAnimatedobject Object.Angle = 0 Object.Speed = 4.45 Object.Colour = rndrgb() flushmouse endif print "press mouse to create dynamic object" // draw a circle at mouse position circle mx,my,50,true for each object() angle#=Object.Angle // Animate object object.X#=mx+cos(angle#)*100 object.Y#=my+sin(angle#)*100 circlec object.x#,object.y#,50,true,object.colour angle#+=object.speed# Object.Angle=angle# print angle# if (angle#>180) then Object = null next Sync loop