Keyboard Controlled Sprite


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


Home

Source Code

Utilities

Internet

Games

Graphics

Media Demos

Snippets

DLL's

API Resources

Freeware

LB 4 Companion

Mastering LB 3

LB Workshop

Game Workshop

Links

Index