Il vous est demandé de mettre en place quelques classes pour vous remettre en tête les grands principes de la programmation orientée objet : messages et collaboration entre objets, attributs et méthodes, constructeurs, héritage, etc.
Pour cela, vous travaillerez sur un jeu de balle au prisonnier.
Votre travail servira de base aux TPs suivants qui feront l’objet d’une note globale. Le travail en binôme est fortement conseillé.
Pour développer en Java durant le TP, vous pouvez choisir d’utiliser :
L’archive TP1.zip contient les classes de base :
Décompressez l’archive dans un dossier sur votre compte. Explorez le code source. Compilez et lancez le programme principal balleauprisonnier.
Testez, utilisez les touches WASD ou les flèches directionnelles pour déplacer et faire pivoter les joueurs.
Consultez la documentation de Java 8 et de Javafx (la bibliothèque graphique utilisée).
Il est possible qu'Eclipse signale une erreur ou un warning de restriction d'accès lors de l'utilisation de javafx. Ce problème peut être résolu en modifiant les propriétés du projet pour autoriser javafx. Vous remarquerez au passage que la solution la plus simple n'est pas la première sur stackoverflow : lisez les solutions alternatives avant de partir pour l'une ou l'autre.
Javafx est normalement intégré au Java Development Kit (JDK), depuis la version 8. Cependant sous Linux, il est possible qu'il faille ajouter javafx "à la main"
Quelques liens si l’ajout de javaFX ne fonctionne pas :
Note : dans les arguments de la machine virtuelle, quand il est indiqué path/to/javaFx/lib il est nécessaire de remplacer ce chemin par le chemin absolu du dossier lib de JavaFx (sans espace ou avec des guillemets)
Note 2 : Il faut bien, sous éclipse, ajouter les jars de JavaFx à Modulepath, et non à Classpath
Modifiez la classe Player ou Field pour :
Voir la gestion des évènements clavier avec Javafx au besoin, et leur application dans un jeu ici (section Handling User Input),
Testez.
Ajouter quelques méthodes à Player et Field :
Testez.
Nous allons maintenant faire en sorte qu’un tir déclenche un lancer de projectile qui traverse le terrain, et atterisse dans le camp adverse, sur un adversaire ou non.
Réfléchissez maintenant aux dépendances entre vos classes, et à la visibilité (public, private, final, protected) de vos variables et méthodes de classe.
Dans un premier temps, c’est le terrain (Field) qui connait à la fois les joueurs et le(s) projectile(s). Faire en sorte que :
Testez avec les joueurs contrôlés par les utilisateurs.
Rajouter un peu de stratégie en permettant aux joueurs contrôlés par l’ordinateur de :
Il est fortement recommandé de réaliser cette partie pendant la semaine et le week-end qui vient, si vous n’avez pas eu le temps de la faire pendant le TP.
Le code actuel mélange données, logique et interface. Commencez à restructurer le projet pour séparer la logique générale de l’application, de l’affichage du jeu, des données, et de la logique de jeu (les stratégies de tir et de déplacement).
Pensez à comment le programme pourrait être généralisé, pour facilement transformer les joueurs en autre chose, changer le mode d’affichage (par exemple bouger les personnages comme sur un platformer, avec une vue de profil), ajouter de nouvelles stratégies de tir.