Bonjour à vous,

Je suis en train de programmer un petit labyrinthe en javascript. Pour l'instant il se crée et s'affiche bien, j'ai mon entrée et ma sortie. Seul problème, je ne sais pas comment faire pour lier une méthode de l'objet labyrinthe à un déplacement clavier. Cette méthode servira ensuite à déplacer un petit personnage grâce aux touches fléchées du clavier.

Par la suite j'aimerais pouvoir, dans ma fonction playerMove, pouvoir faire un this.tab[x][y] pour récupérer des informations sur telle ou telle case de mon objet Laby. Dans mon objet laby, j'ai donc bien ce this.tab[x][y] qui indique toutes les portes ouvertes et fermées pour une coordonnée donnée (utile pour savoir si je peux ou non déplacer mon personnage dans telle ou telle direction). Ce qui n'est pas possible pour l'instant car j'écoute l'objet window pour les déplacements.

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
// extrait de la fonction init
function init()
{
   var monde = new Laby(hauteur,largeur);
   window.onkeydown = monde.playerMove(); // j'ai essayé cette methode
   window.addEventListener("keypress",monde.playerMove,false); // celle ci aussi
}
 
// extrait de la fonction Laby
function Laby(x,y)
{
...
// liaison de la methode de deplacement du personnage
this.playerMove = playerMove;
}
 
//extrait de playerMove
function playerMove(event)
{
  if(event)
  {
     switch(event.keyCode)
     {
     //Touche fleche haut
     case 38:
     if(this.tab[3][2].porteHaut) // exemple
     {
        //deplacement du personnage vers le haut accordé
     }
     break;
 
     //etc ...
     }
  }
}
Je pense que mon problème serait peut être que je ne passe pas d'argument quand j'appelle monde.playerMove(). C'est pourquoi j'ai rajouté dans la fonction playerMove un if (event). Mais maintenant, j'ai l'impression qu'il fait le test une seule fois et qu'il ne fait pas attention par la suite si j'appuie ou non sur une touche, comme si l'écouteur n'écoutais pas.

Si quelqu'un a une idée j'en serai très heureux, ça fait 2 jours déjà que je ne trouve pas de solution. Peut être est ce un problème de syntaxe. Mon but final est de pouvoir atteindre le this.tab de l'objet Laby au sein de la fonction playerMove().

Merci beaucoup.