Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.42 KB | None | 0 0
  1. -- Cette ligne permet d'afficher des traces dans la console pendant l'éxécution
  2. io.stdout:setvbuf('no')
  3.  
  4. -- Cette ligne permet de filtrer les contours des images quand elles sont redimentionnées
  5. love.graphics.setDefaultFilter("nearest")
  6.  
  7. -- Cette ligne permet de déboguer pas a pas dans ZeroBraneStudio
  8. if arg[#arg] == "-debug" then require("mobdebug").start() end
  9.  
  10. local musicFont = love.audio.newSource("musiques/Alexander Ehlers - Flags.mp3", "stream")
  11.  
  12.  
  13. player = {}
  14. player.engineOn = false
  15. player.engineBoost = false
  16.  
  17.  
  18. sprites = {}
  19.  
  20. asteroids = {}
  21.  
  22.  
  23.  
  24. timer = 0
  25.  
  26.  
  27.  
  28. ------------------------------------------------------------------------------
  29. -----------------CREATION SPRITE---CREATION SPRITE---CREATION SPRITE----------
  30. ------------------------------------------------------------------------------
  31.  
  32. function CreateSprite(pNomImage, pX, pY)
  33. -- Fonction pour générer tous les sprites avec quelques paramètres
  34. sprite = {}
  35. sprite.x = pX
  36. sprite.y = pY
  37. sprite.vx = 0
  38. sprite.vy = 0
  39. sprite.speed = 0.001
  40. sprite.speedBoost = 0.005
  41. sprite.image = love.graphics.newImage("images/"..pNomImage..".png")
  42. sprite.w = sprite.image:getWidth()
  43. sprite.h = sprite.image:getHeight()
  44. sprite.angle = 270
  45. table.insert(sprites, sprite)
  46. return sprite
  47.  
  48. end
  49.  
  50. ---------------------------------------------------------------------------------
  51. ----------------------CREATION ASTEROID---CREATION ASTEROID---CREATION ASTEROID--
  52. ---------------------------------------------------------------------------------
  53. function CreateSpriteAsteroid(pNomImage, aX, aY, aA, aVx, aVy)
  54.  
  55. asteroid = {}
  56. asteroid.image = love.graphics.newImage("images/"..pNomImage..".png")
  57. asteroid.x = aX or love.math.random(10, love.graphics.getWidth() - 100)
  58. asteroid.y = aY or love.math.random(10, love.graphics.getHeight() - 100)
  59. asteroid.angle = aA or math.rad(love.math.random(1, 360))
  60. asteroid.speed = love.math.random(5,50) / 100
  61. asteroid.vx = aVx or math.cos(asteroid.angle) * asteroid.speed
  62. asteroid.vy = aVy or math.sin(asteroid.angle) * asteroid.speed
  63. table.insert(asteroids, asteroid)
  64. return asteroid
  65.  
  66. end
  67.  
  68. -----------------------------------------------------------------------------
  69. --------------------LOAD---LOAD---LOAD---------------------------------------
  70. -----------------------------------------------------------------------------
  71.  
  72. function love.load()
  73.  
  74. mainFont = love.graphics.newImage("images/Space.png")
  75. --love.audio.play(musicFont)
  76.  
  77. love.window.setMode(1280, 720)
  78.  
  79. screenWidth = love.graphics.getWidth()
  80. screenHeight = love.graphics.getHeight()
  81.  
  82. player = CreateSprite("Ship", (screenWidth/2), (screenHeight/2))
  83. player.engine = love.graphics.newImage("images/Engine.png")
  84.  
  85. local meteor
  86. for meteor=1, love.math.random(2, 10) do
  87. CreateSpriteAsteroid("Meteor1", aX, aY, aA, aVx, aVy)
  88. end
  89.  
  90.  
  91. end
  92.  
  93. -----------------------------------------------------------------------------
  94. -------------------COLLISION---COLLISION---COLLISION-------------------------
  95. -----------------------------------------------------------------------------
  96.  
  97. function SpriteCollision()
  98.  
  99.  
  100.  
  101. end
  102.  
  103. -----------------------------------------------------------------------------
  104. -------------------UPDATE---UPDATE---UPDATE----------------------------------
  105. -----------------------------------------------------------------------------
  106.  
  107. function love.update(dt)
  108.  
  109. if love.keyboard.isDown("a") then
  110. player.angle = player.angle - 0.3
  111. end
  112.  
  113. if love.keyboard.isDown("d") then
  114. player.angle = player.angle + 0.3
  115. end
  116.  
  117. if love.keyboard.isDown("w") then
  118. player.engineOn = true
  119. local angle = math.rad(player.angle)
  120. local force_x = math.cos(angle) * player.speed
  121. local force_y = math.sin(angle) * player.speed
  122. player.vx = player.vx + force_x
  123. player.vy = player.vy + force_y
  124. else
  125. player.engineOn = false
  126. end
  127.  
  128. player.x = player.x + player.vx
  129. player.y = player.y + player.vy
  130.  
  131. if love.keyboard.isDown("lshift") then
  132. player.engineBoost = true
  133. player.speed = player.speedBoost
  134. end
  135. player.speed = math.max(0.001, player.speed - dt)
  136.  
  137. if player.x >= screenWidth - (player.w/2) then -- Collision avec le mur de droite
  138. player.x = screenWidth - (player.w/2)
  139. end
  140. if player.y < 0 + (player.h/2) then -- Collision avec le mur du haut
  141. player.y = 0 + (player.h/2)
  142. end
  143. if player.x < 0 + (player.w/2) then -- Collision avec le mur de gauche
  144. player.x = 0 + (player.w/2)
  145. end
  146. if player.y >= screenHeight - (player.h/2) then -- Collision avec le mur du bas
  147. player.y = screenHeight - (player.h/2)
  148. end
  149.  
  150. if asteroid.x > screenWidth and asteroid.y > screenWidth then
  151. asteroid.x = 0
  152. end
  153. if asteroid.x < 0 then
  154. asteroid.x = screenWidth
  155. end
  156. if asteroid.y > screenHeight then
  157. asteroid.y = 0
  158. end
  159. if asteroid.y < 0 then
  160. asteroid.y = screenHeight
  161. end
  162.  
  163. asteroid.x = asteroid.x + asteroid.vx
  164. asteroid.y = asteroid.y + asteroid.vy
  165. end
  166.  
  167. -----------------------------------------------------------------------------
  168. ------------------DRAW---DRAW---DRAW-----------------------------------------
  169. -----------------------------------------------------------------------------
  170.  
  171. function love.draw()
  172.  
  173. love.graphics.draw(mainFont, 0, 0, 0, 1, 1)
  174.  
  175. local n
  176. for n=1, #sprites do
  177. local s = sprites[n]
  178. love.graphics.draw(s.image, s.x, s.y, math.rad(s.angle), 1, 1, (s.w/2), (s.h/2))
  179. end
  180.  
  181.  
  182. for i, asteroid in ipairs(asteroids) do
  183. love.graphics.draw(asteroid.image, asteroid.x, asteroid.y, math.rad(asteroid.angle), 1.5, 1.5)
  184. end
  185.  
  186. if player.engineOn == true then
  187. love.graphics.draw(player.engine, player.x, player.y, math.rad(player.angle), 1, 1, player.engine:getWidth()/2, player.engine:getHeight()/2)
  188. end
  189.  
  190. love.graphics.print("Vitesse : "..tostring(player.speed), 100, 100)
  191. love.graphics.print("vx : "..tostring(asteroid.vx), 100, 120)
  192. love.graphics.print("CreateSpriteAsteroid : "..tostring(#asteroids), 100, 140)
  193. love.graphics.print("Asteroid.x : "..tostring(asteroid.x), 100, 160)
  194. love.graphics.print("Asteroid.y : "..tostring(asteroid.y), 100, 180)
  195.  
  196.  
  197. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement