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)
endTélécharger la Solution :
https://www.dropbox.com/Mini_Tp_deplacer_et_tourner_image.zip