Joystick

Slick2d, leçon 14 :: Déplacement Analogique

16 November 2014 08:58 Slick2d - Leçons 10-19 Java, Jeux, Joystick, Slick2d, Tutorial

Dans la leçon 12 nous avons vu comment utiliser une manette XBox360 pour se déplacer. Mais on était rester sur un déplacement à la croix et une émulation de la croix sur le joystick. Mais si ce que l'on veux c'est pouvoir se déplacer dans toutes les directions ce n'est pas suffisant.

Préparation

Un joystick analogique permet de lire son déplacement en suivant 2 coordonnée, X et Y. C'est deux coordonnée donne un vecteur, ce vecteur est la direction du mouvement que l'on souhaite donné. On représente généralement ce vecteur par deux variables dx et dy. Ce vecteur multiplié par le temps écoulé donnera le déplacement du joueur.

tuto-slick2d-076-analogique

Dans la leçon 12 nous avons utilisé une implémentation du listener ControllerListener pour traiter les touche de notre manette. Malheureusement, cela n'est pas possible de garder le même modèle pour un traitement analogique. En effet il n'y a pas d’évènement à proprement parler quand on déplace le joystick. Il faut en effet lire régulièrement l'état du joystick à la main.

Code :: Les variables dx et dy

Comme je l'ai dis en introduction nous n'allons plus représenter la direction d'un joueur pour 4 direction mais par un vecteur dx et dy. Cependant nous aurons toujours besoin de connaitre la direction approximative de 0 à 3 pour l'affichage du sprite par exemple. De fait c'est les variables dx et dy qui font fois et direction sera mise à jour du déplacement, cette direction ne servira que pour l'affichage. Le booléen moving n'est plus utile et peu être supprimé.

Slick2d, leçon 12 :: Contrôle avec un Joystick

05 October 2014 09:38 Slick2d - Leçons 10-19 Java, Jeux, Joystick, Slick2d, Tutorial

Dans les deux tutoriels précédent nous avons séparer le code en plusieurs classes. En particulier nous avons introduit la classe PlayerController,  qui permet de prendre en charge la gestion des évènements claviers pour déplacer le joueur. Aujourd'hui nous allons ajouter la possibilité d'utiliser un joystick.

Préparation

Pour utilisé un joystick il nous faut un joystick. Et ici je vous propose d'utilisé le seul produit de Microsoft que je respecte, le joystick de XBox 360, son seul défaut c'est sa croix. Je n'attend qu'une seule chose qu'une version avec câble du joystick de la XBox One sortent et soit compatible PC ! Et pour ceux qui comme moi préfère le pingouin, sachez que le contrôleur de la XBox360 est compatible avec la plupart des distributions Linux.

tuto-slick2d-067-controlleur-xbox360

Code

Comme nous avons vu dans la leçon 11, notre classe PlayerController implémente l'interface KeyListener. Pour permettre la gestion des entrées de notre joystick il suffit d'ajouter l'implémentation de l'interface ControllerListener et définir les implémentations :

public class PlayerController implements KeyListener, ControllerListener {
  // [..] gestion du clavier (leçon 11)

  @Override
  public void controllerLeftPressed(int controller) { }

  @Override
  public void controllerLeftReleased(int controller) { }

  @Override
  public void controllerRightPressed(int controller) { }

  @Override
  public void controllerRightReleased(int controller) { }

  @Override
  public void controllerUpPressed(int controller) { }

  @Override
  public void controllerUpReleased(int controller) { }

  @Override
  public void controllerDownPressed(int controller) { }

  @Override
  public void controllerDownReleased(int controller) { }

  @Override
  public void controllerButtonPressed(int controller, int button) { }

  @Override
  public void controllerButtonReleased(int controller, int button) { }
}