Fichier Classe(s) définie(s) Description
Point2D.java Point2D Des classes de nature mathématique / géométrique
Vector2D.java Vector2D
AlignedRectangle2D.java AlignedRectangle2D
Point2DUtil.java Point2DUtil Une classe contenant des méthodes pour tester si un point est à l'intérieur d'un polygone (utile pour réaliser des effets de surbrilliance, et pour réaliser la sélection en lasso), pour calculer l'enveloppe convexe d'un ensemble de points (utile pour dessiner des "bulles" autour d'un ou plusieurs objets), et pour transformer un ensemble de points selon le déplacement d'un ou deux doigts (utile dans les interfaces multitactiles).
GraphicsWrapper.java GraphicsWrapper Une classe qui facilite le dessin en 2D. Il y a deux intérêts à utiliser cette classe: d'abord, elle facilite la gestion de zoom et pan dans une vue 2D (transformation entre les systèmes de coordonnées "pixels" et "espace monde" au moment du dessin et au moment de la réception d'événements de souris). Deuxièmement, l'implementation qui vous est fournie utilise OpenGL pour dessiner, mais on pourrait éventuellement changer cette implementation pour une autre version qui utilise Java2D/Graphics2D pour dessiner, ce qui permettrait de déployer le code sous forme d'Applet sur le web (si on enlevait les aspects multitactiles du code client).

Pour compiler et exécuter le code, vous avez besoin de la librarie JOGL. Une copie se trouve au http://profs.etsmtl.ca/mmcguffin/code/java/lib/JOGL/
Constant.java Constant Quelques constantes.

Changez NUM_ARMIES pour changer le nombre d'armées.
org/mt4j/input/inputSources/Win7NativeTouchSource.java Win7NativeTouchSource, Native_WM_TOUCH_Event Une classe tirée de la librarie MT4j. Le chemin relatif vers cette classe ne doit pas changer, car elle utilise un .DLL (Win7Touch.dll) qui s'attend à communiquez avec la classe Java.org.mt4j.input.inputSources.Win7NativeTouchSource

Cette classe a seulement besoin d'être compilée si vous voulez utiliser WM_TOUCH pour recevoir les événements multitactiles. Elle est utilisée par la version WM_TOUCH du MultitouchFramework (MultitouchFramework-WM_TOUCH.java)
MultitouchFramework.java MultitouchFramework Un cadriciel qui reçoit les événements multitactiles (soit via TUIO, ou WM_TOUCH, ou de la souris permettant de simuler plusieurs points de contact) et ensuite appelle des méthodes dans le code client. Ce fichier contient le point d'entrée main(). Il y a trois versions de ce fichier, dans le répertoire "doNotCompile": MultitouchFramework-MOUSE.java, MultitouchFramework-TUIO.java, et MultitouchFramework-WM_TOUCH.java. Copiez une de ces versions par dessus le fichier MultitouchFramework.java, en changeant le nom de fichier, avant de compiler. Ne modifiez pas votre copie de MultitouchFramework.java, car ces modifications pourront être perdues, brisant votre code, lorsque vous copiez une autre version par dessus. La version "-MOUSE" est utile pour travailler hors du laboratoire, quand vous n'avez pas accès à un dispositif multitactile, car elle permet de simuler un ou plusieurs doigts avec la souris. La version "-WM_TOUCH" nécessite de compiler avec quelques fichiers tirés de la librarie MT4j, et aussi org/mt4j/input/inputSources/Win7NativeTouchSource.java, et fonctionne seulement sur MS Windows 7. La version "-TUIO" nécessite de compiler avec la librarie libTUIO.jar.

Pour compiler et exécuter la version "-WM_TOUCH", le fichiers nécessaires de MT4j se trouvent au http://profs.etsmtl.ca/mmcguffin/code/java/lib/MT4j/

Quand vous utilisez la version "-MOUSE", pour simuler un seul doigt, faites Ctrl+bouton droit (appuyer, glisser, relâcher). Pour simuler plusieurs doigts, faites Ctrl-bouton gauche (appuyer, glisser, relâcher; plusieurs fois si vous voulez) pour chaque doigt que vous voulez simuler, ensuite pour faire relâcher un doigt virtuel faites Ctrl+bouton droit sur le curseur du doigt. En résumé:
Ctrl-clic gauche simule un doigt qui appuie et glisse et reste appuyé,
Ctrl-clic droit simule un doigt qui appuie et glisse et relâche.
SimpleMultitouchRealTimeStrategyGame.java Soldier, Army, Game, MyCursor, MyCursorContainer, SimpleMultitouchRealTimeStrategyGame Les classes principales. SimpleMultitouchRealTimeStrategyGame est le client de MultitouchFramework.

Pour déplacer des soldats, faites un geste de lasso pour encercler les soldats à déplacer, ensuite faites un glissement de l'intérieur de la bulle de sélection vers la destination.

Dans le code, cherchez la chaîne "sleep" pour voir comment changer le taux de rafraîchissement.

La dernière méthode dans ce fichier, processMultitouchInputEvent(), est appellée quand un doigt (simulé ou non) appuie, glisse, ou relâche. Chaque doigt est assigné un identifiant unique (un entier). Les paramètres à la méthode processMultitouchInputEvent() sont
int id : l'identifiant unique du doigt
float x, float y : la position du doigt, en coordonnées pixels (x+ vers le droit, y+ vers le bas)
int type : soit MultitouchFramework.TOUCH_EVENT_DOWN, MultitouchFramework.TOUCH_EVENT_MOVE, ou MultitouchFramework.TOUCH_EVENT_UP