I made a little test using SetDisplayAspect(-1.0) and using the 0 to 100 coordinate system.
I also used the collision shapes.
It is so much easier using those methods. Thanks Game_Code_here and Virtual Nomad for steering me in the right direction.
I'll upload the little test demo i was playing with.
I will probably go with modular backgrounds so it will be good for creating, saving and loading levels.
I made one once before using a different BASIC language so AGKS should make it fairly easy to do it again.
If you are going to have 50 or 100 levels then it would be much quicker and easier to use a built in editor to make them all.
// Project: 2D platform test2
// Created: 22-01-12
SetErrorMode(2)
SetWindowSize( 1024, 768, 1 )
SetWindowAllowResize( 1 ) // allow the user to resize the window
SetDisplayAspect(-1.0)
SetOrientationAllowed(1,1,1,1)
SetSyncRate(30, 0 )
SetScissor( 0,0,0,0 )
UseNewDefaultFonts( 1 )
SetScissor( 0,0,0,0 ) // use the maximum available screen space, no black borders
UseNewDefaultFonts( 1 )
SetPrintSize(3)
SetPhysicsDebugOn()
lvl1pic=CreateSprite(LoadImage("bg1z.png")) // load level 1 background
SetSpriteSize(lvl1pic,100,100)
//setspritevisible(lvl1pic,0)
//SetSpriteShape(lvl1pic,2)
//SetObjectCollisionMode(lvl1pic,1)
//SetSpriteGroup(lvl1pic,10)
eggs=CreateSprite(LoadImage("eggsheet.png"))
SetSpriteSize(eggs,3,5)
SetSpriteAnimation(eggs,31,34,10)
//setspritevisible(eggs,0)
SetSpriteFrame(eggs,10)
//SetSpriteOffset(eggs,1.5,2.5)
SetSpritePosition(eggs,1.5,6.75)
SetSpriteShape(eggs,2)
SetSpriteGroup(eggs,3)
eggdisp=CreateSprite(LoadImage("eggdisp.png"))
SetSpriteSize(eggdisp,2,5)
setspritevisible(eggdisp,0)
SetSpriteOffset(eggdisp,1,2.5)
SetSpritePositionByOffset(eggdisp,99,3)
eggcrate=CreateSprite(LoadImage("crate.png"))
SetSpriteSize(eggcrate,4,6)
//setspritevisible(eggcrate,0)
//SetSpriteOffset(eggcrate,2,3)
SetSpritePosition(eggcrate,95,79)
SetSpriteShape(eggcrate,2)
SetSpriteGroup(eggcrate,3)
cratealpha=255
floor1=CreateSprite(0)
SetSpriteSize(floor1,100,2.5)
SetSpriteColor(floor1,0,0,0,0)
SetSpritePosition(floor1,0,97)
SetSpriteShape(floor1,2)
SetSpriteGroup(floor1,7)
floor2=CreateSprite(0)
SetSpriteSize(floor2,11.7,1.5)
SetSpriteColor(floor2,0,0,0,0)
SetSpritePosition(floor2,0,85)
SetSpriteShape(floor2,2)
SetSpriteGroup(floor2,7)
floor3=CreateSprite(0)
SetSpriteSize(floor3,11.9,1.5)
SetSpriteColor(floor3,0,0,0,0)
SetSpritePosition(floor3,32,85)
SetSpriteShape(floor3,3)
SetSpriteGroup(floor3,7)
floor4=CreateSprite(0)
SetSpriteSize(floor4,12,1.5)
SetSpriteColor(floor4,0,0,0,0)
SetSpritePosition(floor4,87.85,85)
SetSpriteShape(floor4,2)
SetSpriteGroup(floor4,7)
floor5=CreateSprite(0)
SetSpriteSize(floor5,12.1,1.5)
SetSpriteColor(floor5,0,0,0,0)
SetSpritePosition(floor5,48.3,71.5)
SetSpriteShape(floor5,2)
SetSpriteGroup(floor5,7)
floor6=CreateSprite(0)
SetSpriteSize(floor6,12.1,1.5)
SetSpriteColor(floor6,0,0,0,0)
SetSpritePosition(floor6,36,54)
SetSpriteShape(floor6,2)
SetSpriteGroup(floor6,7)
floor7=CreateSprite(0)
SetSpriteSize(floor7,12.1,1.5)
SetSpriteColor(floor7,0,0,0,0)
SetSpritePosition(floor7,82,54)
SetSpriteShape(floor7,2)
SetSpriteGroup(floor7,7)
floor8=CreateSprite(0)
SetSpriteSize(floor8,12.1,1.5)
SetSpriteColor(floor8,0,0,0,0)
SetSpritePosition(floor8,60.6,47.7)
SetSpriteShape(floor8,2)
SetSpriteGroup(floor8,7)
floor9=CreateSprite(0)
SetSpriteSize(floor9,12.1,1.5)
SetSpriteColor(floor9,0,0,0,0)
SetSpritePosition(floor9,5.1,45)
SetSpriteShape(floor9,2)
SetSpriteGroup(floor9,7)
floor10=CreateSprite(0)
SetSpriteSize(floor10,12.1,1.5)
SetSpriteColor(floor10,0,0,0,0)
SetSpritePosition(floor10,73,30)
SetSpriteShape(floor10,2)
SetSpriteGroup(floor10,7)
floor11=CreateSprite(0)
SetSpriteSize(floor11,42.7,1.5)
SetSpriteColor(floor11,0,0,0,0)
SetSpritePosition(floor11,15.95,20)
SetSpriteShape(floor11,2)
SetSpriteGroup(floor11,7)
floor12=CreateSprite(0)
SetSpriteSize(floor12,5,1.5)
SetSpriteColor(floor12,0,0,0,0)
SetSpritePosition(floor12,0,11.8)
SetSpriteShape(floor12,2)
SetSpriteGroup(floor12,7)
man1=CreateSprite(LoadImage("man1sheet2.png"))
SetSpriteSize(man1,3.5,10)
SetSpriteAnimation(man1,37,77,25)
SetSpriteFrame(man1,25)
SetSpritePosition(man1,90,70)
SetSpriteShape(man1,2)
SetSpriteGroup(man1,1)
man1FPS=30
grav# = 0.02 // gravity setting , used with yv# to affect jump and fall
yv# = 0.0 // player Y velocity , used for jump and fall
man1X# = GetSpriteX(man1)
setrawmousevisible(0)
// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx set up screenshot
screenGrab = CreateRenderImage(GetMaxDeviceWidth(),GetMaxDeviceHeight(),0,1)
filesavetext=createtext("")
do
// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Screenshot Section
if GetRawKeyPressed(80) // P to screenshot
SetRenderToImage(screenGrab, -1)
if gettextvisible(filesavetext) then settextvisible(filesavetext,0)
number = 1
print(" ")
print(" use arrow keys")
print(" onGround "+str(onGround))
print(" hit "+str(hit))
print(" egghit "+str(egghit))
print(" eggBoxHit "+str(eggBoxHit))
print(" cratehit "+str(cratehit))
print(" crateBoxHit "+str(crateBoxHit))
ClearScreen()
Render()
checkFiles:
if GetFileExists("raw:"+GetReadPath()+"screenshots/Screenshot"+str(number)+".png")
number = number + 1
goto checkFiles
endif
SaveImage(screenGrab, "raw:"+GetReadPath()+"screenshots/Screenshot"+str(number)+".png")
settextstring(filesavetext," Image saved as Screenshot"+str(number)+".png in "+ GetReadPath()+"screenshots/")
SetTextSize(filesavetext,3)
textTimer = 1
SetRenderToScreen()
if not gettextvisible(filesavetext) then settextvisible(filesavetext,1)
endif
If textTimer > 0 Then textTimer = textTimer + 1
If textTimer > 249
settextvisible(filesavetext,0)
textTimer = 0
EndIf
// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx end screenshot section
if getrawkeystate(37) // left
if getspritecurrentframe(man1) < 13 then stopsprite(man1)
if GetSpritePlaying(man1) = 0
PlaySprite(man1,man1FPS,1,13,24)
endif
last$ = "left"
man1X# = getspriteX(man1)
if man1X# > 0 // check if right of left limit
man1X# = man1X# - 0.5
setspriteX(man1,man1X#)
endif
elseif getrawkeystate(39) // right
if getspritecurrentframe(man1) > 12 and getspritecurrentframe(man1) < 25 then stopsprite(man1)
if GetSpritePlaying(man1) = 0
PlaySprite(man1,man1FPS,1,1,12)
endif
last$ = "right"
man1X# = getspriteX(man1)
if man1X# < 97 // check if left of right limit
man1X# = man1X# + 0.5
setspriteX(man1,man1X#)
endif
endif
SetSpriteY(man1,GetSpriteY(man1)-yv#+grav#)
// xxxxxxxxxxxxxxxxxxxxxxxxxxx collision test stuff
hit = GetSpriteHitGroup(3,getspriteX(man1)+GetSpriteWidth(man1)/2,getspriteY(man1)+GetSpriteHeight(man1)-0.1)
egghit=0
cratehit=0
if hit
egghit=GetSpriteCollision(man1,eggs)
cratehit=GetSpriteCollision(man1,eggcrate)
endif
eggBoxHit=GetSpriteCollision(man1,eggs)
crateBoxHit=GetSpriteCollision(man1,eggcrate)
// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
onGround = GetSpriteHitGroup(7,getspriteX(man1)+GetSpriteWidth(man1)/2,getspriteY(man1)+GetSpriteHeight(man1))
if onGround = 0
yv# = yv# - grav#
if yv# < -0.5 then yv# = -0.5
SetSpriteY(man1,GetSpriteY(man1) - yv# + grav#)
if last$="left"
setspriteframe(man1,15)
endif
if last$="right"
setspriteframe(man1,3)
endif
stopsprite(man1)
elseif onGround > 0
setspriteY(man1,getspriteY(onGround) - GetSpriteHeight(man1))
if getrawkeystate(38) // up
if jump = 0
jump = 1
endif
endif
yv# = 0.0
If jump = 1
yv# = yv# + 0.62
jump = 0
EndIf
if yv# < 0.0 then yv# = 0.0
endif
// set upper and lower screen limits for player
if GetSpriteY(man1) < 0.0
setspriteY(man1,0.0)
endif
if GetSpriteY(man1) > 100 - getspriteheight(man1)
setspriteY(man1,100 - getspriteheight(man1))
endif
// player stand still
if getrawkeystate(37)=0 and getrawkeystate(39)=0 and getrawkeystate(38)=0 and onGround>0
stopsprite(man1)
SetSpriteFrame(man1,25)
endif
print(" ")
print(" use arrow keys")
print(" onGround "+str(onGround))
print(" hit "+str(hit))
print(" egghit "+str(egghit))
print(" eggBoxHit "+str(eggBoxHit))
print(" cratehit "+str(cratehit))
print(" crateBoxHit "+str(crateBoxHit))
//print(" man1X# "+str(man1X#))
//print(" yv# " + str(yv#))
if GetrawKeyPressed(27) then end
Sync()
loop
BASIC appeared in May 1964. Lightning flashed, the wind roared and the Earth moved.
And nine months later I was born.
So here I am.
I am Basic.
Code is in my genes.