something I have been messing with for a few days, you are welcome to use the code for whatever, it aint much but perhaps a good starter for beginners, the video is laggy but isnt how the code runs, it is just youtubes crappyness!
youtube
code:
rem
rem AGK Application
rem
rem Landscape App
SetDisplayAspect( 1024.0 / 600.0 )
SetSyncRate(60,0)
dim m$[60]
#constant PHYS_NONE 0
#constant PHYS_STATIC 1
#constant PHYS_DYNAMIC 2
#constant PHYS_KINEMATIC 3
#constant PSQUARE = 2
#constant PCIRCLE = 1
#constant PPOLYGON = 3
global walls = 1
global ground = 2
global ground2 = 3
global boulder = 4
global brickimagenum = 5
global BrickSprNum = 100
global xgap=8
global ygap=4
global wSpr=500
global rock = 5
global spr=6
global t$
global level=1
global basenum = 8
walls = loadimage("ground.png")
ground = loadimage("ground.png")
ground2 = loadimage("ground2.png")
boulder = loadimage ("boulder.png")
brickimagenum = loadimage("brick.png")
t$="level"
gosub level
create_level()
SetPhysicsDebugOn()
do
print ("" +str(m#))
print ("" +str(xpos#))
gosub mouseGrab
m#=GetSpritePhysicsMass(rock)
xpos#=getspritex(rock)
Sync()
loop
level:
select level
case 1:
m$[0] = "000000000002"
m$[1] = "000000000002"
m$[2] = "000000000002"
m$[3] = "000110010012"
m$[4] = "000000000002"
m$[5] = "000000000002"
m$[6] = "000000000002"
m$[7] = "000000000002"
m$[8] = "000000000002"
m$[9] = "000000000002"
m$[10] = "000000000002"
m$[11] = "222222222222"
endcase
case 2:
m$[0] = "000000000002"
m$[1] = "000000000002"
m$[2] = "000444444002"
m$[3] = "001000010002"
m$[4] = "000044400002"
m$[5] = "001000000002"
m$[6] = "000000000002"
m$[7] = "000000000002"
m$[8] = "000000000002"
m$[9] = "000000000002"
m$[10] = "000000000002"
m$[11] = "222222222222"
endcase
endselect
return
mouseGrab:
px# = getPointerX()
py# = getPointerY()
if getPointerPressed()=1
if getSpriteX(rock)>10 or getspriteX(rock) >30
if getSpriteHitTest(rock,px#,py#)=1
mouseJoint = createMouseJoint(rock,px#,py#,10000)
endif
else
setSpritePosition(rock,15,84)
setSpritePhysicsVelocity(rock,0,0)
setSpritePhysicsAngularVelocity(rock,0)
endif
else
if mouseJoint>0
if getPointerState()=1
if px#>10 and py#>30
setJointMouseTarget(mouseJoint,px#,py#)
else
deleteJoint(mouseJoint)
mouseJoint=0
endif
else
deleteJoint(mouseJoint)
mouseJoint=0
endif
endif
endif
return
function create_level()
DeleteAllSprites()
wx = 0: wy = 0: loc = 0
for row = 0 to 11
for seg = 1 to 12
select mid(m$[loc], seg, 1)
case "0":
ygap = basenum
xgap = basenum
endcase
case "1":
SetImageWrapU (boulder,1)
SetImageWrapV(boulder,1)
inc wSpr
CreateSprite(wSpr, boulder)
setspriteshape(wSpr,PCIRCLE)
SetSpritePosition(wSpr, wx, wy)
setspritesize(wSpr,8,8)
`SetSpriteOffset(wSpr, 4, 8 )
setSpritePhysicsOn(wSpr,PHYS_DYNAMIC)
vx = GetSpriteWidth( wSpr)
vy = getspriteheight(wSpr)
if vx<basenum
vx=basenum
endif
if vx>basenum
vx=basenum
endif
xgap= vx
ygap=vy
endcase
case "2":
inc wSpr
CreateSprite(wSpr, walls)
setspriteshape(wSpr,PSQUARE)
SetSpritePosition(wSpr, wx, wy)
setspritesize(wSpr,8,8)
`SetSpriteOffset(wSpr, 4, 8 )
setSpritePhysicsOn(wSpr,PHYS_STATIC)
vx = GetSpriteWidth( wSpr )
vy = getspriteheight(wSpr)
if vx<basenum
vx=basenum
endif
if vx>basenum
vx=basenum
endif
xgap= vx
ygap=vy
endcase
endselect
inc wx, xgap
next seg
inc loc
inc wy, ygap
wx = 0
next row
rem circular object
createSprite(spr,boulder)
setSpriteSize(spr,2,-1)
setSpritePosition(spr,15,84)
rem turn physics on!
setSpritePhysicsOn(spr,PHYS_DYNAMIC)
setSpriteShapeCircle(spr,0,0,1)
SetSpritePhysicsMass(spr,1)
rock = spr
endfunction
Hail to the king, baby!