## Gather the gold

Game development specific discussions.
BasicCoder2
Posts: 3205
Joined: Jan 01, 2009 7:03

### Gather the gold

This is a preliminary exploration of what might be involved in writing the mechanics of a Lode Runner like game. I haven't implemented much of the Lode Runner stuff like moving along monkey bars or zapping the ground tiles. And at this stage the guards just stand there without interaction mainly because I haven't figured out what kind of AI to give them.
It is different to the "Roll out the barrel" thread example in that the hot spots return the tile ID not a boolean on transparent color or not.
Thus the background is based on an array of tile images although the characters have pixel accurate positions.
You must run this code to generate the bitmaps used ...

Code: Select all

`screenres 640,480,32color rgb(0,0,0),rgb(255,255,255):clsdim as any ptr imageimage = imagecreate( 60, 100)dim as ulong colors( 9)colors( 0)=RGB(255,0,255)colors( 1)=RGB(128,0,0)colors( 2)=RGB(136,0,21)colors( 3)=RGB(248,184,160)colors( 4)=RGB(0,0,0)colors( 5)=RGB(160,32,64)colors( 6)=RGB(34,177,76)colors( 7)=RGB(255,174,201)colors( 8)=RGB(255,255,255)    dim as integer n    for j as integer = 0 to  99        for i as integer = 0 to  59            read n            pset image,(i,j),colors(n)        next i    next jbsave "littleGuysA.bmp",imageput (0,0),image,transsleepdim shared as any ptr guardsguards = imagecreate(60,100)bload "littleGuysA.bmp",guardsfor j as integer = 0 to 99    for i as integer = 0 to 59        if point(i,j,guards)<>rgb(255,0,255) then            pset guards,(i,j),rgb(255,0,0)        end if    next inext jbsave "littleGuards.bmp",guardsdim shared as any ptr tile1,tile2,tile3tile1 = imagecreate(16,16)tile2 = imagecreate(16,16)tile3 = imagecreate(16,16)for j as integer = 0 to 15    for i as integer = 0 to 15        read n        if n = 0 then pset tile1,(i,j),rgb(255,255,255)        if n = 1 then pset tile1,(i,j),rgb(0,0,255)    next inext jbsave "tile1.bmp",tile1for j as integer = 0 to 15    for i as integer = 0 to 15        read n        if n = 0 then pset tile2,(i,j),rgb(100,100,100)        if n = 1 then pset tile2,(i,j),rgb(255,100,0)    next inext jbsave "tile2.bmp",tile2for j as integer = 0 to 15    for i as integer = 0 to 15        read n        if n = 0 then pset tile3,(i,j),rgb(255,0,255)        if n = 1 then pset tile3,(i,j),rgb(255,200,15)        if n = 2 then pset tile3,(i,j),rgb(0,0,0)    next inext jbsave "tile3.bmp",tile3DATA  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA  0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0DATA  0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0DATA  0,0,0,0,0,2,3,3,3,2,0,0,0,0,0,0,0,0,0,0,2,3,3,3,2,0,0,0,0,0,0,0,0,0,0,2,3,3,3,2,0,0,0,0,0,0,0,0,0,0,2,3,3,3,2,0,0,0,0,0DATA  0,0,0,0,0,2,4,3,4,2,0,0,0,0,0,0,0,0,0,0,2,4,3,4,2,0,0,0,0,0,0,0,0,0,0,2,4,3,4,2,0,0,0,0,0,0,0,0,0,0,2,4,3,4,2,0,0,0,0,0DATA  0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0DATA  0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0DATA  0,0,0,0,0,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,0,0,0,0,0,0DATA  0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0DATA  0,0,0,0,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,0,0,0DATA  0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0DATA  0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0DATA  0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0DATA  0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0DATA  0,0,0,3,5,4,4,4,4,4,5,3,0,0,0,0,0,0,3,5,4,4,4,4,4,5,3,0,0,0,0,0,0,3,5,4,4,4,4,4,5,3,0,0,0,0,0,0,3,5,4,4,4,4,4,5,3,0,0,0DATA  0,0,0,3,3,6,6,6,6,6,3,3,0,0,0,0,0,0,3,3,6,6,6,6,6,3,3,0,0,0,0,0,0,3,3,6,6,6,6,6,3,3,0,0,0,0,0,0,3,3,6,6,6,6,6,3,3,0,0,0DATA  0,0,0,3,3,6,6,6,6,6,3,3,0,0,0,0,0,0,3,3,6,6,6,6,6,3,3,0,0,0,0,0,0,3,3,6,6,6,6,6,3,3,0,0,0,0,0,0,3,3,6,6,6,6,6,3,3,0,0,0DATA  0,0,0,3,6,6,6,0,6,6,6,3,0,0,0,0,0,0,3,6,6,6,0,6,6,6,3,0,0,0,0,0,0,3,6,6,6,0,6,6,6,3,0,0,0,0,0,0,3,6,6,6,0,6,6,6,3,0,0,0DATA  0,0,0,0,6,6,6,0,6,6,6,0,0,0,0,0,0,0,0,6,6,6,0,6,6,6,0,0,0,0,0,0,0,0,6,6,6,0,6,6,6,0,0,0,0,0,0,0,0,6,6,6,0,6,6,6,0,0,0,0DATA  0,0,0,0,6,6,6,0,6,6,6,0,0,0,0,0,0,0,0,6,6,6,0,6,6,6,0,0,0,0,0,0,0,0,6,6,6,0,6,6,6,0,0,0,0,0,0,0,0,6,6,6,0,6,6,6,0,0,0,0DATA  0,0,0,0,6,6,6,0,6,6,6,0,0,0,0,0,0,0,0,6,6,6,0,6,6,6,0,0,0,0,0,0,0,0,6,6,6,0,6,6,6,0,0,0,0,0,0,0,0,6,6,6,0,6,6,6,0,0,0,0DATA  0,0,0,0,2,2,2,0,2,2,2,0,0,0,0,0,0,0,0,2,2,2,0,2,2,2,0,0,0,0,0,0,0,0,2,2,2,0,2,2,2,0,0,0,0,0,0,0,0,2,2,2,0,2,2,2,0,0,0,0DATA  0,0,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,0DATA  0,0,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,0DATA  0,0,0,1,1,1,2,2,2,1,1,1,0,0,0,0,0,0,1,1,1,2,2,2,1,1,1,0,0,0,0,0,0,1,1,1,2,2,2,1,1,1,0,0,0,0,0,0,1,1,1,2,2,2,1,1,1,0,0,0DATA  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0DATA  0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0DATA  0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,3,3,3,3,0,0,0,0,0,0,0,0,1,1,1,3,3,3,3,0,0,0,0,0DATA  0,0,0,0,1,1,1,7,7,7,7,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,3,3,3,4,3,0,0,0,0,0,0,0,0,1,1,3,3,3,4,3,0,0,0,0,0DATA  0,0,0,0,1,1,7,7,7,4,7,0,0,0,0,0,0,0,0,1,1,1,3,3,3,3,0,0,0,0,0,0,0,1,1,1,3,3,3,3,3,0,0,0,0,0,0,0,1,1,1,3,3,3,3,3,0,0,0,0DATA  0,0,0,0,1,1,1,7,7,7,7,7,0,0,0,0,0,0,0,1,1,3,3,3,4,3,0,0,0,0,0,0,0,1,1,3,3,3,3,3,0,0,0,0,0,0,0,0,1,1,3,3,3,3,3,0,0,0,0,0DATA  0,0,0,0,2,2,7,7,7,7,7,0,0,0,0,0,0,0,0,1,1,1,3,3,3,3,3,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0DATA  0,0,0,0,0,7,7,7,7,7,0,0,0,0,0,0,0,0,0,1,1,3,3,3,3,3,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0DATA  0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,0,0,0,0,0,0DATA  0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0DATA  0,0,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0DATA  0,5,5,5,5,5,5,5,5,5,5,5,3,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0DATA  3,3,5,5,5,5,5,5,5,5,5,5,3,3,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0DATA  3,3,0,0,0,5,5,5,5,5,5,5,3,3,0,0,0,0,3,5,5,5,5,5,5,3,3,0,0,0,0,0,0,0,4,4,4,4,3,3,0,0,0,0,0,0,0,0,0,5,5,4,4,4,4,0,0,0,0,0DATA  0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,3,3,5,5,5,5,5,5,3,3,0,0,0,0,0,0,0,6,6,6,6,3,3,0,0,0,0,0,0,0,0,0,5,5,3,3,6,6,0,0,0,0,0DATA  0,0,0,0,0,6,6,6,6,6,0,0,0,0,0,0,0,3,3,3,4,4,4,4,4,3,0,0,0,0,0,0,0,0,6,6,6,6,6,3,0,0,0,0,0,0,0,0,0,5,3,3,3,6,6,0,0,0,0,0DATA  0,0,0,0,0,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,6,6,6,6,6,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,6,3,3,6,6,6,0,0,0,0,0DATA  0,0,0,0,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,6,6,6,6,6,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,0,0,0,0,0DATA  0,0,6,6,6,6,6,0,6,6,6,0,0,0,0,0,0,0,0,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,0,0,0,0,0DATA  0,1,6,6,6,6,0,0,6,6,1,1,1,1,0,0,1,1,1,1,6,6,6,6,6,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,0,0,0,0,0DATA  1,1,1,6,6,0,0,0,6,1,1,1,1,0,0,0,1,1,1,1,6,6,6,6,0,0,0,0,0,0,0,0,0,0,1,1,2,6,6,6,0,0,0,0,0,0,0,0,0,6,6,6,2,2,1,0,0,0,0,0DATA  1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,2,2,1,0,0,0,0,0,0,0,0,0,2,2,1,2,2,1,1,0,0,0,0DATA  1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,2,2,1,1,0,0,0,0,0,0,0,0,2,2,1,2,2,2,2,2,0,0,0DATA  0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,0,0,0,0,0,2,2,2,2,2,0,0,0,0,0,0DATA  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA  0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA  0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0DATA  0,0,0,0,0,3,3,3,3,1,1,1,0,0,0,0,0,0,0,0,3,3,3,3,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0DATA  0,0,0,0,0,3,4,3,3,3,1,1,0,0,0,0,0,0,0,0,3,4,3,3,3,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,7,7,7,7,1,1,1,0,0,0,0DATA  0,0,0,0,3,3,3,3,3,1,1,1,0,0,0,0,0,0,0,3,3,3,3,3,1,1,1,0,0,0,0,0,0,0,3,3,3,3,1,1,1,0,0,0,0,0,0,0,0,7,4,7,7,7,1,1,0,0,0,0DATA  0,0,0,0,0,3,3,3,3,3,1,1,0,0,0,0,0,0,0,0,3,3,3,3,3,1,1,0,0,0,0,0,0,0,3,4,3,3,3,1,1,0,0,0,0,0,0,0,7,7,7,7,7,1,1,1,0,0,0,0DATA  0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,3,3,3,3,3,1,1,1,0,0,0,0,0,0,0,0,7,7,7,7,7,7,0,0,0,0,0DATA  0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,3,3,3,3,3,1,1,0,0,0,0,0,0,0,0,0,7,7,7,7,7,0,0,0,0,0DATA  0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0DATA  0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0DATA  0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,0,0DATA  0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,3,5,5,5,5,5,5,5,5,5,5,5,0DATA  0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,3,3,5,5,5,5,5,5,5,5,5,5,3,3DATA  0,0,0,0,0,5,5,4,4,5,5,0,0,0,0,0,0,0,0,0,3,3,4,4,4,4,0,0,0,0,0,0,0,3,3,5,5,5,5,5,5,3,0,0,0,0,3,3,5,5,5,5,5,5,5,0,0,0,3,3DATA  0,0,0,0,0,6,6,3,3,5,5,0,0,0,0,0,0,0,0,0,3,3,6,6,6,6,0,0,0,0,0,0,0,3,3,5,5,5,5,5,5,3,3,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0DATA  0,0,0,0,0,6,6,3,3,3,5,0,0,0,0,0,0,0,0,0,3,6,6,6,6,6,0,0,0,0,0,0,0,0,3,4,4,4,4,4,3,3,3,0,0,0,0,0,0,0,6,6,6,6,6,0,0,0,0,0DATA  0,0,0,0,0,6,6,6,3,3,6,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,6,6,6,6,6,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,0,0,0,0,0DATA  0,0,0,0,0,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,6,6,6,6,6,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,0,0,0,0DATA  0,0,0,0,0,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,0,0,0,0,0,0,0,0,6,6,6,0,6,6,6,6,6,0,0DATA  0,0,0,0,0,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,6,6,6,6,6,1,1,1,1,0,0,1,1,1,1,6,6,0,0,6,6,6,6,1,0DATA  0,0,0,0,0,1,2,2,6,6,6,0,0,0,0,0,0,0,0,0,6,6,6,2,1,1,0,0,0,0,0,0,0,0,0,0,6,6,6,6,1,1,1,1,0,0,0,1,1,1,1,6,0,0,0,6,6,1,1,1DATA  0,0,0,0,1,1,2,2,1,2,2,0,0,0,0,0,0,0,0,0,1,2,2,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1DATA  0,0,0,2,2,2,2,2,1,2,2,0,0,0,0,0,0,0,0,1,1,2,2,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,1,1,1,1DATA  0,0,0,0,0,0,2,2,2,2,2,0,0,0,0,0,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0DATA  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DATA  0,0,0,0,0,0,1,2,1,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,1,2,1,0,0,0,0,0,0,0,0,3,3,0,0,1,2,1,0,0,0,0,0,0DATA  0,0,0,0,0,1,1,2,1,1,0,3,3,3,0,0,0,0,0,0,0,1,2,1,0,0,3,3,0,0,0,3,3,3,0,1,1,2,1,1,0,0,0,0,0,0,3,3,3,0,1,1,2,1,1,0,0,0,0,0DATA  0,0,0,0,0,2,2,2,2,2,0,3,3,3,0,0,0,0,0,0,1,1,2,1,1,0,3,3,3,0,0,3,3,3,0,2,2,2,2,2,0,0,0,0,0,0,3,3,3,0,2,2,2,2,2,0,0,0,0,0DATA  0,0,0,0,0,2,2,2,2,2,0,5,5,0,0,0,0,0,0,0,2,2,2,2,2,0,3,3,3,0,0,0,5,5,0,2,2,2,2,2,0,0,0,0,0,0,0,5,5,0,2,2,2,2,2,0,3,3,0,0DATA  0,0,3,3,0,2,2,2,2,2,0,5,5,0,0,0,0,3,3,0,2,2,2,2,2,0,5,5,0,0,0,0,5,5,0,2,2,2,2,2,0,3,3,0,0,0,0,5,5,0,2,2,2,2,2,0,3,3,3,0DATA  0,3,3,3,0,3,2,2,2,3,0,5,5,0,0,0,3,3,3,0,2,2,2,2,2,0,5,5,0,0,0,0,5,5,0,3,2,2,2,3,0,3,3,3,0,0,0,5,5,0,3,2,2,2,3,0,3,3,3,0DATA  0,3,3,3,0,0,3,3,3,8,5,5,5,0,0,0,3,3,3,0,3,2,2,2,3,0,5,5,0,0,0,0,5,5,0,0,3,3,3,0,0,3,3,3,0,0,0,5,5,0,0,3,3,3,0,0,5,5,0,0DATA  0,0,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,5,5,0,0,3,3,3,0,0,5,5,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,0,0DATA  0,0,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,0DATA  0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,5,5,5,5,5,0,0,0,0DATA  0,0,0,0,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,0,0,0DATA  0,0,0,0,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,0,0,0DATA  0,0,0,0,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,0,0,0DATA  0,0,0,0,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,0,0,0,0DATA  0,0,0,0,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,0,0,0,0DATA  0,0,0,0,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,0,0,0,0DATA  0,0,0,0,6,6,6,0,6,6,6,0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,6,6,6,0,6,6,6,0,0,0,0,0,0,0,0,6,6,6,0,6,6,6,0,0,0,0DATA  0,0,0,0,6,6,6,0,6,6,6,0,0,0,0,0,0,0,0,6,6,6,0,6,6,6,0,0,0,0,0,0,0,0,6,6,6,0,6,6,6,0,0,0,0,0,0,0,0,2,2,2,0,6,6,6,0,0,0,0DATA  0,0,0,0,6,6,6,0,6,6,6,0,0,0,0,0,0,0,0,6,6,6,0,2,2,2,0,0,0,0,0,0,0,0,6,6,6,0,6,6,6,0,0,0,0,0,0,0,2,2,2,2,0,6,6,6,0,0,0,0DATA  0,0,0,0,6,6,6,0,6,6,6,0,0,0,0,0,0,0,0,6,6,6,0,2,2,2,2,0,0,0,0,0,0,0,6,6,6,0,6,6,6,0,0,0,0,0,0,0,2,2,2,2,0,6,6,6,0,0,0,0DATA  0,0,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,6,6,6,0,2,2,2,2,0,0,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0DATA  0,0,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0DATA  0,0,0,1,1,1,1,0,1,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0DATA  0,0,0,1,1,1,1,0,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0'ladderdata 1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1data 1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1data 1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1data 1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1data 1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1data 1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1data 1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1data 1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1data 1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1data 1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1'bricksdata 1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1data 1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1data 1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1data 1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1data 1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1data 1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0data 1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1data 1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1data 1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1data 1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1data 1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1data 1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0'golddata 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0data 0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0data 0,0,0,0,0,0,0,2,1,2,0,0,0,0,0,0data 0,0,0,0,0,0,2,1,1,1,2,0,0,0,0,0data 0,0,0,0,0,2,1,1,1,1,1,2,0,0,0,0data 0,0,0,0,2,1,1,1,1,1,1,1,2,0,0,0data 0,0,0,2,1,1,1,1,1,1,1,1,1,2,0,0data 0,0,2,1,1,1,1,1,1,1,1,1,1,1,2,0data 0,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2data 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2`

