Faire des sauts en diagonales (jeu de plateforme)

Faire des sauts en diagonales (jeu de plateforme) - Javascript/Node.js - Programmation

Marsh Posté le 11-05-2016 à 20:42:21    

salut  :jap:  
 
Je suis en terminale S spé ISN (informatique en gros), et on doit rendre un projet de fin d'année pour le bac, sous forme de jeu.
Le problème c'est que je suis bloqué dans ma progression ce qui est plutôt embêtant.
Je m'explique: notre jeu est un jeu de plateforme en JS. On a deux perso qui se déplacent sur des plateformes et le but c'est d'envoyer l'autre dans le vide quand ils sont assez proches l'un de l'autre.
 
Voilà le problème:  je n'arrive pas a faire sauter le personnage en diagonale. Ce que j'aimerai c'est que quand j'appuie sur la flèche droite pour aller a droite et qu'ensuite j'appuie aussi sur la touche haut, ça fasse un saut en diagonale. Sauf que quand j'appuie sur la flèche droite et ensuite la flèche du haut, le personnage saute juste à la verticale.
 
Voilà mon code:

Code :
  1. // Touches clavier
  2.    
  3.     document.onkeydown = move; //quand on appuie sur le bouton -> move       
  4.     function move(e){
  5.         if(e.keyCode==39){
  6.             xperso=xperso + vitesse
  7.         }
  8.        
  9.         if(e.keyCode==37){
  10.             xperso=xperso - vitesse
  11.         }
  12.    
  13.        if(e.keyCode==40){
  14.             yperso= yperso + vitesse
  15.         }
  16.    
  17.      //Jump
  18.         if(e.keyCode==38){
  19.             for(var i=0;i<=15;i=i+1){
  20.                 yperso=yperso - 0.5*vitesse;
  21.           }
  22.         }
  23.    
  24.        
  25.      
  26.     }


 
Voilà, c'est la première fois que je programme, je suis plus hardware perso, si vous m'aidez je vous serais éternellement reconnaissant :jap:  
 
Merci!

Reply

Marsh Posté le 11-05-2016 à 20:42:21   

Reply

Marsh Posté le 11-05-2016 à 23:34:34    

Salut,
 
Il manque des ; à tes instructions dans les 3 premiers if.


---------------
On croit souvent avoir vu le fond de la stupidité humaine, et il parfois nécessaire qu'on vous rappelle qu'elle n'a pas de fond.
Reply

Marsh Posté le 12-05-2016 à 11:19:17    

onkeydown est appelé lorsque tu appuies sur une touche, et une seule fois.
 
Du coup si tu appuis sur deux touches, la machine va détecter l'appui sur une touche, puis l'autre (deux appels successifs à onkeydown).
 
Toi tu as besoin de savoir a un moment donné si une touche est appuyée ou relevée, et effectuer les mouvements en fonction. Pour cela il te faut un classe qui réagit au onkeydown/keyup et qui mémorise l'état de la touche.
Ensuite dans un timer (ou sur event), tu fais appel à cette classe pour connaitre l'état de tes touches (ça peut être un timer exécuté toutes les 20 ms qui calcule la nouvelle position de ton personnage par exemple).


---------------
sheep++
Reply

Marsh Posté le 21-05-2016 à 19:34:05    

Salut,
 
Désolé j'avais complétement oublié le topic... Au final on a créé des plates-formes de téléportation pour le jeu, c'est joli et ça nous arrange pour la programmation :D  
 
Merci quand même!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed