Import mojo
Class gravitypoint
Field x:Int,y:Int
Method New(x:Int,y:Int)
Self.x = x
Self.y = y
End Method
Method draw()
SetColor 255,255,0
DrawOval x,y,6,6
End Method
End Class
Class particle
Field x:Float,y:Float
Field incx:Float
Field incy:Float
Method New(x:Float,y:Float)
Self.x = x
Self.y = y
incx = Rnd(-1,1)
incy = Rnd(-1,1)
End Method
Method update()
For Local i:=Eachin mygravitypoint
Local a:Int=getangle(x,y,i.x,i.y)
incx+=Cos(a)/2
incy+=Sin(a)/2
Next
x+=incx
y+=incy
End Method
Method draw()
SetColor 255,255,255
DrawOval x,y,6,6
End Method
Function getangle:Int(x1:Int,y1:Int,x2:Int,y2:Int)
Local dx = x2 - x1
Local dy = y2 - y1
Return ATan2(dy,dx)+360 Mod 360
End Function
End Class
Global myparticle:List<particle> = New List<particle>
Global mygravitypoint:List<gravitypoint> = New List<gravitypoint>
Class MyGame Extends App
Field counter:Int=0
Method OnCreate()
Seed = GetDate[5]+GetDate[4]
SetUpdateRate(60)
createscene
End Method
Method OnUpdate()
counter+=1
If counter > 300
counter = 0
createscene
End If
For Local i:=Eachin myparticle
i.update
Next
End Method
Method OnRender()
Cls 0,0,0
For Local i:=Eachin myparticle
i.draw
Next
If MouseDown(MOUSE_LEFT)
For Local i:=Eachin mygravitypoint
i.draw
Next
End If
SetAlpha 1
SetColor 255,255,255
DrawText "Monkey-X - Particles with 'Attraction' Effect - Thnx to The Coding Train",0,0
DrawText "Particles get attracted to <Left Mouse Button> points on the map",0,DeviceHeight-20
End Method
End Class
Function createscene()
myparticle = New List<particle>
mygravitypoint = New List<gravitypoint>
For Local i=0 Until Rnd(10,200)
myparticle.AddLast(New particle(Rnd(DeviceWidth),Rnd(DeviceHeight)))
Next
For Local i=0 Until Rnd(1,20)
mygravitypoint.AddLast(New gravitypoint(Rnd(DeviceWidth),Rnd(DeviceHeight)))
Next
End Function
Function Main()
New MyGame()
End Function
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.