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 3.8 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
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  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. gameStatus = "setup"
  10. playbutts = {}
  11. guibutts = {}
  12. XCAM = 0
  13. currentScore = 0
  14. thrusterMax = 0
  15. YCAM = 0
  16. firstShip.fuel = 0
  17. explosions = {}
  18. shipIsHit = false
  19. guimenu = mainMenu()
  20. table.insert(playbutts, menu:addButton("Return to setup", function()
  21. gameStatus = "setup"
  22. practice.reset()
  23. end ))
  24. table.insert(guibutts, menu:addButton("Release brake!", function ()
  25. if shipsleft == 0 then
  26. selectedItem = "none"
  27. gameStatus = "play"
  28. end
  29. end
  30. ))
  31. table.insert(guibutts, menu:addButton("To menu", function ()
  32. practice.goBack()
  33. end
  34. ))
  35. levelLoaded = true
  36. end
  37. camera:update(dt)
  38. --print(camera.x .. " " .. camera.y)
  39. for i, explosion in ipairs(explosions) do
  40. explosion:update(dt)
  41. if explosion.killed then
  42. table.remove(explosions, i)
  43. gameStatus = "setup"
  44. practice.reset()
  45. end
  46. end
  47. if gameStatus == "play" then
  48. camera.x, camera.y = firstShip.x - firstShip.height*4, firstShip.y- firstShip.width
  49. --print(camera.x .. firstShip.x)
  50. if shipIsHit then
  51. if #explosions == 0 then
  52. table.insert(explosions, explosion(firstShip.x, firstShip.y, 100, {1,1,1,1}))
  53. end
  54. end
  55. firstShip:update(dt)
  56. for i in ipairs(planets) do
  57. planets[i]:update(dt)
  58. end
  59. currentScore = currentScore + math.sqrt(firstShip.dx^2 + firstShip.dy^2)
  60. else
  61. camera:follow(VCAM.x, VCAM.y)
  62. end
  63. practice.GUIControl()
  64. end
  65. function practice.draw()
  66. camera:attach()
  67. firstShip:draw()
  68. for i in ipairs(planets) do
  69. planets[i]:draw(dt)
  70. end
  71. --love.graphics.rectangle("fill",VCAM.x,VCAM.y,30,30)
  72. if shipIsHit then
  73. for i, explosion in ipairs(explosions) do
  74. explosion:render()
  75. --print("exploding")
  76. end
  77. end
  78. camera:detach()
  79. camera:draw()
  80. if gameStatus == "setup" then
  81. GUIDraw("anywhere")
  82. practice.hint()
  83. elseif gameStatus == "play" then
  84. local textW = tinyfont:getWidth("Score: " .. math.floor(currentScore/100))
  85. love.graphics.print("Score: " .. math.floor(currentScore/100), WINDOW_WIDTH/2-textW/2, 10)
  86. guimenu:butt(playbutts, WINDOW_WIDTH, WINDOW_HEIGHT, 1100, WINDOW_HEIGHT-50, 40, WINDOW_WIDTH/3)
  87. love.keyboard.mouseisReleased = false
  88. end
  89. end
  90. function practice.goBack()
  91. practice.reset()
  92. gameStatus = "setup"
  93. levelLoaded = false
  94. gameState = "menu"
  95. end
  96. function practice.reset()
  97. firstShip:reset()
  98. for k in pairs(planets) do
  99. planets[k] = nil
  100. end
  101. shipsleft = 1
  102. if currentScore > saveData.score then
  103. saveData.score = currentScore
  104. end
  105. currentScore = 0
  106. shipIsHit = false
  107. planetsleft = 10
  108. firstShip.fuel = 99999
  109. end
  110. function practice.GUIControl()
  111. if (love.keyboard.isDown('w')) then
  112. VCAM.y = VCAM.y - 10
  113. end
  114. if (love.keyboard.isDown('a')) then
  115. VCAM.x = VCAM.x - 10
  116. end
  117. if (love.keyboard.isDown('s')) then
  118. VCAM.y = VCAM.y + 10
  119. end
  120. if (love.keyboard.isDown('d')) then
  121. VCAM.x = VCAM.x + 10
  122. end
  123. end
  124. function practice.hint()
  125. love.graphics.setFont(tinyfont)
  126. love.graphics.print("↑[W]",50,10)
  127. love.graphics.print("↓[S]",50,100)
  128. love.graphics.print("←[A]",10,50)
  129. love.graphics.print("→[D]",100,50)
  130. end
  131. return practice