Here a example of how to fire a bullet from the player position to the enemy. The bullet dissapears when it hits the enemy. The code uses the rectsoverlap function.
Code below :
Import mojo
Class player
Field x:Float,y:Float
End Class
Class bullet
Field x:Float,y:Float
Field active:Bool
End Class
Class enemy
Field x:Float,y:Float
End Class
Global p:player = New player
Global e:enemy = New enemy
Global b:bullet = New bullet
Class MyGame Extends App
Method OnCreate()
SetUpdateRate(60)
p.x = 320
p.y = 240
e.x = 460
e.y = 240
End Method
Method OnUpdate()
' if the user presses space
If KeyHit(KEY_SPACE)
' if the bullet is not active
If b.active = False
' put the bullet at the player position
b.x = p.x+32
b.y = p.y+12
' activate the bullet
b.active = True
End If
End If
' if the bullet is active
If b.active = True
' increase the position by 1 to the right
b.x += 1
' if the bullet hits the enemy then set the
' bullet active to false
If rectsoverlap(b.x,b.y,6,6,e.x,e.y,32,32)
b.active = False
End If
' if the bullet gets out of the screen area
' then set it to not active
If rectsoverlap(b.x,b.y,0,0,0,0,640,480) = False Then b.active = False
End If
End Method
Method OnRender()
Cls 0,0,0
SetColor 255,255,255
' draw player
DrawRect p.x,p.y,32,32
' draw enemy
DrawRect e.x,e.y,32,32
' draw bullet if it is active
If b.active = True Then DrawRect b.x,b.y,6,6
DrawText "Press space to fire bullet.",0,0
End Method
End Class
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
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.