cela fait déjà des mois et des mois que j'essaye de coder un programme (en lua, pour ceux qui se sont perdu), avec des objets (le plus simplement possible ici, des carrés).
C'est facile, je le code habituellement en une minute, sauf que là, j'essaye de mettre en place les collisions entre les objets, et que je ne vois absolument pas comment faire!
Le code (vite fait):
- Code: Select all
function on.resize ()
w = platform.window: width ()
h = platform.window: height ()
box = class ()
function box: init ()
self.x = math.random (0, w)
self.y = 0
self.mx = math.random (-4, 4)
self.my = 0
self.w = 16
self.h = 16
self.friction = 0.4
end
function box: gravity ()
self.my = self.my+1
end
function box: bounce ()
if self.x < 0 then
self.x = 0
self.mx = -self.mx * self.friction
self.my = self.my * math.sqrt (self.friction)
end
if self.x + self.w > w then
self.x = w - self.w
self.mx = -self.mx * self.friction
self.my = self.my * math.sqrt (self.friction)
end
if self.y < 0 then
self.y = 0
self.my = -self.my * self.friction
self.mx = self.mx * math.sqrt (self.friction)
end
if self.y + self.h > h then
self.y = h - self.h
self.my = -self.my * self.friction
self.mx = self.mx * math.sqrt (self.friction)
end
for a, b in pairs (obj) do
if b == self then else
-- c'est ici que je bloque
end
end
end
function box: move ()
self.x = self.x + self. mx
self.y = self.y + self. my
end
function box: paint (gc)
gc: fillRect (self.x, self.y, self.w, self.h)
end
obj = {box ()}
timer.start (0.03)
function on.timer ()
platform.window: invalidate ()
end
function on.paint (gc)
for a, b in pairs (obj) do
b: gravity ()
b: move ()
b: bounce ()
b: paint (gc)
end
end
function on.enterKey ()
obj[#obj+1] = box ()
end
end
J'espère donc que quelqu'un saura m'aider.