Import mojo
Class line
Field x1:Int,y1:Int
Field x2:Int,y2:Int
Field w:Int,h:Int
Field r:Int,g:Int,b:Int
Method New(x1:Int,y1:Int,w:Int,h:Int)
Self.x1 = x1
Self.y1 = y1
Self.w = w
Self.h = h
Self.x2 = x1+w
Self.y2 = y1+h
End Method
Method newpos(x:Int,y:Int)
x1=x
y1=y
x2=x1+w
y2=y1+h
End Method
Method mysetcolor(r:Int,g:Int,b:Int)
Self.r = r
Self.g = g
Self.b = b
End Method
Method draw()
SetColor r,g,b
DrawRect x1,y1,w,h
End Method
End Class
Class MyGame Extends App
Field line1:line = New line(150,150,100,100)
Field line2:line = New line(200,200,100,100)
Method OnCreate()
SetUpdateRate(60)
line1.mysetcolor(200,0,0)
line2.mysetcolor(0,200,0)
End Method
Method OnUpdate()
line1.newpos(MouseX(),MouseY())
End Method
Method OnRender()
Cls 0,0,0
SetColor 255,255,255
drawthickline 10,10,10,DeviceHeight-10
drawthickline 10,DeviceHeight-10,DeviceWidth-10,DeviceHeight-10
line1.draw
line2.draw
' draw the sidelines
'left
Local y1:Int=line1.y1
Local y2:Int=line1.y2
SetColor 200,50,0
drawthickline 11,y1,11,y2
y1=line2.y1
y2=line2.y2
SetColor 50,200,0
drawthickline 15,y1,15,y2
'bottom
Local x1:Int=line1.x1
Local x2:Int=line1.x2
SetColor 200,50,0
drawthickline x1,DeviceHeight-11,x2,DeviceHeight-11
x1=line2.x1
x2=line2.x2
SetColor 50,200,0
drawthickline x1,DeviceHeight-15,x2,DeviceHeight-15
'info
Scale 2,2
SetColor 255,255,255
DrawText "When 2 sets of lines are overlapping then",30,0
DrawText "a rectangular collision is happening...",30,20
DrawText "Move block with mouse",30,(DeviceHeight-50)/2
SetColor 255,255,0
If rectsoverlap( line1.x1,line1.y1,line1.w,line1.h,
line2.x1,line2.y1,line2.w,line2.h)
DrawText "Collision is happening",30,40
End If
End Method
End Class
Function drawthickline(x1:Int,y1:Int,x2:Int,y2:Int)
For Local y=-2 To 2
For Local x=-2 To 2
DrawLine x1+x,y1+y,x2+x,y2+y
Next
Next
End Function
Function rectsoverlap:Bool(x1:Int, y1:Int, w1:Int, h1:Int, x2:Int, y2:Int, w2:Int, h2:Int)
If x1 >= (x2 + w2) Or (x1 + w1) <= x2 Then Return False
If y1 >= (y2 + h2) Or (y1 + h1) <= y2 Then Return False
Return True
End
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 - Rectangle Collision Helper - code example
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.