Challenge: 
Version: 
1
Winner?: 
Yes
Code Snippet: 
`gravity cursor
`by Crit

set display mode 1024, 768, 32
hide mouse
sync on
sync rate 100

#constant numplanets 10
#constant minsize 6
#constant maxsize 20
#constant trailsize 5

type xy
 x as integer
 y as integer
endtype

type PlanetType
   size as integer
   x as integer
   y as integer
   xspeed as integer
   yspeed as integer
   angle as integer
endtype

dim planets(numplanets) as PlanetType

dim trail (numplanets, trailsize) as xy
index =1



position mouse 512, 384

cursorx=512
cursory=384

angle as float

for x=1 to numplanets
  planets(x).size = rnd (maxsize-minsize) + minsize
  planets(x).x=rnd(500)-250+cursorx
  planets(x).y=rnd(500)-250+cursory
  planets(x).xspeed = 0
  planets(x).yspeed = 0
  if rnd(1)=1 then angle=16 else angle=-16
  planets(x).angle = angle
  next x
ink rgb(255,255,255), rgb(0,0,0)

deltax as float
deltay as float
dist as float

do
cursorx=mousex()
cursory=mousey()
  cls

  for x=1 to numplanets
    size=planets(x).size

    ydistance=cursory-planets(x).y
    xdistance=cursorx-planets(x).x
    dist=(xdistance^2+ydistance^2)


    angle=atanfull(ydistance, xdistance)+planets(x).angle


    deltax=cos(angle)*2
    deltay=sin(angle)*2


    planets(x).xspeed=planets(x).xspeed+deltax
    planets(x).yspeed=planets(x).yspeed+deltay
    planets(x).x=planets(x).x+planets(x).xspeed
    planets(x).y=planets(x).y+planets(x).yspeed

    trail(x, index).x=planets(x).x
    trail(x, index).y=planets(x).y
   next x


   for x=1 to numplanets
    ink rgb(100,0,100), rgb(0,0,0)
    for y= 0 to trailsize
      circle trail(x,y).x,trail(x,y).y,planets(x).size
    next y
    ink rgb(255,255,255), rgb(0,0,0)
    circle planets(x).x, planets(x).y, planets(x).size
   next x


   circle cursorx,cursory, 5
   index = (index + 1) mod (trailsize+1)
   sync
 loop