# Bouncing Balls [Play Demo](/demos/start_bouncing_ball.html) Spawn colourful balls that bounce off screen edges. Demonstrates the `Property` descriptor for editor-visible values and basic frame-by-frame movement with `process()`. ## What You Will Learn - **Property** -- Declare editor-visible properties with validation ranges - **process(dt)** -- Per-frame update callback with delta time - **position** -- Move nodes by updating `self.position` each frame - **add_child()** -- Build a scene tree dynamically in `ready()` - **draw_circle()** -- Render filled circles ## How It Works `Ball` declares `radius` and `speed` as `Property` descriptors with value ranges. In `__init__`, a random velocity vector is created. Each frame, `process(dt)` advances the ball's position and reflects velocity when the ball hits a screen edge. `BouncingBalls` is the root node that spawns 8 `Ball` children in `ready()`, placing them at random positions. The parent also draws a title and ball count via `draw_text()`. ## Source Code ```{literalinclude} ../../packages/graphics/examples/start_bouncing_ball.py :language: python :linenos: ```