Code de la Solution :
-- Cette ligne permet d'afficher des traces dans la console pendant l'exécution io.stdout:setvbuf('no') -- Empêche Love de corriger les contours d'images. -- Indispensable pour du pixel art : love.graphics.setDefaultFilter("nearest") -- Cette ligne permet de déboguer pas à pas dans ZeroBraneStudio : if arg[#arg] == "-debug" then require("mobdebug").start() end -- debug for Visual Code : if os.getenv("LOCAL_LUA_DEBUGGER_VSCODE") == "1" then require("lldebugger").start() end ------------------------------------------------------------------------------------------------------ love.window.setTitle("Affichage, Deplacement et Rotation d'une Image") ------------------------------------------------------------------------------------------------------ local vaisseau = {} vaisseau.imageData = love.graphics.newImage("vaisseau.png") vaisseau.w , vaisseau.h = vaisseau.imageData:getDimensions() vaisseau.ox = vaisseau.w/2 vaisseau.oy = vaisseau.h/2 vaisseau.rayon = math.max(vaisseau.ox, vaisseau.oy) vaisseau.x, vaisseau.y = 300, 250 vaisseau.speed = 60 vaisseau.rotate = 0 vaisseau.speedRotate = 5 local color = {} -- color = {r,g,b,a} color.white = {1, 1, 1, 1} color.blue = {0, 0, 1, 0.8} color.green = {0, 1, 0, 0.8} function love.update(dt) -- Rotate if love.keyboard.isDown("left") and love.keyboard.isDown("right") then -- Si on appuis sur deux touches de direction opposée : on ne bouge pas =) elseif love.keyboard.isDown("left") then vaisseau.rotate = vaisseau.rotate - (vaisseau.speedRotate * dt) elseif love.keyboard.isDown("right") then vaisseau.rotate = vaisseau.rotate + (vaisseau.speedRotate * dt) end -- Horizontal Move if love.keyboard.isDown("q") and love.keyboard.isDown("d") then -- Si on appuis sur deux touches de direction opposée : on ne bouge pas =) elseif love.keyboard.isDown("q") then -- left vaisseau.x = vaisseau.x - vaisseau.speed * dt elseif love.keyboard.isDown("d") then -- right vaisseau.x = vaisseau.x + vaisseau.speed * dt end -- Vertical Move if love.keyboard.isDown("z") and love.keyboard.isDown("s") then -- Si on appuis sur deux touches de direction opposée : on ne bouge pas =) elseif love.keyboard.isDown("z") then -- up vaisseau.y = vaisseau.y - vaisseau.speed * dt elseif love.keyboard.isDown("s") then -- down vaisseau.y = vaisseau.y + vaisseau.speed * dt end end function love.draw() -- l'image du vaisseau : love.graphics.setColor(color.white) love.graphics.draw( vaisseau.imageData, vaisseau.x, vaisseau.y, vaisseau.rotate, vaisseau.sx, vaisseau.sy, vaisseau.ox, vaisseau.oy) -- son contour vert : love.graphics.setColor(color.green) love.graphics.circle("line", vaisseau.x, vaisseau.y, vaisseau.rayon) -- le point d'origine de l'image en bleue: love.graphics.setColor(color.blue) love.graphics.circle("fill", vaisseau.x, vaisseau.y, 5) end
Télécharger la Solution :
https://www.dropbox.com/Mini_Tp_deplacer_et_tourner_image.zip