2 Conseils généraux Importance des TP Le but principal des tp est de vous faire manipuler un certain nombre de techniques afin que vous compreniez leur fonctionnement et que vous puissiez acquérir une certaine expérience dans le domaine de la programmation obje concrète est indispe Organisation du fasci Ce fascicule ne conti or 133 Sni* to View age. met, étape par étape, d’aborder différents aspects de la programmation objet à travers l’élaboration d’un jeu 2D en client/serveur.
Vous allez maître en pratique la création d’une application en suivant le modèle MVC. Vous allez découvrir les techniques de transfert d’objets pour une application en client/serveur. Vous allez bien sûr aussi mettre en pratique toutes les connaissances objets : classes abstraites, polymorphisme, interface, collections, etc… Cette mise en pratique vous permettra de mieux comprendre toutes ces notions. De plus, vous allez découvrir un nouveau langage : Java. Après le C/C++, c’est le langage actuellement le plus utilisé.
Vous trouverez en fin de fascicule un petit mémento du langage Java, pour trouverez dès le début du tp, dans la partie « les outils nécessaires », toutes les xplications pour télécharger et installer les différents outils. Il est cependant possible que les versions proposées au téléchargement soient plus récentes
Vous aurez aussi besoin de certains fichiers, par exemple les images des personnages. Ces fichiers sont récupérables directement sur le site du cned, au même endroit que ce fascicule, avec la correction. Là encore, lorsque vous en aurez besoin, vous aurez toutes les explications nécessaires. N’oubliez pas que le but est de prendre plaisir à développer : ce tp est volontairement dans le domaine du jeu pour que vous appreniez avec plaisir des notions qui sont parfois assez complexes. Bon courage et surtout bon développement ! TP Urban Marginal Ce tp est l’occasion de mettre en pratique les connaissances acquises dans le cours, à travers la création d’un jeu de combat 20 en client/ serveur, donc plusieurs joueurs peuvent jouer à distance. Le langage choisi est Java. Cl Capacités attendues avant le début du TP Avoir étudié le cours de p objet et avoir assimilé *GF’ 33 modèlee MVC. Avoir assimilé les bases du langage Java. C] Contenu 2. 4. 6. 7. 9. 10. 12. Les outils nécessaires A quoi va-t-on jouer ? . Les classes et le modèle MVC.. Création du projet La première fenêtre Partie Client/ Serveur La construction du Le choix du joueur Liarène du Le t chat 6 . 10 11 . 12 20 25 27 35 déploiement. • • • • • • • • • • • 65 Mini mémento Java 68 Les outils nécessaires Java est un langage gratuit, développé par Sun et racheté par Oracle. Il suffit normalement d’aller sur le site d’oracle et de élécharger la dernière version de Java SE (JDK java Development Kit).
Après son installation, le code dune application Java peut être écrit dans un simple éditeur, avec l’extension « java », puis pré compilé pour obtenir un fichier avec l’extension « class ». La machine virtuelle du jdk permet alors d’exécuter le fichier class. Cavantage du fichier class est sa portabilité : il est exécutable sur n’importe quelle plateforme. pour faciliter le développement, il existe des logiciels qui offrent un environnement d’aide à la création d’applications. Vous allez utiliser des outils ratuits et les plus connus dans ce domaine.
Voici les différents outils que vous devez récupérer sur Internet et installer sur votre ordinateur avant de commencer le TP. Les versions mentionnées sont celles qui ont été utilisées au moment de la création du TP. JDK Intérêt : Java Development Kit contient entre autres le pré- compilateur et la machine correspondant à votre système. Vous allez devoir vous enregistrer cependant le JDK est gratuit. Version utilisée pour le tp : 8u25 Installation : Exécutez le fichier téléchargé et suivez les étapes. Eclipse + Windowauilder
Intérêt : Eclipse est un environnement de développement qui apporte une aide à la création d’applications. Cest actuellement, avec NetBeans, l’environnement gratuit le plus utilisé, pour Java. WindowBuiIder apporte des plugins supplémentaires à Eclipse, permettant l’aide à la création assistée d’interfaces graphiques : le code est automatiquement généré. Il existait Visual Editor mais le projet a été abandonné. WindowBuilder est très intuitif et puissant. De plus, le code généré est globalement propre et léger.
Cest donc un complément très intéressant pour construire apidement des interfaces. Vous pouvez ensuite modifier à volonté le code généré. Depuis la version Luna d’Eclipse (que nous allons utiliser ici), WindowBuilder est directement intégré. Cependant, si vous préférez NetBeans, vous n’êtes pas obligé d’utiliser Eclipse. Mais choisissez forcément l’un de ces 2 environnements. Ce tp a été réalisé sous Éclipse mais la transposition sous Netbeans ne devrait pas trop poser de problèmes.
Voici le mode opératoire pour l’installation pour Eclipse (avec WindowBuilder) : — Aller sur le site d’Eclipse, partie download http://www. eclipse. org/downloads/ ?? Télécharger « Eclipse IDE for Java Developers » (et non pas EE) 32 ou 64 bits suivant votre OS (et surtout suivant la version du jdk). Version d’Eclipse utilisée pour le tp : la version ecli RI -win32-x86 64 133 tp : la version eclipse-java-luna-SR1-win32-x86_64 – Dezipper simplement (Eclipse ne s’installe pas) — Rentrer dans le dossier Eclipse et lancer Eclipse. xe — Choisir un chemin qui contiendra les projets Eclipse Normalement, la version d’Eclipse que vous avez récupérée intègre déjà WindowBuilder. Si pour une raison obscure vous travaillez avec une version qui ne l’intègre pas donc une ancienne version, ce que je vous déconseille), voici ? titre informatif la procédure qui fonctionnait pour l’intégration de WindowBuilder • – Aller dans le menu « Help/lnstall new software… ‘ — Sur la ligne « Work with », cliquer sur Add – Donner un nom (par exemple Window3uilder) et l’adresse suivante : http://dl. oogle. com/eclipse/inst/d2wbpro/Iatest/4. 3 (attention cette adresse correspond à la version Kepler – 4. 3 – donc ? adapter suivant la version d’Eclipse). Suivre ensuite les instructions pour installer WindowBuilder Français ? Il existait un projet Babel pour traduire Éclipse en français. Le plugin correspondant avait été initialement utilisé pour ce tp- Cependant, il semblerait que les nouvelles versions d’EcIipse n’acceptent plus cette traduction. Cela ne me parait pas dramatique.
Sauf si vous trouvez une solution (les projets évoluent rapidement) et que vous êtes vraiment allergique à l’anglais (ce qui serait dommage pour un développeur), je vous conseille de rester en anglais. A quoi ressemble Éclipse ? Maintenant que tout est i s 33 rapidement à quoi Bienvenue qui doit ressembler à ceci (suivant la version que vous utilisez) : Cliquez ici pour passer l’écran de bienvenue Cliquez sur la flèche en haut à droite (il y a marqué Workbench si vous passez la souris dessus).
Cela va vous permettre de passer cet écran d’accueil et d’arriver sur l’écran principal de travail. Les prochaines fois que vous lancerez Eclipse, vous ne verrez plus cet écran. Il est posslble cependant de le retrouver en allant dans le menu Help/Welcome. 7 Après l’écran de bienvenue, vous obtenez l’écran suivant, mais bien sûr encore vide de code et de classes : Arborescence des Onglets des fichiers packages et des classes ouverts (les classes) Zone de code, colorisée, avec aide à la saisie (indentation utomatique, affichage de la liste des membres… Popup d’aide qui apparaît en passant la souris sur certains mots Zone d’informations et d’affichage (propriétés, console Java… ) classes (qui sont des fichiers avec l’extension java). Sur le disque, le dossier du projet possède, entre autres, 2 dossiers : src (qui contiendra les packages et classes sources de l’application) et bin (qui contiendra la même arborescence que src, mais cette fois les classes sont pré-compilées, donc des fichiers avec l’extension class). A quoi va-t-on jouer ? Avant tout, on va jouer à coder…
Ce code va permettre de mettre u point une application unique, qui pourra soit démarrer un serveur, à l’écoute de clients, soit démarrer un client qui se connecte à un serveur. Voici les différentes fenêtres et étapes du jeu. 8 Fenêtre de démarrage du jeu Elle permet de choisir d’être serveur ou client. Dans le cas d’un client, il doit d’abord préciser l’adresse IP du seweur pour se connecter. Après ce choix, si le serveur est lancé, il se met à l’écoute de clients et ouvre la fenêtre d’Arène qui permettra de visualiser, côté serveur, tout ce qui se passe, sans pour autant pouvoir agir.
Ceux sont les clients qui vont agir. Cette première fenêtre est volontairement simpliste. pour un client, fenêtre de choix du personnage Si un client a été lancé, il s’est alors connecté à un serveur et, si la connexion s’est bien passée, alors la fenêtre du choix du ersonnage apparaît. Elle permet au loueur de Cest la zone du jeu. Côté serveur, elle permet juste de visualiser ce qui se passe et ne permet aucune action. On pourrait même éviter de l’afficher, cependant cela reste un bon moyen de tests.
Côté client, elle permet de jouer (déplacer le personnage, tirer des boules sur d’autres joueurs pour leur faire erdre de la vie et en gagner soi-même) et de discuter (avec la zone de discussion qui se trouve en dessous de l’arène). Lorsqu’un joueur se déplace, il prend différents « états » de marche et se tourne dans la direction où il avance. Lorsqu’il est touché par une boule, il réagit. Enfin, lorsqu’il meurt, il tombe et reste à la même position dans l’arène.
Des murs, posés aléatoirement empêchent les déplacements et arrêtent les trajectoires des boules. Les classes et le modèle MVC Java étant un langage « tout objet », l’application va être entièrement construite autour d’un ensemble de classes. Celles-ci vont être organisées en 3 grands packages afin d’essayer de suivre la logique du modèle MVC (Modèle vue contrôleur). Qu•est-ce que le MVC ? sur le modèle, et vice versa. Cest le contrôleur qui a un rôle d’interface entre les deux et qui va s’occuper d’interpréter les ordres des uns et des autres. ar exemple, si la vue vient de saisir une information, elle avertit le contrôleur de cette saisie, qui se charge de solliciter le modèle pour enregistrer l’information saisie. Organisation des classes de l’application Le diagramme de classes (page suivante) présente, pour chaque package, l’organisation es classes. Le package « Outils » qui vient s’ajouter aux autres, contient des classes « standards », que vous allez écrire mais qui seront très largement réutilisables pour d’autres applications.
Les propriétés et méthodes n’ont pas été représentées afin d’alléger le diagramme pour une meilleure compréhension. Voici quelques explications pour mieux comprendre ce diagramme : Package controleur : Il contient l’interface Global qui sera implémentée par quasiment toutes les classes de l’application. Cette interface apporte toutes les constantes globales. Il contient aussi la classe Controle. L’application démarre sur cette classe qui s’occupe d’instancier les 3 fenêtres et la classe Jeu du package modele.
La classe Controle va s’occuper de faire le lien entre la vue et le modele. Package vue : Il contient les trois fenêtres de l’application. Package modele : Il contient les classes métiers de l’application. On y trouve la classe Jeu avec 2 classes filles (pour distinguer le jeu côté serveur ou côté client), la classe Objet pour représenter les objets qui seront manipulés (Joueur, Mur, Boule), la classe Label pour mémoriser et numéroter un Label (un JLabel est l’objet graphiq PAGF 33