Circles Glow
Posted: Wed Dec 03, 2025 2:29 pm
Hi my new code 
Key with escape to quit and mouse with left button to speed in move 
Enjoy !
Happy coding !
Code: Select all
; ------------------------------------------
; Cercles violets avec Glow + Interaction
; ------------------------------------------
EnableExplicit
; Structure d'un cercle animé
Structure Circle
x.f
y.f
dx.f
dy.f
radius.f
EndStructure
Global Dim Circles.Circle(20) ; 21 cercles
Global speedBoost.f = 1.0 ; Multiplicateur de vitesse
; Initialisation des cercles
Procedure InitCircles()
Protected i
For i = 0 To ArraySize(Circles())
Circles(i)\x = Random(800)
Circles(i)\y = Random(600)
Circles(i)\dx = (Random(40) / 10.0 - 2.0)
Circles(i)\dy = (Random(40) / 10.0 - 2.0)
Circles(i)\radius = 10 + Random(20)
Next i
EndProcedure
; Mise à jour des positions
Procedure UpdateCircles()
Protected i
For i = 0 To ArraySize(Circles())
Circles(i)\x + Circles(i)\dx * speedBoost
Circles(i)\y + Circles(i)\dy * speedBoost
; rebond sur les bords
If Circles(i)\x < 0 Or Circles(i)\x > 800
Circles(i)\dx = -Circles(i)\dx
EndIf
If Circles(i)\y < 0 Or Circles(i)\y > 600
Circles(i)\dy = -Circles(i)\dy
EndIf
Next i
EndProcedure
; Dessin glow d’un cercle violet
Procedure DrawGlowCircle(x, y, r)
Protected i, alpha
For i = 10 To 0 Step -1
alpha = 12 * i
Circle(x, y, r + i * 2, RGBA(180, 0, 255, alpha))
Next i
Circle(x, y, r, RGBA(200, 0, 255, 255))
EndProcedure
; ------------------------------------------
; Programme principal
; ------------------------------------------
Define i.i, event.i
InitSprite()
InitKeyboard()
SetFrameRate(60)
If OpenWindow(0, 0, 0, 800/DesktopResolutionX(), 600/DesktopResolutionY(), "Cercles Glow", #PB_Window_ScreenCentered )
;OpenWindowedScreen(WindowID(0), 0, 0, 800, 600) : SetFrameRate(60) ;:
If StartDrawing(WindowOutput(0))
InitCircles()
StopDrawing()
EndIf
Repeat
event = WindowEvent()
; Gestion des événements souris
If GetAsyncKeyState_(#VK_LBUTTON)
speedBoost = 5.0
Else
speedBoost = 0.5
EndIf
; Mise à jour
UpdateCircles()
; Dessin
StartDrawing(WindowOutput(0))
Box(0, 0, 800, 600, RGB(0, 0, 0)) ; Effacer écran
;ClearScreen(RGB(0,0,0))
For i = 0 To ArraySize(Circles())
DrawGlowCircle(Circles(i)\x, Circles(i)\y, Circles(i)\radius)
Next i
StopDrawing()
FlipBuffers()
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
EndIf
End
Enjoy !
Happy coding !