Bonjour,
Voilà, je suis en train de coder un jeu dans lequel on a un carré qui se déplace.
Comme ceci :
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.
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); };
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![]()
Partager