Import mojo Class circle Field x:Int,y:Int Field radius:Int Method New() radius = 2 Local exitloop:Bool=False While exitloop = False exitloop=True Self.x = Rnd(DeviceWidth) Self.y = Rnd(DeviceHeight) For Local i:=Eachin mycircle If i.x = x And i.y = y Then Else If circleoverlap( i.x,i.y,i.radius, x,y,2) = True Then exitloop=False End If End If Next Wend End Method Method grow() If x-radius<0 Then Return If x+radius>DeviceWidth Then Return If y-radius<0 Then Return If y+radius>DeviceHeight Then Return For Local i:=Eachin mycircle If i.x=x And i.y=y Then Else If circleoverlap( x,y,radius, i.x,i.y,i.radius) Return End If End If Next radius+=1 End Method Method draw() SetColor 255,255,255 DrawCircle x,y,radius SetColor 0,0,0 DrawCircle x,y,radius-2 End Method Function circleoverlap:Bool(x1:Int,y1:Int,r1:Int,x2:Int,y2:Int,r2:Int) Local dx:Int = x1-x2 Local dy:Int = y1-y2 Local r:Int = r1+r2 If dx*dx+dy*dy <= r*r Then Return True Else Return False End Function End Class Global mycircle:List<circle> = New List<circle> Class MyGame Extends App Field counter:Int Method OnCreate() SetUpdateRate(5) mycircle.AddLast(New circle()) End Method Method OnUpdate() If counter>100 Then Return For Local i=0 Until 5 mycircle.AddLast(New circle()) Next For Local i:=Eachin mycircle i.grow Next counter+=1 End Method Method OnRender() Cls 0,0,0 SetColor 255,255,255 For Local i:=Eachin mycircle i.draw Next End Method End Class Function Main() New MyGame() End Function
Artificial intelligence/templates/examples/rts/rpg/strategy ect. in MonkeyX/CerberusX language. You can download the free version of MonkeyX from itch.io or Cerberus-x.com The Flash applets will stop working in around 2020.
Friday, February 3, 2017
Monkey-X - Circle Packing - Code Example
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.