And this is the demo ...

Code: Select all

`const SCRW = 450const SCRH = 288screenres SCRW,SCRH,32color rgb(0,0,0),rgb(255,255,255)dim shared as integer SCOREdim shared as integer tileX,tileYdim shared as any ptr tile1,tile2,tile3tile1 = imagecreate(16,16)tile2 = imagecreate(16,16)tile3 = imagecreate(16,16)bload "tile1.bmp",tile1bload "tile2.bmp",tile2bload "tile3.bmp",tile3dim shared as integer world(0 to 27,0 to 17)   'hold tile IDconst TW = 16    restore background    for j as integer = 0 to 17        for i as integer = 0 to 27            read world(i,j)        next i    next j    type SPRITE    as integer x    as integer y    as integer w    'width of sprite    as integer h    'height of sprite    as integer s    'current state eg. running, walking,climbing    as integer a    'alive or dead    as integer f    'current frame being displayed    as integer fc   'total frames in animation    as integer c    'delay between frames    as any ptr img  'image sheetend typedim shared as SPRITE herodim shared as SPRITE guard(0 to 5)hero.x = 33hero.y = 215hero.w = 15hero.h = 25hero.a = 1hero.fc = 4hero.img = imagecreate(60,100)bload "littleGuysA.bmp",hero.imgdim shared as any ptr guardImageguardImage = imagecreate(60,100)bload "littleGuards.bmp",guardImagerestore GuardPositionsfor i as integer = 0 to 4    read guard(i).x,guard(i).y    guard(i).w = 15    guard(i).h = 25    guard(i).a = 1    guard(i).img = guardImagenext ifunction testCollision(b1 as SPRITE,b2 as SPRITE) as boolean    return b2.y < b1.y+b1.h and b2.x+b2.h > b1.y and b2.x < b1.x+b1.w and b2.x+b2.w > b1.xend functionfunction onTile(b as SPRITE) as integer    dim as integer ID    tileX = (b.x+b.w\2) \TW    tileY = (b.y+b.h  ) \TW    return world(tileX,tileY)end functionfunction inTile(b as SPRITE) as integer    dim as integer ID    tileX = (b.x+b.w\2) \TW    tileY = (b.y+b.h-1  ) \TW    return world(tileX,tileY)end functionsub display()        hero.c = hero.c + 1    if hero.c > 10 then      'controls frame rate        hero.c = 0           'reset counter        hero.f = hero.f + 1  'next frame        if hero.f = hero.fc then            hero.f = 0        end if    end if        dim as integer v    screenlock        cls    for j as integer = 0 to 17        for i as integer = 0 to 27            v = world(i,j)            if v = 32 then                put (i*TW,j*TW),tile1,trans            end if            if v = 33 then                put (i*TW,j*TW),tile2,trans            end if            if v = 22 then                put (i*TW,j*TW),tile3,trans            end if        next i    next         'draw guards    for i as integer = 0 to 4        if guard(i).a = 1 then            put (guard(i).x,guard(i).y),guard(i).img,(guard(i).f*guard(i).w,guard(i).s*guard(i).h)-(guard(i).f*guard(i).w + guard(i).w-1,guard(i).s * guard(i).h + guard(i).h-1),trans        end if    next i    'draw hero    if hero.a = 1 then        put (hero.x,hero.y),hero.img,(hero.f*hero.w,hero.s*hero.h)-(hero.f*hero.w + hero.w-1,hero.s * hero.h + hero.h-1),trans    end if    locate 34,2    print "SCORE =";SCORE    screenunlockend subdo    display()    hero.s = 0   'not moving        if multikey(&H4B) then        hero.x = hero.x - 1        hero.s  = 2                  'move left    end if    if multikey(&H4D) then        hero.x = hero.x + 1        hero.s  = 1                  'move right    end if        if inTile(hero) = 32 or onTile(hero) = 32 then   'if onLadder than you can move up or down        if multikey(&H48) then  'UP            hero.y = hero.y - 1            hero.s  = 3        end if            if multikey(&H50) then  'DOWN            hero.y = hero.y + 1            hero.s  = 3        end if    end if        if inTile(hero)=0 then        hero.y = hero.y + 1  'gravity    end if        while inTile(hero)=33        hero.y = hero.y - 1  'pull out of ground    wend        if inTile(hero)=22 then        SCORE = SCORE + 1     'pick up gold        world(tileX,tileY)= 0     'remove gold tile        print ((hero.x+hero.w\2)\TW),((hero.y+hero.h)\TW)        sleep    end if        'adjust for left/right border    if hero.x < 0 then hero.x = 0    if hero.x > SCRW - hero.w then hero.x = SCRW - hero.w    sleep 2loop until multikey(&H01)background:data  0, 0, 0, 0, 0, 0, 0, 0, 0,32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0data  0, 0, 0, 0, 0, 0, 0, 0, 0,32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0data 33,33,33, 0, 0, 0, 0, 0, 0,32, 0, 0, 0, 0, 0,33,33,33,33,32,33,33,33,33,33,33,33,33data  0, 0,33,33, 0, 0, 0, 0, 0,32, 0, 0, 0, 0, 0,33,33, 0, 0,32, 0, 0, 0, 0, 0, 0, 0, 0data  0, 0, 0,33,33, 0, 0, 0, 0,32, 0, 0, 0, 0,33,33, 0, 0, 0,32, 0, 0, 0, 0, 0, 0, 0, 0data  0, 22, 0,33,33,33, 0, 0, 0,32, 0, 0, 0,33,33,33, 0, 0, 0,32, 0, 0, 0, 0, 0,22, 0, 0data 32,33,32,33,33,33,33, 0, 0,32, 0, 0,33,33,33,33,32,33,33,32,33,33,33,33,33,33,33,33data 32, 0,32, 0, 0, 0,33,33, 0,32, 0,33,33, 0, 0, 0,32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0data 32, 0,32, 0, 0, 0, 0,33,33,32,33,33,33, 0, 0, 0,32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0data 32,33,33,33,32, 0, 0, 0, 0,32, 0, 0, 0, 0, 0,33,32,33,33,32,33,33, 0, 0, 0, 0, 0, 0data 32, 0, 0, 0,32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,32, 0, 0, 0, 0, 0, 0, 0, 0data 32, 0, 0, 0,32, 0, 0, 0,22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,32, 0, 0, 0, 0, 0, 0, 0, 0data 32, 0, 0, 0,32,33,33,33,33,33,33,33,32,33,33,33,33,33,33,32,33,33,33,33,33,32,33,33data 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,32, 0, 0data 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,32, 0, 0, 0, 0, 0, 0,22, 0, 0, 0, 0, 0,32, 0, 0data 33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0GuardPositions:data 18,7,  355,7,  355,71,  99,167,  353,167`
dafhi
Posts: 1040
Joined: Jun 04, 2005 9:51

