RosettaCodeData/Task/Joystick-position/Liberty-BASIC/joystick-position.basic
2023-07-01 13:44:08 -04:00

72 lines
1.6 KiB
Text

'disable text window
nomainwin
'set window size
WindowWidth = 308
WindowHeight = 331
'center window on screen
UpperLeftX = int((DisplayWidth-WindowWidth)/2)
UpperLeftY = int((DisplayHeight-WindowHeight)/2)
'open graphics window
open "Joystick Position" for graphics_nf_nsb as #m
'trap window closing
#m "trapclose [quit]"
'put pen down
#m "down"
'get center of graphics window
#m "home"
#m "posxy CenterX CenterY"
'draw sprite for crosshair
#m "backcolor black; color black"
#m "place 0 20;boxfilled 20 40"
#m "line 0 10 20 10"
#m "line 10 0 10 20"
#m "place 10 10; circle 10"
#m "backcolor white; color red"
#m "line 0 30 20 30"
#m "line 10 20 10 40"
#m "place 10 30; circle 10"
#m "flush"
'get sprite image
#m "getbmp plus 0 0 20 40"
#m "cls"
'create sprite from image
#m "addsprite crosshair plus"
#m "centersprite crosshair"
#m "spritexy crosshair "; CenterX; " "; CenterY
#m "drawsprites"
'check joystick every 100 milliseconds
timer 100, [CheckJoystick]
wait
[CheckJoystick]
readjoystick 1
'calculate crosshair position
PosX = int(CenterX*Joy1x/32767)
PosY = int(CenterY*Joy1y/32767)
'update crosshair position
#m "spritexy crosshair "; PosX; " "; PosY
#m "drawsprites"
'display button information
if Joy1button1 > 0 then #m "place 0 0;\\Button 1 pressed"
if Joy1button2 > 0 then #m "place 0 0;\\\Button 2 pressed"
wait
[quit]
timer 0
close #m
unloadbmp "plus"
end