Code: Select all
#include "fbgfx.bi"
Using FB
Const xres = 800
Const yres = 600
Const MaxCircles = 50
Screenres xres, yres, 32
Type TCircle
x As Single
y As Single
angle As Single
r As Single
isColliding As Integer
End Type
Dim Shared As TCircle Circles(MaxCircles)
Sub Init()
For i As Integer = 0 To MaxCircles - 1
Circles(i).x = Rnd * xres
Circles(i).y = Rnd * yres
Circles(i).angle = Rnd * 6.28
Circles(i).r = 10 + (Rnd * 20)
Next
End Sub
Sub Update()
For i As Integer = 0 To MaxCircles - 1
Circles(i).isColliding = 0
Circles(i).x += Cos(Circles(i).angle)
Circles(i).y += Sin(Circles(i).angle)
If Circles(i).x > xres Or Circles(i).x < 0 Or Circles(i).y > yres Or Circles(i).y < 0 Then
Circles(i).x = Rnd * xres
Circles(i).y = Rnd * yres
Circles(i).angle = Rnd * 6.28
Circles(i).r = 10 + (Rnd * 20)
End If
Next
For i As Integer = 0 To MaxCircles - 2
For j As Integer = i + 1 To MaxCircles - 1
Dim As Single dx = Circles(i).x - Circles(j).x
Dim As Single dy = Circles(i).y - Circles(j).y
Dim As Single dist = Sqr(dx*dx+dy*dy)
If dist < Circles(i).r + Circles(j).r Then
Circles(i).isColliding = 1
Circles(j).isColliding = 1
End If
Next
Next
End Sub
Sub Render()
For i As Integer = 0 To MaxCircles - 1
If Circles(i).isColliding = 0 Then Circle (Circles(i).x, Circles(i).y), Circles(i).r Else Circle (Circles(i).x, Circles(i).y), Circles(i).r, Rgb(255, 0, 0)
Next
End Sub
Init()
Do
Update()
Screenlock
Cls
Render()
Screenunlock
Sleep 1
Loop Until Multikey(SC_ESCAPE)