Allows a user to control a sprite with cursor keys.
'save and run in the LB root directory
nomainwin
maxX=550 : maxY=250
WindowWidth=maxX+50 : WindowHeight=maxY+50
loadbmp "bkg","SPRITES\BG1.bmp"
loadbmp "guy1","SPRITES\cave1.bmp"
loadbmp "guy2","SPRITES\cave2.bmp"
open "Move This Sprite" for graphics_nsb_nf as #1
#1 "trapclose [quit]"
'set the background
#1 "background bkg"
'add your sprite
#1 "addsprite guy guy1 guy2"
#1 "cyclesprite guy 1"
'set sprite location
guyX=100 : guyY=150
#1 "spritexy guy ";guyX;" ";guyY
'show frame onscreen
#1 "drawsprites"
[mainLoop] 'the entire game runs from this loop
SCAN 'check for user events such as window closing
CallDLL #user32,"GetAsyncKeyState",_VK_RIGHT as long, keyDown as long
if keyDown<0 then gosub [goRight]
CallDLL #user32,"GetAsyncKeyState",_VK_NUMPAD6 as long, keyDown as long
if keyDown<0 then gosub [goRight]
CallDLL #user32,"GetAsyncKeyState",_VK_LEFT as long, keyDown as long
if keyDown<0 then gosub [goLeft]
CallDLL #user32,"GetAsyncKeyState",_VK_NUMPAD4 as long, keyDown as long
if keyDown<0 then gosub [goLeft]
CallDLL #user32,"GetAsyncKeyState",_VK_UP as long, keyDown as long
if keyDown<0 then gosub [goUp]
CallDLL #user32,"GetAsyncKeyState",_VK_NUMPAD8 as long, keyDown as long
if keyDown<0 then gosub [goUp]
CallDLL #user32,"GetAsyncKeyState",_VK_DOWN as long, keyDown as long
if keyDown<0 then gosub [goDown]
CallDLL #user32,"GetAsyncKeyState",_VK_NUMPAD5 as long, keyDown as long
if keyDown<0 then gosub [goDown]
'reduce processor use and introduce delay with Sleep command:
calldll #kernel32, "Sleep",100 as long, re as long
goto [mainLoop]
[goLeft]
#1 "spritexy? guy x y"
if x <= 0 then return 'guy is at left side already
guyX = guyX - 5
#1 "spriteorient guy mirror" 'guy faces left now
gosub [moveGuy]
return
[goRight]
#1 "spritexy? guy x y"
if x >= maxX then return 'guy is at right side already
guyX = guyX + 5
#1 "spriteorient guy normal" 'guy faces right now
gosub [moveGuy]
return
[goUp]
#1 "spritexy? guy x y"
if y <= 0 then return 'guy is at top already
guyY = guyY - 5
gosub [moveGuy]
return
[goDown]
#1 "spritexy? guy x y"
if y >= maxY then return 'guy is at bottom already
guyY = guyY + 5
gosub [moveGuy]
return
[moveGuy]
'put sprite in new location
#1 "spritexy guy ";guyX;" ";guyY
#1 "drawsprites" 'update screen!
RETURN
[quit]
unloadbmp "bkg"
unloadbmp "guy1"
unloadbmp "guy2"
close #1:end