Here another Vector code example. Thanks to Bettiesart for this.
Code below :
Import mojo
Global numdots:Int=100
Class dots
Field x:Float,y:Float
Field lastangle:Float
Field color:Int
Method New(x:Float,y:Float,lastangle:Float,color:Int)
Self.x = x
Self.y = y
Self.lastangle = lastangle
Self.color = color
End Method
Method update()
Local length:Float,angle:Float,incx:Float,incy:Float
Repeat
incx = Rnd(-5,5)
incy = Rnd(-5,5)
length = vectordistance(incx,incy)
angle = vectorangle(incx,incy)
Until length >= 2 And length <= 5 And Abs(lastangle-angle)<=10
lastangle=angle
x+=incx
If x<0 Then x=640
If x>640 Then x=0
y+=incy
If y<0 Then y=480
If y>480 Then y=0
End Method
Method draw()
SetColor color,color,color
DrawOval x,y,6,6
End Method
End Class
Global dot:List<dots> = New List<dots>
Class MyGame Extends App
Method OnCreate()
SetUpdateRate(60)
For Local i=0 Until numdots
dot.AddLast(New dots(Rnd(0,640),Rnd(0,480),Rnd(0,360),Rnd(32,200)))
Next
End Method
Method OnUpdate()
For Local i:=Eachin dot
i.update
Next
End Method
Method OnRender()
Cls 0,0,0
SetColor 255,255,255
For Local i:=Eachin dot
i.draw
Next
End Method
End Class
' Thanks to Blitzcoder for the functions
';= Get horizontal size of vector using distance and angle
Function vectorx:Float(distance:Float,angle:Float)
Return Sin(angle)*distance
End Function
';= Get vertical size of vector using distance and angle
Function vectory:Float(distance:Float,angle:Float)
Return Sin(angle-90)*distance
End Function
';= Get True length of a vector
Function vectordistance:Float(x:Float,y:Float)
Return Sqrt(x*x+y*y)
End Function
';= Get True angle of a vector
Function vectorangle:Float(x:Float,y:Float)
Return -ATan2(x,y)+180
End Function
Function Main()
New MyGame()
End Function
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.