La Solution que je vous propose :
-- Titre du jeu (visible sur la fenetre) :
love.window.setTitle("Faconkode.fr : Infinite Rebounds")
-- Color = {red, green, blue, alpha}
local blanc = { 1, 1, 1, 1 }
local rouge = { 1, 0, 0, 1 }
local vert = { 0, 1, 0, 1 }
local bleu = { 0, 0, 1, 1 }
local noir = { 0, 0, 0, 1 }
local gris = { 0.25, 0.25, 0.25, 1 }
-- Table de l'Objet de la Fenetre Love2D:
local Fenetre = {}
-- Fonction
function Fenetre.load()
-- la fenetre est un rectangle(x, y, w, h) :
Fenetre.x=0
Fenetre.y=0
Fenetre.w=love.graphics.getWidth()
Fenetre.h=love.graphics.getHeight()
end
--
-- Table des Objets Rectangles :
local Rectangles = {}
-- Fonction de creation des Rectangles :
function Rectangles.load()
Rectangles[1] = {x=10, y=10, w=100, h=20, color=blanc, vx=526, vy=40}
Rectangles[2] = {x=210, y=125, w=100, h=20, color=rouge, vx=125, vy=240}
Rectangles[3] = {x=605, y=525, w=100, h=20, color=vert, vx=0-226, vy=0-340}
Rectangles[4] = {x=405, y=260, w=100, h=20, color=bleu, vx=0-125, vy=0-650}
Rectangles[5] = {x=350, y=480, w=100, h=20, color=gris, vx=850, vy=0-340}
end
--
-- Fonction de déplacement des Rectangles :
function Rectangles.move(dt)
for i = 1, #Rectangles do
Rectangles[i].x = Rectangles[i].x + (Rectangles[i].vx * dt)
Rectangles[i].y = Rectangles[i].y + (Rectangles[i].vy * dt)
end
end
--
-- Fonction de Replacement et Renvois de vélocité des Rectangles :
function Rectangles.renvoiVelocite(dt)
for i = 1, #Rectangles do
-- Gauche :
if Rectangles[i].x <= Fenetre.x then
Rectangles[i].x = Fenetre.x
Rectangles[i].vx = 0 - Rectangles[i].vx
end
-- Droite :
if Rectangles[i].x + Rectangles[i].w >= Fenetre.w then
Rectangles[i].x = Fenetre.w - Rectangles[i].w
Rectangles[i].vx = 0 - Rectangles[i].vx
end
-- Haut :
if Rectangles[i].y <= Fenetre.y then
Rectangles[i].y = Fenetre.y
Rectangles[i].vy = 0 - Rectangles[i].vy
end
-- Bas :
if Rectangles[i].y >= Fenetre.h then
Rectangles[i].y = Fenetre.h - Rectangles[i].h
Rectangles[i].vy = 0 - Rectangles[i].vy
end
end
end
--
-- Fonction d'update des Rectangles avec le DeltaTime :
function Rectangles.update(dt)
Rectangles.move(dt)
Rectangles.renvoiVelocite(dt)
end
--
-- Fonction draw des Rectangles :
function Rectangles.draw()
for i = 1, #Rectangles do
love.graphics.setColor(Rectangles[i].color)
love.graphics.rectangle("fill", Rectangles[i].x, Rectangles[i].y, Rectangles[i].w, Rectangles[i].h)
love.graphics.setColor(blanc)
end
end
--
-- Les Fonctions love2D :
function love.load()
Fenetre.load()
Rectangles.load()
end
--
function love.update(dt)
Rectangles.update(dt)
end
--
function love.draw()
Rectangles.draw()
end
--Rendu :
cliquer sur le lien pour voir le rendu directement dans votre navigateur :
Inifinite Rebounds by Crypto Logiq (itch.io)