Bonjour,

Je reviens vers vous suite à mon précédent topic sur la réalisation du jeu Space Invaders.
Je suis arrivé à un étape ou j'aimerais quand je clique sur un alien dans mon canvas qu'il disparaisse et remonte en haut.
Pour cela, j'ai créé une fonction gere_clic() qui mes clics dans le canvas. J'arrive à récupérer les coordonnées lorsque je clique sur un alien mais le souci je n'arrive pas à faire cacher mon alien ni le faire remonter. Je vous donne un aperçu sur mes différentes fonctions gérant cette étape:

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
 
....................
 
var cache_alien = null;
 
// Cette fonction permet de réinitialiser notre canvas. Plus rien n'y est affiché.
function efface_alien (alien) {
    context.clearRect(alien.x, alien.y, 11*unit, 8*unit);
}
 
// Pour chaque alien connu
function animate_aliens () { 
    var leader = alien_le_plus_bas();
    var dispa = false;	
 
    for ( var i = 0, e = aliens.length; i < e; ++i ) { 
        dispa = animate_alien(aliens[i], leader) || dispa; 
    } 
 
    if (dispa) {
    	efface_alien(cache_alien);
    }
 
    animate_alien(aliens[i], leader);
} 
 
 // L'alien que l'on anime
function animate_alien (alien, leader) { 
	//var clic_jeu = gere_clic();
	var cache_jeu = false;
 
        if ( alien == null || typeof alien != "object" ) {
            alert("animate_alien : alien n'est pas un objet");
            return;
        }
 
	efface_alien(alien);			 
        alien.y += alien.vitesse*unit;
 
	if (cache_alien) { 
	       alien.y = 0;
	       cache_jeu = true;
	       alien.vitesse = vitesse_aleatoire();
	}
 
        affiche_alien(alien, leader); 
	return cache_jeu;
}
 
// Gère clic
function gere_clic (e) {
       var i, alien;
       // "this" est l'élément html sur lequel on clique, ici le canvas
       var box = this.getBoundingClientRect();
      // e est l'événement généré par le clic
       var x_clic = e.clientX - box.left;
       var y_clic = e.clientY - box.top;
 
      for (i = 0; i < aliens.length; i++) {
           alien = aliens[i];
	   if ((x_clic >= alien.x) && (x_clic <= (alien.x + 11*unit)) && (y_clic >= alien.y) 
		&& (y_clic <= (alien.y + 8*unit))) {
 
		efface_alien(alien[i]);
		aliens[i].y = 0;
		efface_alien(aliens[i]);
	   }
      }
}
 
// Fonction d'initialisation
function initialisations () {
    ...............
 
    setInterval('animate_aliens();', 200);
    cache_alien = canvas.addEventListener('click', gere_clic, false);
}