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