No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

practice.lua 5.1 KiB

hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. practice = Class{}
  2. local levelLoaded = false
  3. local M = {}
  4. local currenctScore = 0
  5. function practice.update(dt)
  6. if not levelLoaded then
  7. shipsleft = 1
  8. planetsleft = 10
  9. cannonsleft = 10
  10. gameStatus = "setup"
  11. playbutts = {}
  12. guibutts = {}
  13. XCAM = 0
  14. currentScore = 0
  15. thrusterMax = 0
  16. YCAM = 0
  17. firstShip.fuel = 0
  18. explosions = {}
  19. shipIsHit = false
  20. guimenu = mainMenu()
  21. table.insert(playbutts, menu:addButton("Return to setup", function()
  22. gameStatus = "setup"
  23. practice.reset()
  24. end ))
  25. table.insert(guibutts, menu:addButton("Release brake!", function ()
  26. if shipsleft == 0 then
  27. selectedItem = "none"
  28. gameStatus = "play"
  29. end
  30. end
  31. ))
  32. table.insert(guibutts, menu:addButton("To menu", function ()
  33. practice.goBack()
  34. end
  35. ))
  36. levelLoaded = true
  37. end
  38. camera:update(dt)
  39. --print(camera.x .. " " .. camera.y)
  40. for i, explosion in ipairs(explosions) do
  41. explosion:update(dt)
  42. if explosion.killed then
  43. table.remove(explosions, i)
  44. if shipIsHit then
  45. gameStatus = "setup"
  46. practice.reset()
  47. end
  48. end
  49. end
  50. if gameStatus == "play" then
  51. camera.x, camera.y = firstShip.x - firstShip.height*4, firstShip.y- firstShip.width
  52. --print(camera.x .. firstShip.x)
  53. if shipIsHit then
  54. if #explosions == 0 then
  55. table.insert(explosions, explosion(firstShip.x, firstShip.y, 100, {1,1,1,1}))
  56. end
  57. end
  58. firstShip:update(dt)
  59. for i in ipairs(planets) do
  60. planets[i]:update(dt)
  61. end
  62. for i in ipairs(cannons) do
  63. cannons[i]:update(dt)
  64. end
  65. for i in ipairs(projectiles) do
  66. projectiles[i]:update(dt)
  67. end
  68. for i in ipairs(projectiles) do
  69. if projectiles[i].killed then
  70. table.remove(projectiles, i)
  71. --print("killing")
  72. end
  73. end
  74. currentScore = currentScore + math.sqrt(firstShip.dx^2 + firstShip.dy^2)
  75. else
  76. camera:follow(VCAM.x, VCAM.y)
  77. end
  78. practice.GUIControl()
  79. end
  80. function practice.draw()
  81. camera:attach()
  82. firstShip:draw()
  83. for i in ipairs(planets) do
  84. planets[i]:draw(dt)
  85. end
  86. for i in ipairs(cannons) do
  87. cannons[i]:draw(dt)
  88. end
  89. for i in ipairs(projectiles) do
  90. projectiles[i]:draw(dt)
  91. end
  92. --love.graphics.rectangle("fill",VCAM.x,VCAM.y,30,30)
  93. if shipIsHit then
  94. for i, explosion in ipairs(explosions) do
  95. explosion:render()
  96. --print("exploding")
  97. end
  98. end
  99. camera:detach()
  100. camera:draw()
  101. if gameStatus == "setup" then
  102. GUIDraw("anywhere")
  103. love.graphics.setFont(tinyfont)
  104. local textW = tinyfont:getWidth("Top score: " .. math.floor(saveData.score/100))
  105. love.graphics.print("Top score: " .. math.floor(saveData.score/100), WINDOW_WIDTH/2-textW/2, 10)
  106. practice.hint()
  107. elseif gameStatus == "play" then
  108. local textW = tinyfont:getWidth("Score: " .. math.floor(currentScore/100))
  109. love.graphics.setFont(tinyfont)
  110. love.graphics.print("Score: " .. math.floor(currentScore/100), WINDOW_WIDTH/2-textW/2, 10)
  111. guimenu:butt(playbutts, WINDOW_WIDTH, WINDOW_HEIGHT, 1100, WINDOW_HEIGHT-50, 40, WINDOW_WIDTH/3)
  112. love.keyboard.mouseisReleased = false
  113. end
  114. end
  115. function practice.goBack()
  116. practice.reset()
  117. gameStatus = "setup"
  118. levelLoaded = false
  119. gameState = "menu"
  120. cannons = {}
  121. end
  122. function practice.reset()
  123. firstShip:reset()
  124. projectiles = {}
  125. shipsleft = 1
  126. if currentScore > saveData.score then
  127. saveData.score = currentScore
  128. love.filesystem.write("save", serialize(saveData))
  129. end
  130. currentScore = 0
  131. shipIsHit = false
  132. firstShip.fuel = 99999
  133. end
  134. function practice.GUIControl()
  135. if (love.keyboard.isDown('w')) then
  136. VCAM.y = VCAM.y - 10
  137. end
  138. if (love.keyboard.isDown('a')) then
  139. VCAM.x = VCAM.x - 10
  140. end
  141. if (love.keyboard.isDown('s')) then
  142. VCAM.y = VCAM.y + 10
  143. end
  144. if (love.keyboard.isDown('d')) then
  145. VCAM.x = VCAM.x + 10
  146. end
  147. end
  148. function practice.hint()
  149. love.graphics.setFont(tinyfont)
  150. if love.keyboard.isDown('w') then
  151. love.graphics.setColor(1,0,0,1)
  152. end
  153. love.graphics.print("↑[W]",80,10)
  154. love.graphics.setColor(1,1,1,1)
  155. if love.keyboard.isDown('s') then
  156. love.graphics.setColor(1,0,0,1)
  157. end
  158. love.graphics.print("↓[S]",80,100)
  159. love.graphics.setColor(1,1,1,1)
  160. if love.keyboard.isDown('a') then
  161. love.graphics.setColor(1,0,0,1)
  162. end
  163. love.graphics.print("←[A]",10,50)
  164. love.graphics.setColor(1,1,1,1)
  165. if love.keyboard.isDown('d') then
  166. love.graphics.setColor(1,0,0,1)
  167. end
  168. love.graphics.print("→[D]",150,50)
  169. love.graphics.setColor(1,1,1,1)
  170. end
  171. return practice