move my ship with the mouse
BlitzMax Forums/BlitzMax Beginners Area/move my ship with the mouse| 
 | ||
| Hi ! in my game i used a poor code to move my ship with the mouse !!! Could you help me to transform this to an interesting very cool super pro movement code ! ;-) Thanks ! see also : http://www.blitzbasic.com/Community/posts.php?topic=57242 Graphics 800,600 HideMouse() MoveMouse GraphicsWidth()/2, GraphicsHeight() / 2 OldMouseX = MouseX() OldMouseY = MouseY() PosX = MouseX() PosY = MouseY() While Not KeyDown (KEy_ESCAPE) DeltaX = MouseX() - OldMouseX DeltaY = MouseY() - OldMouseY If DeltaX <> 0 Then If (DeltaX > 0 And PosX < GraphicsWidth() - 20) Then PosX = PosX + DeltaX If (DeltaX < 0 And PosX > 20) Then PosX = PosX + DeltaX End If If DeltaY <> 0 Then If (DeltaY > 0 And PosY < GraphicsHeight() - 20) Then PosY = PosY + DeltaY If (DeltaY < 0 And PosY > 20) Then PosY = PosY + DeltaY End If OldMouseX = MouseX() OldMouseY = MouseY() Cls DrawOval PosX, PosY, 50,50 Flip Wend ShowMouse() | 
| 
 | ||
| Have a look to the 'Rockout' code in the Bmax examples. The ship is mouse controlled, and has a smoothed movement. Perhaps it suits your needs. Sergio. | 
| 
 | ||
| Thanks semar ! Could have some reactions about this method ? Updated code to test : 
Graphics 800,600
Const cte_div = 5
HideMouse()
MoveMouse GraphicsWidth()/2, GraphicsHeight() / 2
PosX = MouseX()
PosY = MouseY()
While Not KeyDown (KEy_ESCAPE)
								
            xdist# = MouseX() - Posx
            ydist# = MouseY() - Posy
            xs = xdist / cte_div
            ys = ydist / cte_div
            Posx = Posx + xs
            Posy = Posy + ys
	
Cls
SetColor 255,255,255
DrawOval PosX-25, PosY-25, 50,50
SetColor  255,0,0
DrawOval MouseX()-3, MouseY()-3,6,6
Flip
Wend
ShowMouse()
 | 
| 
 | ||
| i've udapted my game. is this code is adaptable for a keyboard or joypad or should i search another method to have the same effect ? | 
| 
 | ||
| answer seems to be yes : keyboard 
Graphics 800,600
Const cte_div = 5
destx = GraphicsWidth()/2
desty = GraphicsHeight() / 2
PosX = destx
PosY = desty
While Not KeyDown (KEy_ESCAPE)
								
            xdist# = destx - Posx
            ydist# = desty - Posy
            xs = xdist / cte_div
            ys = ydist / cte_div
            Posx = Posx + xs
            Posy = Posy + ys
			If KeyDown (KEy_UP) Then desty = desty - 3
			If KeyDown (KEy_DOWN) Then desty = desty + 3
			If KeyDown (KEy_LEFT) Then destx = destx - 3
			If KeyDown (KEy_RIGHT) Then destx = destx + 3
	
Cls
SetColor 255,255,255
DrawOval PosX-25, PosY-25, 50,50
SetColor  255,0,0
DrawOval destx-3, desty-3,6,6
Flip
Wend
 |