Часть 6. Мелкие полезности

SuperStrict
Global gW:Int=800, gH:Int=600
Graphics gW,gH
SetClsColor 255,255,255
SetLineWidth 2
Type TPlayer
 Field x:Float, y:Float, speed:Float, angle:Float
 
 Function Create:TPlayer(_x:Float,_y:Float)
 player:TPlayer = New TPlayer
 player.x=_x
 player.y=_y
 Return player
 End Function
 
 Method update()
 x:+(KeyDown(KEY_D)-KeyDown(KEY_A))*speed
 y:+(KeyDown(KEY_S)-KeyDown(KEY_W))*speed
 If KeyDown(KEY_LSHIFT) 
 speed=6
 Else
 speed=4
 EndIf
 angle=ATan2(MouseY()-y,MouseX()-x)
 End Method
 
 Method draw()
 SetColor 122,122,255
 DrawOval x-16,y-16,32,32
 SetColor 0,0,0
 DrawLine x,y,x+15*Cos(angle),y+15*Sin(angle)
 SetColor 255,255,255
 End Method
 
End Type 
Global player:TPlayer=TPlayer.Create(gW/2,gH/2)

While Not KeyDown(KEY_ESCAPE)
player.update()
player.draw()
Flip(1)
Cls()
Wend

Ну что же, сегодня я покажу вам очень полезную вещь, а именно, работу с мышью в BlitzMax. Основные функции, которые нам потребуются:
MouseX() - возвращает x координату мыши
MouseY() - возвращает у координату мыши
ATan2(y2-y1,x2-x1) - возвращает аркотангенс угла по двум катетам. Иными словами - угол между двумя точками x1;y1 и x2;y2
Cos(angle) - возвращает косинус угла angle
Sin(angle) - возвращает синус угла angle
DrawLine(x1,y1,x2,y2) - рисует линию от точки x1;y1 до x2;y2
ВАЖНО! BlitzMax работает с градусами, а не радианами.
Ах да, и функция SetLineWidth - устанавливает ширину линии.

Комментариев нет:

Отправить комментарий