### Re: Gather the gold

Here's my physics loop. You can change the fps to anything and the action will remain consistent.

Had to swap the order of things near the bottom

Code: Select all

`var   iphys_fps = 1/193, phys_t = 0fvar   ianim_fps = 1/57, anim_t = 0fvar   tp = timerdo    if anim_t <= 0 then      display()      while anim_t < 0        anim_t += ianim_fps      wend    endif    hero.s = 0   'not moving        var t=timer, dt=t-tp    tp=t       anim_t -= dt    phys_t += dt    var frames=0    while phys_t>0      frames += 1      phys_t -= iphys_fps    wend       'var rate = pi*iphys_fps*frames    for i as integer = 1 to frames        if multikey(&H4B) then            hero.x = hero.x - 1            hero.s  = 2                  'move left        end if        if multikey(&H4D) then            hero.x = hero.x + 1            hero.s  = 1                  'move right        end if               if inTile(hero) = 32 or onTile(hero) = 32 then   'if onLadder than you can move up or down            if multikey(&H48) then  'UP                hero.y = hero.y - 1                hero.s  = 3            end if                   if multikey(&H50) then  'DOWN                hero.y = hero.y + 1                hero.s  = 3            end if        end if               if inTile(hero)=0 then            hero.y = hero.y + 1  'gravity        end if               while inTile(hero)=33            hero.y = hero.y - 1  'pull out of ground        wend                'adjust for left/right border        if hero.x < 0 then hero.x = 0        if hero.x > SCRW - hero.w then hero.x = SCRW - hero.w    next       if inTile(hero)=22 then        SCORE = SCORE + 1     'pick up gold        world(tileX,tileY)= 0     'remove gold tile        print ((hero.x+hero.w\2)\TW),((hero.y+hero.h)\TW)        sleep    end if       sleep 2loop until multikey(&H01)`
lizard
Posts: 406
Joined: Oct 17, 2017 11:35
Location: Germany

### Re: Gather the gold

Works all here on Mint 18.3 64 bit (i suppose you are on windows). Yes, thats the game! As far i remember, the enemies always moved towards player. Player could dig holes to stop them. But the holes closed after some time. Climbing the upper ladder to top leaded to next level.

But these days it would possible to add further elements. Frankensteins, mummys and the best: electricity!
BasicCoder2
Posts: 3205
Joined: Jan 01, 2009 7:03

### Re: Gather the gold

dafhi wrote:Here's my physics loop. You can change the fps to anything and the action will remain consistent.

Can you explain how it works and indeed what it does exactly?
In this example I notice the little guy moves really fast, indeed too fast.
For example where do the numbers come from in these two lines?

Code: Select all

`var   iphys_fps = 1/193, phys_t = 0fvar   ianim_fps = 1/57, anim_t = 0f`
dafhi
Posts: 1040
Joined: Jun 04, 2005 9:51

### Re: Gather the gold

You could actually use your original dispaly code and remove ianim_fps and anim_t

Code: Select all

`    display()    hero.s = 0   'not moving`

this increments the physics time

Code: Select all

`    phys_t += dt`

physics frame count

Code: Select all

`    var frames=0    while phys_t>0      frames += 1      phys_t -= iphys_fps    wend `