Bonjour,

Voilà, je suis en train de coder un jeu dans lequel on a un carré qui se déplace.
Comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
function env_ennemis(nb)
{
	var rnd = RandomNum(1, 4);
	var x;
	var y;
      	var en = SVGDocument.createElementNS(svgns, 'rect');
 
	if(rnd == 1)
	{
		x = 0;
		y = RandomNum(0, 500);
	}
	else if(rnd == 2)
	{
		x = 500;
		y = RandomNum(0, 500);
	}
	else if(rnd == 3)
	{
		y = 0;
		x = RandomNum(0, 500);
	}
	else if(rnd == 4)
	{
		y = 500;
		x = RandomNum(0, 500);
	}
 
       en.setAttributeNS(null, 'id', 'ennemi_' + nb);
       	en.setAttributeNS(null, 'x', x);
       en.setAttributeNS(null, 'y', y);
       en.setAttributeNS(null, 'width', '20');
       en.setAttributeNS(null, 'height', '20');
       en.setAttributeNS(null, 'fill', 'blue');
       en.setAttributeNS(null, 'stroke', 'black');
       en.setAttributeNS(null, 'stroke-width', '2px');
	SVGRoot.appendChild(en);
	deplace_en(en, parseInt(x), parseInt(y));
 
	window.setTimeout(function(){env_ennemis(nb+1)}, 1000);
};
L'idée de l'appel récursif à la fin de la fonction, c'est que toutes les secondes, un nouvel ennemi fasse son apparition et se déplace comme les autres, à l'aide de la fonction deplace_en, elle-même récursive.
Or, ce n'est pas du tout ce qui se passe en pratique.
Toutes les secondes, l'ancien élément disparait, et le suivant se déplace 2 fois plus rapidement que le précédent ! Comme si la fonction deplace_en était appeler 2 fois, puis 3 fois, etc. à chaque déplacement.

Quelqu'un peut m'aider ?
J'ai déjà du mal à comprendre cet histoire de vitesse, mais alors pourquoi mon objet disparait à chaque récursion, je n'y comprends strictement rien ! Surtout que j'ai d'autres fonctions qui fonctionnent selon le même principe de création par récursion et qui marchent parfaitement...

Merci d'avance