this is the code(sorry for the //.. I'm french):
init = function()
player = object
x = 0
y = 0
hauteur = 50
largeur = 50
end
wall = object
x = 0 // Déplacez le mur pour qu'il ne soit pas au même endroit que le joueur au début
y = -50
hauteur = 50
largeur = 50
end
collision = false
end
update = function()
// 1. Calculer la prochaine position (destination)
local nextX = player.x
local nextY = player.y
if keyboard.UP then nextY += 2 end // Y diminue quand on monte
if keyboard.DOWN then nextY -= 2 end // Y augmente quand on descend
if keyboard.LEFT then nextX -= 2 end
if keyboard.RIGHT then nextX += 2 end
// 2. Créer un objet temporaire pour tester la collision AVANT de bouger
local potentialPlayer = object
x = nextX
y = nextY
largeur = player.largeur
hauteur = player.hauteur
end
// 3. Vérifier si la position de destination cause une collision
if checkCollision(potentialPlayer, wall) then
// Si collision, ne rien faire (bloque le mouvement)
print("C - Collision bloquée")
collision = true
else
// Si pas de collision, mettre à jour la position réelle du joueur
player.x = nextX
player.y = nextY
print("N - Pas de collision")
collision = false
end
end
draw = function()
screen.clear("rgb(142,255,217)")
// Dessine le mur d'abord pour qu'il soit en dessous du joueur visuellement
// Assurez-vous d'avoir un sprite nommé "wall" et "player"
screen.drawSprite("wall", wall.x, wall.y, wall.largeur, wall.hauteur)
screen.drawSprite("player", player.x, player.y, player.largeur, player.hauteur)
// Correction de la virgule manquante ici
// screen.drawMap("world", 0, 0, 500, 500)
end
checkCollision = function(r1, r2)
// Utilise les noms de variables corrects : largeur, hauteur
// Note : Ce calcul suppose que x, y sont les coins supérieurs gauches des objets
return r1.x < r2.x + r2.largeur and
r1.x + r1.largeur > r2.x and
r1.y < r2.y + r2.hauteur and
r1.y + r1.hauteur > r2.y
end