25-02-2009, 09:18 PM
comme il est vilain ^^
le problème ne vient pas de l'algo (j'ai cherché un peu) mais du fait que
carrePivot.style.left renvoie une chaine de caractères de type "160px"
j'ai fait un test ça a l air de marcher :
le problème ne vient pas de l'algo (j'ai cherché un peu) mais du fait que
carrePivot.style.left renvoie une chaine de caractères de type "160px"
j'ai fait un test ça a l air de marcher :
Code PHP :
<?php
<html>
<body>
<div id='c1' style="position : absolute; left: 88px; top: 160px; background:#f00; width:100px; height:100px" >c1</div>
<div id='c2' style="position : absolute; left: 98px; top: 180px; background:#0f0; width:100px; height:100px;">c2</div>
<div id='c3' style="position : absolute; left: 308px; top: 160px; background:#88f; width:100px; height:100px;">c3</div>
<script>
function sommetDansCarre (x, y, carrePivot)
{
if ( ( parseInt(x) >= parseInt(carrePivot.style.left) ) &&
( parseInt(x) <= parseInt(carrePivot.style.left) + parseInt(carrePivot.style.width) -1) &&
( parseInt(y) >= parseInt(carrePivot.style.top) ) &&
( parseInt(y) <= parseInt(carrePivot.style.top) + parseInt(carrePivot.style.height) -1) )
{
return true;
}
else
{
return false;
}
}
function Collision (Carre2, Carre1)
{
if (sommetDansCarre ( Carre2.style.left, Carre2.style.top, Carre1) ||
sommetDansCarre (Carre2.style.left + Carre2.style.width-1, Carre2.style.top, Carre1) ||
sommetDansCarre (Carre2.style.left, Carre2.style.top + Carre2.style.height-1, Carre1) ||
sommetDansCarre (Carre2.style.left + Carre2.style.width-1, Carre2.style.top + Carre2.style.height-1, Carre1) )
alert("collision entre "+Carre2.innerHTML+" et "+Carre1.innerHTML);
else
alert(" pas de collision entre "+Carre2.innerHTML+" et "+Carre1.innerHTML);
}
Collision( document.getElementById('c2'), document.getElementById('c1') );
Collision( document.getElementById('c1'), document.getElementById('c3') );
Collision( document.getElementById('c3'), document.getElementById('c2') );
</script>
</body>
</html>