Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Project: varas
- // Created: 2015-08-03
- // set window properties
- SetWindowTitle( "varas" )
- SetWindowSize( 1280, 720, 0 )
- // set display properties
- SetVirtualResolution( 320, 180 )
- SetOrientationAllowed( 1, 1, 0, 0 )
- TYPE characterType
- jumpHeight as integer
- speed as integer
- direction as integer
- sprite
- ENDTYPE
- global player as characterType
- player.jumpHeight = 50
- player.speed = 20
- player.direction = 1 // 1 = to right, -1 to left
- player.sprite = CreateSprite(0)
- SetSpriteVisible(player.sprite,1)
- setspritesize(player.sprite, 15, 30)
- setspritephysicson(player.sprite, 2)
- SetSpriteOffset(player.sprite, 7.5, 15)
- setspritepositionbyoffset(player.sprite, 20, 30)
- SetSpritePhysicsCanRotate(player.sprite, 0)
- dim blocks[255] //generic blocks that serve as obstacles
- global treasureBlock //object of the level
- gamestate = 0 //0 = load new level, 1 = playing level
- do
- if gamestate = 0 //load level
- createLevel(0)
- gamestate = 1
- elseif gamestate = 1 //play level
- getInput()
- updateGame()
- else
- message("Error: Gamestate does not exist!")
- End
- endif
- Print( ScreenFPS() )
- Sync()
- loop
- function createLevel(id)
- if id = 0
- createBlock(0, 120, 165)
- for i = 1 to 10
- createBlock(1, 150 + i*15, 150)
- next i
- else
- Message("Level does not exist!")
- end
- endif
- endfunction
- function createBlock(id, x, y)
- blocks[id] = createSprite(0)
- SetSpriteVisible(blocks[id],1)
- SetSpriteGroup(blocks[id], 1)
- setspritecolor(blocks[id], 255,0,0,255)
- setspritesize(blocks[id], 15, 15)
- setspritephysicson(blocks[id], 1)
- setspriteposition(blocks[id], x, y)
- endfunction
- function getInput()
- if GetPointerPressed() = 1 //jump if pressed
- jump(player)
- endif
- endfunction
- function jump(sub as characterType)
- if jumpPossible(sub) > 0 //check if subject is standing on the ground
- SetSpritePhysicsVelocity(sub.sprite, GetSpritePhysicsVelocityX(sub.sprite), GetSpritePhysicsVelocityY(sub.sprite) - 100)
- endif
- endfunction
- function jumpPossible(sub as characterType)
- spriteY as integer
- spriteY = GetSpriteHeight(sub.sprite)
- if getspriteY(sub.sprite) + spriteY > 179 or checkCollision(sub, sub.direction) = 2
- possible = 1
- endif
- if GetSpritePhysicsVelocityY(sub.sprite) = 0
- possible = 1
- endif
- endfunction possible
- function updateGame()
- updatePlayer()
- endfunction
- function updatePlayer()
- updateGravity(player)
- if checkCollision(player, 1) > 0 // ie. no horizontal collision
- SetSpritePhysicsVelocity(player.sprite, player.speed * player.direction, GetSpritePhysicsVelocityY(player.sprite))
- endif
- endfunction
- function checkCollision(sub as characterType, dir as integer)
- Col = 1
- subLen = GetSpriteWidth(sub.sprite) + 1
- subH = GetSpriteHeight(sub.sprite)
- for i = 0 to blocks.length
- if GetSpriteCollision(sub.sprite, blocks[i]) = 1
- if getspriteY(sub.sprite)+subH > getspriteY(blocks[i])
- Col = 0
- else
- Col = 2
- endif
- endif
- if Col > 1 or Col < 1 then exit
- next i
- endfunction Col //0 = horizontal collision, 1= no horizontal or vertical collision, 2= vertical collision
- function updateGravity(sub as characterType)
- spriteY as integer
- spriteY = GetSpriteHeight(sub.sprite)
- if getspriteY(sub.sprite) + spriteY < 180
- SetSpritePhysicsVelocity(sub.sprite, GetSpritePhysicsVelocityX(sub.sprite), GetSpritePhysicsVelocityY(sub.sprite) + 1)
- else
- SetSpritePhysicsVelocity(sub.sprite, GetSpritePhysicsVelocityX(sub.sprite), 0)
- endif
- endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement