Advertisement
Guest User

Untitled

a guest
Aug 3rd, 2015
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.50 KB | None | 0 0
  1.  
  2. // Project: varas
  3. // Created: 2015-08-03
  4.  
  5. // set window properties
  6. SetWindowTitle( "varas" )
  7. SetWindowSize( 1280, 720, 0 )
  8.  
  9. // set display properties
  10. SetVirtualResolution( 320, 180 )
  11. SetOrientationAllowed( 1, 1, 0, 0 )
  12.  
  13.  
  14. TYPE characterType
  15. jumpHeight as integer
  16. speed as integer
  17. direction as integer
  18. sprite
  19. ENDTYPE
  20.  
  21.  
  22. global player as characterType
  23. player.jumpHeight = 50
  24. player.speed = 20
  25. player.direction = 1 // 1 = to right, -1 to left
  26. player.sprite = CreateSprite(0)
  27. SetSpriteVisible(player.sprite,1)
  28. setspritesize(player.sprite, 15, 30)
  29. setspritephysicson(player.sprite, 2)
  30. SetSpriteOffset(player.sprite, 7.5, 15)
  31. setspritepositionbyoffset(player.sprite, 20, 30)
  32. SetSpritePhysicsCanRotate(player.sprite, 0)
  33.  
  34. dim blocks[255] //generic blocks that serve as obstacles
  35. global treasureBlock //object of the level
  36.  
  37. gamestate = 0 //0 = load new level, 1 = playing level
  38. do
  39. if gamestate = 0 //load level
  40. createLevel(0)
  41. gamestate = 1
  42. elseif gamestate = 1 //play level
  43.  
  44. getInput()
  45. updateGame()
  46.  
  47. else
  48. message("Error: Gamestate does not exist!")
  49. End
  50. endif
  51. Print( ScreenFPS() )
  52. Sync()
  53. loop
  54.  
  55. function createLevel(id)
  56.  
  57. if id = 0
  58. createBlock(0, 120, 165)
  59. for i = 1 to 10
  60. createBlock(1, 150 + i*15, 150)
  61. next i
  62. else
  63. Message("Level does not exist!")
  64. end
  65. endif
  66. endfunction
  67.  
  68. function createBlock(id, x, y)
  69. blocks[id] = createSprite(0)
  70. SetSpriteVisible(blocks[id],1)
  71. SetSpriteGroup(blocks[id], 1)
  72. setspritecolor(blocks[id], 255,0,0,255)
  73. setspritesize(blocks[id], 15, 15)
  74. setspritephysicson(blocks[id], 1)
  75. setspriteposition(blocks[id], x, y)
  76. endfunction
  77.  
  78. function getInput()
  79. if GetPointerPressed() = 1 //jump if pressed
  80. jump(player)
  81. endif
  82. endfunction
  83.  
  84. function jump(sub as characterType)
  85. if jumpPossible(sub) > 0 //check if subject is standing on the ground
  86. SetSpritePhysicsVelocity(sub.sprite, GetSpritePhysicsVelocityX(sub.sprite), GetSpritePhysicsVelocityY(sub.sprite) - 100)
  87. endif
  88. endfunction
  89.  
  90. function jumpPossible(sub as characterType)
  91. spriteY as integer
  92. spriteY = GetSpriteHeight(sub.sprite)
  93.  
  94. if getspriteY(sub.sprite) + spriteY > 179 or checkCollision(sub, sub.direction) = 2
  95. possible = 1
  96. endif
  97. if GetSpritePhysicsVelocityY(sub.sprite) = 0
  98. possible = 1
  99. endif
  100. endfunction possible
  101.  
  102. function updateGame()
  103. updatePlayer()
  104. endfunction
  105.  
  106. function updatePlayer()
  107. updateGravity(player)
  108. if checkCollision(player, 1) > 0 // ie. no horizontal collision
  109. SetSpritePhysicsVelocity(player.sprite, player.speed * player.direction, GetSpritePhysicsVelocityY(player.sprite))
  110. endif
  111. endfunction
  112.  
  113. function checkCollision(sub as characterType, dir as integer)
  114. Col = 1
  115.  
  116. subLen = GetSpriteWidth(sub.sprite) + 1
  117. subH = GetSpriteHeight(sub.sprite)
  118.  
  119. for i = 0 to blocks.length
  120. if GetSpriteCollision(sub.sprite, blocks[i]) = 1
  121. if getspriteY(sub.sprite)+subH > getspriteY(blocks[i])
  122. Col = 0
  123. else
  124. Col = 2
  125. endif
  126. endif
  127. if Col > 1 or Col < 1 then exit
  128. next i
  129.  
  130. endfunction Col //0 = horizontal collision, 1= no horizontal or vertical collision, 2= vertical collision
  131.  
  132. function updateGravity(sub as characterType)
  133. spriteY as integer
  134. spriteY = GetSpriteHeight(sub.sprite)
  135.  
  136. if getspriteY(sub.sprite) + spriteY < 180
  137. SetSpritePhysicsVelocity(sub.sprite, GetSpritePhysicsVelocityX(sub.sprite), GetSpritePhysicsVelocityY(sub.sprite) + 1)
  138. else
  139. SetSpritePhysicsVelocity(sub.sprite, GetSpritePhysicsVelocityX(sub.sprite), 0)
  140. endif
  141. endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement