Please indent your code!
I'm so appalled at your code structure that I've cleaned it up for you lol. But seriously, indent and improve the layout of you programs and you'll have far fewer problems (and when you do, it'll be easier for us to help you out).
HIDE MOUSE : `looks neater
SYNC ON : `this sets sync'ing to manual (you forgot to)
sync rate 100
`Load Images
Gosub Load_Images : `this works better as a subroutine
`Initialise variables
x = 100
y = 100
image = 1
`------------------------
` Main Loop
`------------------------
do
`Control Character
if upkey()=1
image = 1
y = y - 1
endif
if downkey() = 1
image = 4
y = y+1
endif
if rightkey() = 1 then x = x+1
if leftkey() = 1 then x = x -1
`Display Character
sprite 1,x,y,image
sync:cls
loop
`------------------------
` Subroutines
`------------------------
Load_Images:
load image "forward1.bmp",1 : `images can be loaded straight into DB
load image "forward2.bmp",2
load image "forward3.bmp",3
load image "backward1.bmp",4
load image "backward2.bmp",5
load image "backward3.bmp",6
load image "right1.bmp",7
load image "right2.bmp",8
load image "right3.bmp",9
load image "left1.bmp",10
load image "left2.bmp",11
load image "left3.bmp",12
Return
There's no need for that cutting out of images you were doing but I may as well tell you what was going wrong in case you need to use the get image command with an off-screen bitmap in the future.
The GET IMAGE command grabs an image from the active bitmap; by default this is the screen (bitmap 0), but by using the SET CURRENT BITMAP command you can change the active bitmap to an off-screen one. You can do all kinds of manipulations on the active bitmap: draw on it, mirror it, etc.
The reason your program didn't work is because you never changed the active bitmap, so for every image DB was grabbing from the screen (which was blank).
It is far better to complete a 10 line program than to start a 10,000 line program.
