Bonjour,
Je me suis lancé dans la création d'un petit mario pour m'entrainer un peu et j'aimerais gérer un "saut long".
C'est à dire que lorsque j'appui sur la touche "fleche droite" plus la touche "fleche haut" je saute non seulement en hauteur mais aussi sur la longueur.
Je vous explique succintement le fonctionnement de mon programme.
J'ai donc une classe Fenetre qui est une JFrame et qui gère l'appui de mes touches. Cette JFrame contient un objet de ma classe Plateau que j'ai défini comme JPanel. Il y a aussi une classe Joueur et Temps. Cette dernière créée un timer pour qu'on puisse voir le joueur sauter.
Voici comment j'ai fait, étant débutant, il est possible que je m'y prend mal, n'hésitez pas à me reprendre :p
Gestion des évènements liés au clavier dans la Classe Fenetre :
L'appui de la touche "fleche haut" renvoi à la procédure sauter de la classe Plateau :
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 public void this_keyPressed(KeyEvent e) { boolean sautLongd = false; boolean sautLongg = false; switch (e.getKeyCode()) { case KeyEvent.VK_RIGHT: sautLongd = true; jeu.deplace(-20); break; case KeyEvent.VK_LEFT: sautLongg=true; jeu.deplace(20); break; case KeyEvent.VK_UP: jeu.sauter(sautLongd,sautLongg); break; default: } }
Qui renvoi elle même à la procédure saute de la classe Joueur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public void sauter(boolean sautDroite, boolean sautGauche) { joueur.saute(sautDroite, sautGauche); repaint(); }
Et donc mon timer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public void saute (boolean sautDroite, boolean sautGauche) { if(test==false) { LeTemps = new Temps(this,sautDroite,sautGauche); test=true; } }
Voila j'espère avoir été clair. Ma méthode avec les booléens semble ne pas fonctionner, j'aimerais donc avoir votre avis
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 public void actionPerformed(java.awt.event.ActionEvent e) { if(sautD==true) { joujou.deplaceXDroite(); joujou.deplaceY(); } else if(sautG==true) {joujou.deplaceXGauche(); joujou.deplaceY();} else joujou.deplaceY(); } public Temps(Joueur j, boolean sautDroite, boolean sautGauche) { sautD=sautDroite; sautG=sautGauche; joujou = j; timer = new javax.swing.Timer(DELAY,this); run(); }
Merci.
Partager