Home

IG) Situations gagnantes et perdantes

image

Contents

1. avant la classe beamer i aPlayer containltemlnventaire teleporteur cas o le teleporteur n est pas dans l inventaire gui printin Vous n avez pas de teleporteur dans votre inventaire else if this aVariable null gui println Le teleporteur n est pas charge 1 elsef aPlayer enterRoom aVariable if aPlayer getCurrentRoom getImageName null gui showImage aPlayer getCurrentRoom getlImageName gui printin Vous venez de vous teleporter aPlayer getCurrentRoom getLongDescription this aVariable null SPO echec for Map EntrysString Item e aPlayer getInventaire2 entrySet us 4 if e getKey teleporteur gui printin Vous n avez pas de teleporteur dans votre inventaire else if getCharge false getDestination null 49 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E gui println Le teleporteur n est pas charge Il ne peut donc vous emmener nulle part else aPlayer enterRoom getDestination if aPlayer getCurrentRoom getImageName null gui showImage aPlayer getCurrentRoom getlImageName gui println Vous venez de vous teleporter aPlayer getCurrentRoom getLongDescription PO Cette methode fonctionnait ainsi que celle pour charger Mais L o Dupont tudiant dans mon groupe m a conseill de cr er une classe Be
2. import javax swing import java awt import java awt event import java net URL import java awt image Pour ajouter un bouton Pour ajouter un bouton on cr e l attributs private JPanel pan qui sera l emplacement des boutons private JButton boutonSortie qui est le bouton qui actionnera la commande go sortie Puis dans createGUl pan new JPanel declaration du panel pour les boutons boutonSortie new JButton Sortie declaration du bouton pan add boutonSortie ajout du bouton au panel myFrame getContentPane add panel BorderLayout CENTER positionnement de chaque panel myFrame getContentPane add pan BorderLayout SOUTH R sultat Un bouton affichant sortie appara t en bas de l cran on peut cliquer dessus mais rien ne se passe 30 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Pour que ces boutons marchent dans createGUI boutonLook addActionListener this on pose un listener au bouton et dans actionPerformed if e getSource boutonLook si on appuie sur le bouton l Engine InterpretCommand regarder le programme entre la ligne de commande regarder puis entre Cela a le meme effet qui nous tapions nous m me regarder dans le champ d entree texte La d marche a t effectu e pour toutes les commandes qui ne n cessitent pas de taper de second mot Il a t jug pr f rable de faire ainsi Le but de la man uvre est de rendr
3. I lle de salle C l tables i x jeux un autre bar principale LI pharmacie clients l billard Eza e escaliers bas CE z Vers chemin A Vers chemin B cabine t l phonique poste de police Tt Domicile du joueur une maison Le joueur d bute la partie dans les W C du bar position signal e par le triangle orange La progression se d compose en trois grandes phases le bar le chemin emprunt une fois sorti du bar le joueur doit choisir entre le chemin A et le chemin B et une fois d cid il ne doit plus revenir en arri re aucun retour en arri re n est possible en th orie et enfin son domicile o sa femme l attend indiqu par l toile RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E LE Scenario d taill complet avec indication de la partie r duit si exercice 7 3 3 Cette partie li e la section scenario rentre dans les d tails des zones du jeu Attention lire cette partie pourrait g cher votre exp rience du jeu tout l avancement y est racont en d tail LE BAR Dans le bar se trouvent les toilettes o le joueur d bute la partie la salle principale du bar le comptoir du barman la table des clients et l tage il y a une salle de jeux La partie d bute donc dans les toilettes du bar o le joueur se r veille apr s avoir l g rement perdu connaissance Il se r veille saoul Les choix du joueur sont de s approcher du lavabo o i
4. La m thode a t cr e dans le jeu comme indiqu e dans le livre Elle affiche le descriptif de la zone courante lors d un changement de salle Exercice 7 6 la m thode getExit La m thode a t cr e dans le jeu partir du modele du livre On a donc public Room getExit String direction return exits get direction Exercice 7 7 m thode getExitString Modifications de printlocation info De la m me mani re que pr c demment nous avons r diger une m thode getExitString dans la classe Room qui s occupe de g n rer les informations sur un lieu pour pouvoir ensuite l appeler dans la methode printLocationInfo Exercice 7 8 HashMap setExit Nous avons import l outil HashMap comme d taill dans le livre puis modifi la m thode setExit pour parer aux erreurs de compilations induites par les changements impos s dans le livre public void setExit String direction Room neighbor l exits put direction neighbor J On peut donc ajouter des sorties la HashMap nomm e exits Une zone aura donc une sortie direction et une zone associ e cette sortie la neighbor donc zone voisine 21 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 7 8 1 ajouter un d placement vertical Dans notre bar nous avions dessin l int gralit des pi ces sur un tage Nous avons donc profit de cet exercice pour implanter une pi ce en hauteur la salle de jeux se trouve maintenant
5. donc qui n est plus al atoire ex je tape go sud la machine comprend go nord Cela perd en effet son int r t quand on a compris le syst me et cela emb te le joueur plus qu autre chose et ne l incite plus d couvrir ce qu il se serait pass en allant tel endroit en tant saoul Enfin mon dernier regret concerne la lucidit du joueur qui est r duite un tat binaire Mon intention initiale tait de cr er une sorte de jauge de lucidit qui voluerait avec le temps mais cela aurait t trop compliqu mettre en place la construire l afficher constamment pour ne pas surprendre trop brusquement le joueur g rer son volution tend vers l bri t avec le temps qui passe placer dans le jeu plusieurs endroits de quoi trouver de l eau ou du caf pour faire baisser ou augmenter cette jauge cr er plus d interactions etc 14 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E IL Mode d emploi Les commandes go permet de se d placer dans une direction go nord ou sud est ouest entree sortie etage descendre retour permet de retourner dans la derni re salle visit e regarder pour faire l tat des lieux et celui du joueur objets pour consulter l inventaire du joueur ide rappelle les commandes de jeu sans indications prendre pour prendre un objet et le mettre dans votre inventaire Attention son poids et son prix lacher pour d poser un objet qui est dans votre inventai
6. ments du scenario Les items et personnages manquants pour le scenario ont t ajout au jeu Un des personnages se d place pendant la progression du joueur tous les lieux sont accessibles et tous les objets r cup rables consommables payants le sont Les personnages prononcent une phrase lorsqu ils croisent le joueur et certains v nements se d clenchent avec eux si certaines conditions sont remplies tre saoul ou lucide avoir certains objets Ils nous donnent des informations ou des objets cl pour progresser ou pour faire face la femme du joueur qui fait office d ennemi vous attendant au tournant en fin de jeu 56 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 7 53 m thode main La methode main a t ajout e dans la classe Game ex Permet de lancer le jeu kii public static void main String pArgs l Game game new Game l Exercice 7 54 sans blue On peut lancer le jeu avec la m thode main ci dessus en y acc dant depuis la panneau de commande de l ordinateur en y tapant CD chemin vers le jeu Ou en cr ant un fichier jar dans blue avec pour classe principale Game on peut lancer le jeu par un simple double clic ou dans le panneau de commande en pla ant le chamin vers le fichier jar Exercice 58 fichier jar Un fichier jar avec pour classe principale Game a t cr avec Blue Exercice 58 1 lancer le jeu avec la commande java jar Voir exo 54
7. t r alis es avec l aide de L DUPONT El groupes 52 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 7 45 Optionnel la classe Door Une classe Door a t commenc e mais le peu de temps restant et le peu d utilite pour mon jeu ne me permettent pas de la terminer Dans le principe il S agirait de remplacer les sorties exits dans le code initial zuul bad par des portes avec un attribut de type Room pour chaque c t de la porte l entr e c a d la room o le joueur se trouve et la sortie donc la room o le joueur peut aller un attribut bool en pour verrouiller la porte elle est soit ouvrable soit ferm e a clef et il y aurait donc un attribut de type Item correspondant une clef sp cifique la porte soit ferm e clef mais sans clef associ e donc impossible ouvrir mais peut tre contournable par un autre chemin ou t l portation et enfin un attribut bool en pour g rer ou non la fermeture automatique de la porte apr s le passage du joueur lui interdisant ainsi de rebrousser chemin Edit en fin de projet la classe Door a t abandonn e mais le d but de r daction de cette classe est disponible dans le projet et dans la javadoc Exercice 7 46 Transporter Room avec l aide de L o Dupont El Il s agit dans cette exercice de cr e une nouvelle cat gorie de Room une Transporter Room donc une Room qui lorsqu on veut en sortir nous am ne dans n importe quelle pi ce du jeu Une c
8. En vous rendant l tage vous devrez faire face la femme du joueur Si vous voulez gagner vous avez int r t pouvoir lui fournir une bonne raison de ne pas vous tu jeter dehors Voir les situations gagnantes perdantes RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E I F D tail des lieux items personnages Les lieux sont d taill s dans le sc nario sc nario d taill du jeu ci avant La cabine des toilettes du premier bar et la cabine t l phonique du chemin B sont des transporterRooms vous y entrez et vous ressortez dans une salle s lectionn e al atoirement Les items qu il est possible de trouver dans le jeu sont e Des boissons de l eau et du caf sont pr sents pour aider le joueur retrouver sa lucidit et lui accorder des bonus augmenter le poids maximum portable par le joueur de l alcool la lui fait perdre et apporte des malus baisse du poids maximum portable e Un cookie magique impos pour le projet qui augmente le poids max portable du joueur de 50 e Le portefeuille du joueur qui contient de largent utilisable pour acheter de l eau ou du caf au comptoir du bar e Deux t l porteurs impos s pour le projet qui se chargent dans une salle et qui permettent de s y rendre instantan ment quand on le souhaite e Une m daille du m rite d livr e par la police sous certaines conditions e Un certificat m dical d livr par l h pital de la ville sous certaines conditions e De
9. attributs avec la methode toString dans Player que voici Override public String toString l return poids this aPoidsMax Qui donne donc dans le fichier texte Poids 108 Avec pour d limiter les donn es Aussi L Dupont a continu cet exercice de sauvegarde et a r ussi sauvegarder toutes les donn es possibles tous les attributs de son joueur la room courante au moment de la sauvegarde les rooms pr c dement visit es pour pouvoir utiliser la commande back retour les actions de son joueur l inventaire du joueur le temps coul le contenu des rooms objets et personnages le log le champ texte d filant o se d roule le jeu tout ce qu il faut pour reprendre la partie la o on l a arr t e en somme De mon c t j ai test cette sauvegarde diff rents endroits du jeu et avec diff rents poids max portables puisque je mai sauvegard que cela et le jeu fonctionne parfaitement Exercice 63 Scenarios de test Trois scenarios de tests ont t r alis s un qui permet de gagner directement rentrer test win direct un qui explore toutes les pi ces du jeu test toutes pieces et un qui effectue chacune des commandes possibles du jeu test toutes commandes Ces scenarios ont permis de trouver beaucoup de failles dans le jeu notamment avec les m thodes pour prendre des objets les l cher les manger qui donnaient lieu a des incoh rences l cher
10. de la classe Item puisque le t l porteur est type d objet La premi re version de notre t l porteur tait simplement un objet qui d clenchait une t l portation sous certaines conditions si l objet a pour String associ e les caract res formant teleporteur s il est dans l inventaire etc La classe Beamer a t r alis e pour cet exercice bien qu elle ne serve pas vraiment pour le scenario du jeu poque contemporaine La classe Door a t commenc e mais non finie car elle impliquait des changements inutiles au jeu une simple trap door tant suffisante Exercice 7 47 3 commentaires javadoc du jeu Un commentaire en fran ais accompagne chaque m thode comme ci apr s per Commentaires Version date de cr ation ou derni re modification signal e dans le commentaire de classe return et ou param li Public private type m l commentaire suppl mentaire si besoin 54 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Les emprunts de codes ne sont effectu s que si le code en question est compris et ils sont signal s dans le commentaire de la m thode et ou de la classe si le code est parpill et dans le rapport pour l exercice en question en tant que source si le code est copi ou aide collaboration si le code emprunt poss de des modifications ou n a servi que de base pour r aliser l exercice Exercice 7 47 abstract command zuul even better Nous avon
11. en fin de programme la commande retour anciennement back peut tre utilis autant de fois que voulu jusqu remonter la premi re Room A ce moment elle affiche qu il est impossible de faire demi tour La commande retour fonctionne aussi bien avec des Rooms qu avec des TransporterRooms ou avec l utilisation d un Beamer t l porteur Exercice 7 26 Implement the back command so that using it repeatedly takes you back several rooms all the way to the beginning of the game if used often enough Use a Stack to do this You may need to find out about stacks Look at the Java library documentation La commande back fonctionne t elle si l on est revenu au point de depart du jeu Modifier son jeu s il n a pas le comportement d sir Voir les 3 precendents exercices sur back retour 37 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 7 27 et 28 1 et 2 et3 What sort of baseline functionality tests might we wish to establish on the current version of the game Nous avons dans un premier temps rempli un fichier texte txt avec le bloc notes windows dans lequel nous avons mis une unique commande de test pour voir si la fonctionnalit op rait juste go nord La fonctionnalit de lecture de fichier est permise par l utilisation de la classe Scanner comme suit er Methode de test des commandes via fichier texte On accede a un fichier texte pour en lire les instructions automatiquement et
12. en fin de projet ces images ont t gard es par d faut et chaque Room a son image Un probl me persiste cependant pour la premi re salle o l image n appara t pas toujours Lors de certaines parties l image n est pas trouv e par le programme qui raffiche donc que le champ de texte Mais pour chaque partie cette image appara t toujours lorsqu on quitte la salle et qu on y revient Exercice 7 18 4 D cider du titre du jeu Le titre du jeu a t d cid des le d but d s que notre th me a t valid Il s agit de Epop e thylique Dublin il est pr sent dans le titre de notre rapport de TP dans le jeu affichage de bienvenue et sur le site web 28 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 7 18 5 optionnel HashMap des Room Elle a t cr e comme demand e Il s agit d une HashMapsString Room aToutesRooms compos e d une String qui est le nom de la Room et de la Room en question Elle permet en effet d acc der tr s facilement une Room dans GameEngine ou dans une autre classe via accesseur et la methode get commune aux HahMap exemple aToutesRooms get comptoir pour obtenir la Room comptoir Exercice 7 18 6 Zuul with images Nous avons t l charg et tudi le projet zuul with image qui apporte au projet une interface graphique donc une nouvelle mani re de jouer apparition d images pour chaque Room et zone d entr de texte avec un certain design en ba
13. femme accepte de vous laisser entrer dans la chambre Vous gagnez donc la partie 12 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E I H Eventuellement nigmes mini jeux combats etc Il n y a pas d nigmes au sens traditionnel mais c est un jeu o il est rare de gagner du premier coup Il faudra donc apprendre de vos erreurs pour comprendre pourquoi vous perdez et comment surmonter les obstacles Ce qui en soit peut se voir comme la d finition d une nigme Nous n avons pas pos d nigme au sens conventionnel dans le jeu car il s agit d un jeu court o une nigme n a pas sa place Une fois que l nigme a t r sout une fois elle perd tout son int r t Aussi une nigme en ce sens n aurait pas sa place dans un jeu avec ce contexte LI Commentaires ce qui manque reste faire Globalement bous avons t dans les temps pendant la quasi totalit du projet mais si nous avions un peu de retard sur le calendrier fix dans la liste officielle des exercices Nous sommes donc parvenus au bout de cette liste Nous aurions toutefois voulu si le temps nous le permettait am liorer le sc nario cr er un v ritable background en ce qui concerne les personnages et le joueur pour donner un v ritable int r t ce jeu qui en l tat n est qu un jeu d exploration Nous aurions aussi pr f r finir l exercice 47 de la liste des exercices qui aurait t un vrai plus en mati re de couplage
14. getWeightItem on modifie le poids courant du joueur avec l arrivee de l objet aPlayer getPlayerCurrentRoom getltemListRoom removeltem itemString on enleve l objet de la room courante pour ne pas le dupliquer aPlayer getlnventaire addItem itemString vitem on ajoute l objet a l inventaire if vItem getPrixltem 0 si l objet est payant on adapte le portefeuille du joueur double vDifference aPlayer getArgent vItem getPrixltem aPlayer setArgent vDifference gui printin Vous avez depense vltem getPrixltem pour obtenir cet objet et il vous reste vDifference en poche 41 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E if itemString equals portefeuille si l objet est le portefeuille l aPlayer setArgent 20 0 argent du joueur 20 unit s gui printin Vous avez ramasse votre portefeuille il contient un billet de vingt Et pour enlever l objet de l inventaire pen pour l cher un item l enlever de l inventaire et le deposer dans la zone courante ii public void dropltem Command command l String itemString command getSecondWord Item vltem aPlayer getlnventaire getltem itemString if lcommand hasSecond Word pas de second mot l gui printin Que voulez vous deposer n else if aPlayer containItemInventaire itemString pas dans l inventaire l gui printin Cet objet n est pas dans votre inventaire else l gui printin
15. prix dimensions La methode toString red finie pour les objets se trouve naturellement dans la classe Item pour plusieurs raisons les attributs y sont facilement accessibles cela ordonne le projet et cela diminue le couplage puisque des futures modifications si modifications il y a besoin de faire ne se feront que dans la classe Item Exercice 7 22 optionnel ustifier par crit le choix du type de collection utilis l exercice 7 22 La collection que nous avons utilis e est une HashMap qui convient pour cet exercice puisqu elle permet d ajouter autant d objet que l on veut en se redimensionnant chaque entr e d objet dans la liste On peut donc ajouter autant d objet que l on veut juste en les cr ant et on peut les retrouver directement gr ce la m thode get de la HashMap et au jeu de cl valeur les valeurs tant les objets et les cl s une cha ne de caract re leur nom 34 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 7 22 2 Int grer les objets Items de son jeu au moins ceux du sous sc nario Les objets n cessaires au jeu ont t ajout s Il pourra tre possible d en rajouter si besoin est gr ce aux propri t s de la HashMap Au moins un objet par salle a t ajout Certains sont transportables d autres consommables d autres payants Diff rentes interactions avec ces objets sont possibles et ont t test manuellement en jouant au jeu Edit Tous les objets n ce
16. ris s par un nom la room courante dans laquelle il se trouve une String qui est une phrase qui s affichera lorsqu il rencontrera le joueur Les personnages sont cr s dans la classe GameEngine au moment de cr er les rooms et ils sont directement plac s dans une HashMapString Character pr vue cet effet pour y acc der facilement plus tard si besoin Aussi une m thode getListeCharac a t r alis e dans Room pour afficher les joueurs pr sents dans la room ou se situe le joueur En marge de cet exercice une m thode pour afficher les dialogues de chaque joueur a t cr e ainsi qu une m thode qui regroupe les interactions contextuelles entre le joueur et le personnage i e la r action de tel personnage en fonction de certains attributs ou possession du joueur le policier est sensible au fait que le joueur puisse avoir de l alcool ou de la drogue sur lui et peut le punir la femme du joueur est sensible au fait qu il soit saoul ou lucide etc Exercice 7 49 MovingCharacter Une methode movingCharacter a t produite dans GameEngine pour d placer un personnage selon certaines conditions Le personnage est au comptoir du bar initialement Si le joueur p n tre dans la grande salle alors le personnage de d place vers les tables des clients et y reste Puis si le joueur va au comptoir alors dans le m me temps le personnage vient au comptoir pour discuter avec le joueur Exercice 7 49 2 incorporez les l
17. un objet sans que le poids courant porte par le joueur ne diminue etc Ces changements ont t apport s donc ils n apparaissent pas dans le rapport N anmoins vous les trouverez dans la java prog userdoc 62 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 63 1 Compilation des paquetages Tout le projet compile et s ex cute comme voulu y compris les paquetages Exercice 63 2 et 63 3 Rendre le jeu jouable Le jeu est d sormais jouable c est dire que tous les l ments de sc narios sont pr sents comme tous les objets et tous les personnages Il est possible de gagner ou de perdre le jeu selon les actions du joueur Les conditions pour gagner le jeu sont expliqu es sur le site web du jeu http esiee fr houacinm zuul parties sc nario sc nario d taill et situations gagnantes perdantes Exercice 63 3 Mise jour finale du siterjava prog userdoc Les documentations du projet sont jour et disponibles comme pr c demment sur le site du jeu http esiee fr houacinm zuul en bas de page Le site est quant lui complet 63 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E IV B Exercices en plus pour peaufiner le projet 1 10 rev rifier qu il y a bien une image pour chaque Room homog n iser les messages et dialogues fran ais XOR anglais commenter les sources en ent te les auteurs citations pour viter le plagiat courte description pour chaque m thode courte descriptio
18. verifiez que les commandes fonctionnent Xi private void test Command command l if lcommand hasSecond Word s iln y a pas de 2nd mot gui println Veuillez ajouter le nom du fichier de test la suite de la commande else String fichier command getSecondWord Scanner sc new Scanner this getClass getClassLoader getResourceAsStream fichier txt on va lire le fichier issu du chemin String str sc nextLine lecture while sc hasNextLine tant que le fichier n est pas fini l interpret Command str rentrer la commande str ex str go nord str sc nextLine ligne suivante la commande change JAS 38 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E En pratique dans le jeu il faut taper test suivi du nom du fichier desire Si l utilisateur ne tape pas le nom du fichier la suite le message d erreur pr vu dans la methode apparait Edit Pour l exercice 28 3 nous essaieront lavenir de mettre ce genre de phrases pour v rifier le bon fonctionnement du jeu Exercice 7 29 Player Cet exercice consiste cr er une classe nomm e Player qui doit rapatrier tous ce qui concerne le joueur Nous avons donc cr e cette classe avec des attributs propres au joueur aCurrentRoom est la room dans laquelle se trouve le joueur aName pour son nom aArgent pour la somme d argent avec laquelle le joueur commence le jeu aPoidsMax le poids maximale que le joueur peut porter aPoidsCou
19. vous le comprendrez certainement en voyant l tat de la classe GameEngine et finir les exercices optionnels de la classe Door qui aurait fourni une m thode plus propre mon go t que le syst me de la trap door et de la sauvegarde de jeu qui elle est fonctionnelle mais demande plus de travail Nous avions aussi imagin aux d buts du projet quand nous n avions pas encore une id e globale de ce que serait le jeu la possibilit de jouer au billard ou aux fl chettes l tage si le joueur tait lucide ou faire influer l alcool sur les d placements du joueur s il se d pla ait un pas apr s l autre et non zone par zone en utilisant un algorithme pour g rer la fa on de marcher du joueur tant saoul methode de Monte Carlo par exemple mais nos comp tences et la direction qu a pris le jeu ne nous le permettent pas 13 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Nous avions aussi imagin au d but un moyen de faire ressentir au joueur son tat d bri t lors du d placement d une room l autre en allant dans une direction al atoire autre que celle voulu ex le joueur a son attribut aLucide sur false il tape go sud mais c est go nord qui est choisi al atoirement Mais nous pensons que cela aurait rendu le jeu trop difficile Nous aurions peut tre pu faire quelque chose de plus simple mais qui perd son int r t au bout de 2 minutes de jeu consisterait faire interpr ter au jeu la direction oppos e
20. 3P HOUACINE MEHDI E1 GROUPE 5E Ex 7 2 1 presentation de la classe scanner Comprendre l utilisation de la classe Scanner dans zuul bad pour lire au clavier D apres les informations a notre disposition Comprendre l utilisation de la classe Scanner dans zuul bad pour lire au clavier e System in d signe le clavier comme System out d signe l cran e Il faut cr er un objet Scanner en lui passant le clavier en param tre Scanner vScan new Scanner System in e Pour pouvoir compiler il faut indiquer au compilateur o se trouve la classe Scanner import java util Scanner e Il faut cr er une String pour contenir les caract res qui seront tap s au clavier String vLigne e Ensuite chaque fois qu on crira l instruction vLigne vScan nextLine toute la ligne de caract res tap s au clavier sera stock e dans vLigne e Fn attendant que des caract res soient tap s au clavier le programme reste bloqu Il est donc indispensable de pr venir l utilisateur de ce qu on attend de lui en affichant quelque chose comme Veuillez taper une commande ou plus simplement gt C est donc une classe qui nous permet de rentrer des informations au clavier que la machine pourra r cup rer et r utiliser 19 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 7 3 le scenario Design your own game scenario Do this away from the computer Do not think about implementation classes or even programming
21. 57 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 58 2 Pas de IHM prevue Exercice 59 jeu en applet Pour pouvoir faire de notre jeu une applet dans Game public class Game extends javax swing JApplet contenu de la classe Game Puis on peut ajouter dans Userlnterface des m thodes pour g rer l affichage et le g u i pour emp cher la machine de redimensionner l image trop souvent ou fermer la fen tre de jeu une fois le jeu termin etc Exercice 59 160 60 1 60 2 60 3 60 4 applet en ligne IHM javadoc Il faut placer le code suivant dans le fichier index html de la page web o l on veut que l applet apparaisse BODY applet archive chemin vers le fichier jar sur le serveur code Game alt Votre navigateur ne supporte pas Java name Epopee ethylique a Dublin applev BODY Une ic ne java nous propose alors de lancer l application pour jouer Je lai test sur plusieurs ordinateurs pour v rifier son accessibilit Aucune IHM graphique n tait pr vue La javadoc est compl t e au mieux en fran ais et elle est consultable sur le site 58 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 61 Sauvegarde du jeu 62 Chargement du jeu 62 1 tests de sauvegarde chargement Avec l aide de LDUPONT EL groupe5 nous avons essay de nous lancer dans cet exercice Nous avons cr deux m thodes une pour sauvegarder et l autre pour charger la progression du joueur La m
22. ACINE MEHDI E1 GROUPE 5E teleportation teleporteur objets regarder aide restart save EpopeeTest go sud prendre eau manger eau objets regarder load EpopeeTest regarder quit 71
23. RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Rapport A3P Projet Zuul programmation d un jeu en Java Titre Epop e thylique Dublin Lien vers le site du jeu http www esiee fr houacinm zuul Auteur Houacine Mehdi Groupe 5E Table des mati res D a uo MEF SEE E on E TE ML IU KASKO LC RME ERA M Soient DO MAA E IOVAO TA snme rukan en LF D tail des lieux items personnages I G Situations gagnantes et perdantes LH Eventnellementemigmes us FI Commentaires s nat I Moded emploi O OO asus II D claration obligatoire anti plagiat IV A R ponses aux exercices autres que 1 IV B Exercices en plus pour peaulinerleproj6b uu sss E OOO IO E REKO oo Les l ments ci dessus appara tront dans la version definitive du site web du jeu dont voici l adresse http www esiee fr houacinm zuul SoODOUFRwOO 13 1e 15 16 17 Tous les exercices ci dessous ont t r alis s par Mehdi HOUACINE ainsi que la r daction de ce rapport et du site web de pr sentation du jeu RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E I A Introduction La raison de la r alisation de ce jeu est un projet p dagogique propos par l cole d ing nieur ESIEE Paris ses tudiants de premi re ann e El premier cycle entre le ler f vrier 2013 et le 13 mai 2013 pour apprendre la programmation en Java Vous verrez assez souvent sur le site ou dans ce rapport unique
24. ROUPE 5E Exercice 7 1 1 le theme de notre jeu Choisir un theme pour votre jeu Le theme valide par le professeur est A la sortie d un bar de Dublin un homme ivre doit retrouver le chemin de sa maison Notre jeu presentera l aventure d un homme ivre qui doit retourner chez lui Des ic nes faisant r f rence l alcool y seront pr sentes mais il ne s agit pas d inciter le joueur boire puisque si ces choix sont propos s ils seront punitifs et freineront au possible la progression du joueur Exercice 7 2 Le r le des classes dans Zuul bad After you know what the whole application does try to find out what each individual class does Write down for each class the purpose of the class You need to look at the source code to do this Note that you might not and need not understand all of the source code Often reading through comments and looking at method headers is enough Le r le de chaque classe est e La classe CommandWords recense les mots cl s autoris s et d termine si une commande de l utilisateur est valide e La classe Command engendre une commande de l utilisateur e La classe Room permet de cr er les pi ces du jeu une pi ce repr sente une sc ne e La classe Parser permet de lire le texte entr par l utilisateur et le transforme en commande e La classe Game est la classe principale du jeu m thode play Ces informations sont tir es de la documentation du jeu 18 RAPPORT A
25. RT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 7 16 showAIL showCommands Ajout des m thodes showAl et showcommands pour afficher la liste des commandes comme indiqu dans le livre Exercice 7 17 ajouter une commande et implication sur Game Il faut changer la classe game pour ajouter les nouvelles commandes comme nous l avons fait pour eat et look Edit en fin de projet il faut ajouter la nouvelle commande la structure switch de GameEngine ainsi que le mot commande correspondant dans la classe CommandWord Exercice 7 18 getCommandList Changement de showall en getCommandList comme indiqu dans le livre et autres modifications 7 18 1 projet Zuul better Modifications apport es comme demand Le projet compile 27 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice optionnel 7 18 2 stringbuilder Objet mutable qui peut donc changer au cours du temps On peut construire petit petit une cha ne de caract re avec la methode append qui ajoute des caract res a la suite des autres et toString qui retourne la chaine Source informations et m thodes provenant de la javadoc 7 Exercice 7 18 3 chercher des images Nous avons trouv la quasi totalit des images pour chaque zone du jeu trouv e par recherches dans google images en attendant de trouver mieux Il est tr s difficile de trouver des images satisfaisantes pour le jeu ET libres de droits d utilisation Edit
26. S bastien HU Fr d ric NGUYEN Justine BOUGNOL tudiants a ESIEE Paris projet Zuul 2011 2012 Death Ception pour le Timer Leurs noms apparaissent aussi dans la documentation pour les classes concern es 16 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E IV A R ponses aux exercices autres que I Exercice 7 1 d couverte de Zuul bad While exploring the application Zuul bad answer the following questions and write the answers into the report What does this application do Le jeu Zuul Bad permet de visiter une universit Il nous propose des directions choisir selon le lieu les directions cardinal nord sud What commands does the game accept Le jeu accepte les commandes go direction propos e ou quit ou help What does each command do Help nous d crit la situation dans laquelle on est You are lost You are alone You wander around at the university Il nous rappelle aussi les commandes Quit permet de mettre fin au jeu Thank you for playing Good bye Go permet de jouer il permet de se d placer d un endroit l autre en pr cisant la direction propos e north south east west How many rooms are in the scenario Il y a 5 endroits visiter l entr e principale de l universit un amphith tre le bar du campus un laboratoire informatique et le bureau de l administrateur informatique 17 RAPPORT A3P HOUACINE MEHDI E1 G
27. UACINE MEHDI E1 GROUPE 5E else if laPlayer containltemlnventaire itemString si l objet n est pas dans l inventaire l gui printin Il faut que cet objet soit dans votre inventaire else l gui printin Vous mangez un e itemString Qn if vitem getConsommableltem true si l objet est consommable l if itemString equals eau itemString equals cafe si c est du caf ou de l eau l aPlayer setPoidsMax aPlayer getPoidsMax 20 aPlayer getPoidsMax 100 1 attribut augmente de 20 aPlayer setLucidite true le joueur devient lucide gui println Vous recuperez en lucidite et votre charge d inventaire augmente de 20 J else if itemString equals cookie si l objet est un cookie l aPlayer setPoidsMax aPlayer getPoidsMax 50 aPlayer getPoidsMax 100 l attribut augmente de 50 gui printin Vous venez de manger le cookie magique Votre charge d inventaire augmente de moitie else if itemString equals alcool si booze l aPlayer setPoidsMax aPlayer getPoidsMax 20 aPlayer getPoidsMax 100 l attribut diminue de 20 aPlayer setLucidite false le joueur perd sa lucidite saoul i else if itemString equals cachet si c est la pilule cachet drogue l aPlayer setLucidite false perd sa lucidite 25 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E aPlayer setArgent 0 0 perd son argent aPlayer getInventaire clearltemList perd t
28. Vous deposez par terre itemString Mn aPlayer getPlayerCurrentRoom getltemListRoom addItem itemString vltem on ajoute l objet a la room courante 42 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E aPlayer getlnventaire removeltem itemString on enleve l objet de l inventaire Edit il a t rajout un cas particulier pour la m thode qui permet de l cher des objets cause du portefeuille En effet ce code permet d avoir de l argent de mani re illimit en lachant le portefeuille et en le reprenant Il a t corrig en interdisant au joueur de pouvoir le reposer Evidemment la d marche pour ajouter une commande a t op r e sur takeltem et dropltem voir la structure en switch et les CommandWord Exercice 7 31 1 ItemList La classe ItemList a t cr e Elle permet de construire des listes HashMapString Item d objets avec des m thodes associ es pour ajouter des objets en enlever v rifier s ils y sont etc Exercice 7 32 poids max La classe Player poss de un attribut aPoidsMax qui fixe le poids maximal que le joueur peut porter il est compar au poids de tous les objets de l inventaire et si un objet veut tre ajout l inventaire voir commande exercice take m thode takeltem ajouter son poids ne doit pas faire d passer la limite Sinon un message d erreur appara t et l objet reste dans la room Dans le registre des restrictions la notion de prix a s
29. amer qui h rite de la classe Item avec ces m thodes pour pouvoir parer au cas o je voudrais cr er plusieurs t l porteurs Aussi les exercices suivant nous incitaient le faire puisqu il y est question d h ritage Cela a donc donn lieu une classe Beamer et aux m thodes suivantes Pour charger pren ermet de charger le teleporteur pour une future utilisation P t de charger le teleporteur p fut tilisat l pourra nous amener instantanement la ou nous l avons charge param commande charge parame Room la zone ou on effectue la charge X public void charge final Command pCommande final Room pDestination dentifier le teleporteur String vStringTele pCommande getSecondWord pour utiliser charge sur tel teleporteur IIMaisil faut verifier si l objet est un teleporteur 50 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Item vItemOrBeamer this aPlayer getlnventaire2 get vStringTele on recupere l objet Beamer vTeleporteur new Beamer Verifier s il est dans l inventaire if vItemOrBeamer null gui println Vous n avez pas ce teleporteur sur vous return I Verifier si l objet est un teleporteur try l on tente de le caster vTeleporteur Beamer vItemOrBeamer catch final java lang ClassCastException pE l gui printin Vous ne pouvez pas charger cela ce n est pas un teleporteur return Maintenant on peut charger le teleporteur vTeleporteur chargement th
30. au premier tage du bar Rajouter cette nouvelle direction haut et par la m me occasion bas fut simple gr ce l importation de la classe HashMap bar setExit etage jeux permet de poser la direction vers l tage la zone bar vers la salle de jeux Exercice 7 9 Que fait la m thode keySet La m thode keySet permet de lister l ensemble des clefs ici les directions du tableau associatif ici de la HashMap Exemple exits keySet Renvoie l ensemble des directions de la HashMap lt String Room nomm e exits Exercice 7 10 1 et 2 Compl ter g n rer la javadoc Les commentaires sont jour pour l instant et la javadoc consultable sur le site http www esiee fr houacinm zuul cliquer sur l ic ne de la javadoc Edit Les progdoc userdoc sont aussi consultables d sormais Chaque methode poss de un commentaire en en t te qui la d crit ainsi que des compl ments param Creturn 22 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 7 Il getLongDescription Ajout de la methode dans Room d apres le livre et modification de printLocationInfo apport e Edit en fin de projet voici la m thode A xx Affiche une description d taill e de cette piece return une description de la pi ce les objets et personnages qui s y trouvent avec les sorties public String getLongDescription return Vous tes description n altemListRoom getListD
31. ce et vous vous r veillez au d but du jeu donc il faut vous d p cher pour rattraper votre retard l autre vous fais aussi perdre connaissance mais vous vous r veillez dans la pharmacie d pouill saoul sans argent et votre inventaire est vide Rien ne vous oblige cependant les ing rer et vous pourrez m me vous en servir plus tard Le commissariat Le deuxi me arr t possible est le commissariat Si vous y entrez vous pouvez soit perdre soit trouver une bonne excuse raconter votre femme voir situations gagnantes perdantes La maison famili re Le dernier arr t est une maison qui semble tr s famili re mais qui perdra cet attrait si vous y entrez voir situations gagnantes perdantes RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E LE CHEMIN B La cabine telephonique Le premier arr t est une cabine t l phonique qui comme la cabine des toilettes du premier bar est une cabine de t l portation impos e lors du projet On peut le voir comme un pi ge L autre bar Le deuxi me arr t est un second bar qui peut vous faire perdre si vous ne vous contr lez pas voir situation gagnantes perdantes L h pital Le dernier arr t est un h pital dans lequel se trouve une infirmi re qui peut vous aidez trouver une excuse raconter votre femme si vous remplissez certaines conditions LA MAISON DU JOUEUR Les chemins A et B se croisent la maison du joueur Ca y est la fin approche
32. d dans GameEngine en Pour charger une partie deja sauvegardee On rentre un nom de fichier avec l etat du joueur au moment ou il a sauvegarde sa progression Le jeu reprend avec les nouveaux attributs issus du fichier txt public void load Command command l Quel fichier if command hasSecondWord gui printin Veuillez sp cifier un nom de sauvegarde return 60 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E String vVNomFichier command getSecond Word cr ation du fichier de sauvegarde Scanner vSc try vSc new Scanner new File saves vNomFichier txt catch final java io FileNotFoundException pExp gui println Sauvegarde introuvable return j vSc useDelimiter Lecture du fichier While vSc hasNext String vS vSc next attributs de Player if vS equals n else if vS equals poids int vPoids vSc nextInt aPlayer setPoidsMax vPoids gui println Le nouveau poids max du joueur est vPoids Fermeture du fichier vSc close Ces m thodes ont t test es pendant le jeu avec uniquement attribut aPoidsMax du joueur qui peut tre modifi dans certains phase de jeu notamment en buvant de l eau l attribut augmente de 20 et cela fonctionne 61 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Edit en fin de projet je n ai plus assez de temps pour g rer la sauvegarde des autres
33. de suivant traduit en retour 35 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E en Retourne dans la derni re piece visitee private void retour Command command if pileBack empty si la stack est vide et donc qu il n y a pas de room precedentes gui printin Vous ne pouvez pas revenir en arri re An else if command hasSecond Word si le joueur ajoute qqchose apres le mot commande gui printin Tapez juste retour pour revenir en arriere An else l Room previousRoom pileBack pop on recupere le top de la stack aPlayer enterRoom previousRoom on va dans cette room recuperee gui println aPlayer getPlayerCurrentRoom getLongDescription on affiche le changement de zone if aPlayer getPlayerCurrentRoom getImageName null gui showlmage aPlayer getPlayerCurrentRoom getImageName on affiche l image de la zone J 36 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 7 24 Test your new command properly Do not forget negative testing What does your program do if a player types a second word after the back command Does it behave sensibly Are there more cases of negative testing Les commandes fonctionnent back avec second mot back back et autres combinaisons test es Exercice 7 25 What does your program do if you type back twice Is this behavior sensible Utiliser deux fois la commande back permet de revenir deux salles en arri re comme attendu Edit
34. des toilettes d un bar tout aussi crasseux des quartiers nord de Dublin Tout au long du jeu le joueur devra surveiller sa lucidit qui voluera en fonction de certains choix Certaines possibilit s ou options de dialogues seront refus es au joueur si sa lucidit n est pas suffisante Saoul le joueur aura en apparence l air d tre perdu agressif bref personne ne voudra de vous Lucide vous b n ficierez d un charisme qui pourra vous faire sortir de situations bien embarrassantes Une fois sorti du bar le joueur aura une multitude de choix faire qui auront une influence sur la partie et sur la fin voir situations gagnantes perdantes Une fois qu il aura fait le tour du bar voir section sc nario d taill partie bar le joueur pourra sortir et aura un choix d terminant faire pour la suite droite ou gauche En effet nous avons choisi d offrir aux joueurs la possibilit de choisir le chemin qu il souhaite emprunter Nous instaurons alors une situation de doute dans le jeu puisque le joueur ne saura pas ce qui l attend et le nom de chaque chemin ne donne aucun v ritable indice sur la difficult ou la longueur du trajet Aussi une fois le joueur d cid il ne pourra plus revenir en arri re Evidemment chaque chemin pr sente un contenu diff rent RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E LD Plan complet avec indication de la partie r duit si exercice 7 3 3 Bar 1er tage
35. e totalement francophone 3 Chaque classe poss de ses commentaires en en t te et dispers s dans le code si besoin pour certains m thodes ex beamer transporterRoom etc son auteur ses sources Les emprunts de codes sont pr cis s pour viter tout plagiat dans le code et sur le site web 4 Le jeu a t relu par son auteur Mehdi HOUACINE et test par d autres personnes du groupe 5 notamment au cas o il y aurait des fautes que je n aurais pas vu o des incoh rences dans le jeu en plus des fichiers de tests 5 Les javadocs ont t g n r es gr ce aux lignes de commandes fournies dans la liste officielle des exercices du projet zuul Elles sont entrepos es dans un fichier bat pour pouvoir les re g n rer rapidement 6 Le rapport contient l approche de l auteur du jeu vis vis de chaque exercice J y pr cise quand c est le cas les contributions de personnes ext rieures au bin me et les emprunts de code pour un exercice donn 7 La page web contient tous les l ments n cessaires le plan impos pour le projet voir premi re page du projet l applet pour y jouer etc 8 Tous les l ments pour d poser le projet sont pr ts 9 Tous les exercices y compris la totalit de la r daction de ce rapport et du sc nario et du site web ont t r alis es par Mehdi HOUACINE Je rai pas eu de nouvelles de L Defloris depuis un peu plus de deux mois nous sommes le 12 05 et sa participation au projet a
36. e les commandes plus ergonomique de gagner du temps Or taper un mot puis cliquer sur le bouton ne me para t pas tre un gain de temps m me plut t une perte de temps S il faut taper quelque chose autant tout taper Edit en fin de projet tous les boutons ont t test s et fonctionnent Le nom de chaque bouton a t traduit en fran ais comme demand par les professeurs FR XOR EN Exercice 7 19 OPTIONNEL Find out what the Model View Controller pattern is You can do a web search to get information or you can use any other sources you find How is it related to the topic discussed here What does it suggest How could it be applied to this project Only discuss its application to this project as an actual implementation would be an advanced challenge exercise D apr s le site http baptiste wicht developpez com tutoriels conception mvc Le design pattern Modele Vue Controleur MVC est un pattern architectural qui s pare les donn es le mod le l interface homme machine la vue et la logique de contr le le contr leur 31 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Ce modele de conception impose donc une s paration en 3 couches e Le mod le Il repr sente les donn es de l application Il d finit aussi l interaction avec la base de donn es et le traitement de ces donn es e Lavue Elle repr sente l interface utilisateur ce avec quoi il interagit Elle n effectue aucun traitement ell
37. e m thode qui permet d afficher un message au bout d un temps voulu en utilisant le temps r el avec la classe getCurrentTimeMillis Nous ne l avons pas encore int grer au projet nous cherchons quel objectif pourrait tre r alis en temps limit Cela sera fait d ici peu Edit voici la m thode qui limite le temps de jeu 30 minutes en Determine le temps au bout duquel le joueur doit avoir termine sa partie Au dela de ce temps c est un echec public void tempsImparti l long Debut System currentTimeMillis long tempsActuel 0 while tempsActuel Debut 1800000 tant que 1800000 millisecondes ne se sont pas coul es depuis le lancement de la partie l tempsActuel System currentTimeMillis if tempsActuel Debut 600000 gui printin Vitel Il vous reste 20 minutes My engine echecTime J La m thode a t test e en laissant la console tourner le temps n cessaire 47 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Edit2 en fin de projet un probleme s est pos lors de l exercice consistant cr er une applet Cette methode empeche le jeu de se lancer L DUPONT El projet zuul 2012 2013 m a expliqu que cette methode qu il a lui aussi r alis avec getCurrentTimeMillis emp che le jeu de se lancer tant que le chronometre lanc dans la methode n est pas fini Il m a donc aid r aliser un Timer partir du code d un groupe d etudiant ayant r alis leur projet zuu
38. e se contente simplement d afficher les donn es que lui fournit le modele Il peut tout fait y avoir plusieurs vues qui pr sentent les donn es d un m me mod le e Le controleur Il gere l interface entre le modele et le client Il va interpreter la requ te de ce dernier pour lui envoyer la vue correspondante Il effectue la synchronisation entre le mod le et les vues La synchronisation entre la vue et le mod le se passe avec le pattern Observer Il permet de g n rer des v nements lors d une modification du modele et d indiquer la vue qu il faut se mettre jour Il serait donc possible d int grer un nouveau genre d interface graphique au jeu avec une partie uniquement d di e aux m caniques de d roulement du jeu un m canique graphique et un interface de r ception et traitement des commandes ext rieures celles du joueur Exercice 7 19 2 D placer toutes les images dans un r pertoire Images cr er la racine du projet Incorporer dans le jeu une image diff rente pour chaque Room S il en manque fabriquer une image de mot pour afficher simplement le nom du lieu Les images ont t trouv es et enregistr es gr ce Google image dans un dossier Images la racine de notre projet Zuul Il y en a une pour chaque Room sauf les trois derni res et celles ci ont t redimensionn es plusieurs reprises pour entrer dans le cadre de l cran redimensionnement effectu sur Paint Etrangement m
39. enc tandis que l autre vous fait perdre tous vos objets et vous fait perdre votre lucidit Mais apr s tout rien ne vous oblige les ing rer Vous pouvez en particulier les garder pour la zone suivante Le commissariat Si vous tes lucide et que vous avez au moins une de ces pilules sur vous vous pourrez d noncer le pharmacien un policier Il r cup rera ces pilules et vous donnera une m daille pour vous r compenser Elle vous servira la fin du jeu Si vous n tes pas lucide et que vous avez au moins une de ces pilules sur vous le policier vous arr te et la partie est termin e 10 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Si vous n tes pas lucide mais que vous n avez pas de pilule sur vous le policier vous demande de quitter les lieux simplement La maison famili re Cette maison est un piege Elle ressemble a la votre mais ce n est pas le cas Si vous tes lucide vous pourrez expliquer tranquillement la situation au propri taire qui vous laissera partir Si vous n tes pas lucide le propri taire appelle la police et vous avez perdu LE CHEMIN B La cabine telephonique C est un pi ge en soi puisque c est une TransporterRoom elle vous emmenera dans n importe quelle salle du jeu si vous essayez d en sortir astuce vous pouvez utiliser la commande retour L autre bar Si vous tes lucide vous d cidez de quitter ce bar pour viter de redevenir saoul Si vous tes saoul vo
40. escription n getListCharacter n getExitString n Exercice 7 12 et 13 optionnels mais non compris Exercice 7 14 look Ajout de la commande regarder dans CommandWord de la m thode regarder dans Game et d un else if dans Game Elle donne des informations sur la salle courante 23 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Edit en fin de projet la methode est en e Permet de faire l etat des lieux return la description de la pi ce o l on se trouve et l etat attributs argent poids et lucidite du joueur private void look l gui println aPlayer getPlayerCurrentRoom getLongDescription aPlayer etatJoueur n Exercice 7 15 eat M me processus pour ajouter une commande eat qui pour l instant ne permet rien elle affiche juste un texte Edit en fin de projet la m thode ne contente plus d afficher simplement une phrase Elle est essentielle la progression On peut manger des objets consommables de l inventaire et ceux ci ont un effet sur les attributs du joueur pen Permet de manger quelque chose Certains objets modifient les attributs du joueur en bien ou en mal Mi private void eat Command command String itemString command getSecondWord Item vltem aPlayer getlnventaire getltem itemString if lcommand hasSecond Word s iln y a pas de second mot l gui println Que voulez vous manger n i 24 RAPPORT A3P HO
41. goRoom command break case BACK retour command break case REGARDER look break case MANGER eat command break case TEST test command break case PRENDRE takeltem command break case LACHER dropltem command break case RESTART restart break case OBJETS objets break case CHARGE charge command aPlayer getPlayerCurrentRoom break 45 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E case TELEPORTATION teleportation command break case SAVE save command break case LOAD load command break case QUIT if command hasSecondWord gui printin Tapez seulement quit pour mettre un terme la partie else endGame break Exercice 7 37 et 38 et 41 translate amp help La commande help a t traduite en aide dans la classe CommandWords et le changement s est op r partout l exception de la m thode printLocationInfo puisque help tait une cha ne de caract re Il a juste fallu la remplacer par CommandWord HELP toString Edit cette modification a t aussi apport e au bouton qui voient donc leur nom traduit lors du jeu en fran ais Exercice 7 40 zuul with enums v2 Projet tudi et modificatiosn apport es 46 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 7 41 2 nouvelle IHM L quipe ne d sire pas de nouvelle interface donc l exercice ne sera pas fait Exercice 7 42 et 42 1 Time limit Hors du projet nous avons test un
42. in general Just think about inventing an interestin ame This could be done with a group of people The game can be anything that has as its base structure a player moving through different locations Le sc nario sera pr sent sur le site web du jeu http www esiee fr houacinm zuul voir scenario ou scenario d taill Exercice 7 3 2 Dessiner un plan du jeu Dessiner un plan du jeu faisant bien appara tre la g ographie des lieux le nom des lieux ainsi que les passages possibles entre eux l incorporer au Rapport Ce peut tre un plan dessin la main puis scann Le plan du jeu est sur le site web http www esiee fr houacinm zuul voir plan du quartier Exercice 7 4 la creation des zones du jeu Nous avons modifier le code source pr existant de Zuul bad dans un nouveau projet comme demand Nous avons modifi la methode CreateRooms dans la classe Game pour cr er nos zones de jeu en remplacant le nom des zones de Zuul bad par les notres outside new Room outside the main entrance of the university Est devenu ainsi par exemple Room toilettes toilettes new Room dans les toilettes du bar avec le nom de la zone avant new Room et un descriptif entre parenth ses La room toilettes a t d clar e juste avant http www esiee fr houacinm zuul voir plan du quartier avec chaque zone 20 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 7 5 printLocationInfo
43. is aPlayer getPlayerCurrentRoom gui printin Ce teleporteur est charge Puis pour se t l porter en permet d utiliser le teleporteur Il nous amene la ou on l a charge param commande teleportation public void teleportation final Command pCommande methode actuelle String vStringTele pCommande getSecond Word pour utiliser charge sur tel teleporteur Mais il faut verifier si l objet est un teleporteur Item vItemOrBeamer this aPlayer getInventaire2 get vStringTele on recupere l objet Beamer vTeleporteur new Beamer 51 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E if vItemOrBeamer null gui println Vous n avez pas ce teleporteur sur vous return try l on tente de le caster vTeleporteur Beamer vItemOrBeamer catch final java lang ClassCastException pE l gui printin Vous ne pouvez pas charger cela ce n est pas un teleporteur return On verifie maintenant que le teleporteur est charge if vTeleporteur getCharge false l gui printin Ce teleporteur n est pas charge return else gui printin Vous vous etes teleporte dans une nouvelle piece aPlayer enterRoom vTeleporteur getDestination if aPlayer getPlayerCurrentRoom getImageName null gui showImage aPlayer getPlayerCurrentRoom getImageName gui printin Vous venez de vous teleporter aPlayer getPlayerCurrentRoom getLongDescription Ces deux m thodes ont
44. l l ann e derni re a PESIEE voir emprunt du code de Aymeric KOEPPEL Sebastien HU Frederic NGUYEN Justine BOUGNOL tudiants a ESIEE Paris projet Zuul 2011 2012 Death Ception dans mes classes GameEngine CountDown et Userlnterface Cela permet de lancer l applet sur le site du jeu et le chronom tre a une fois de plus t test en laissant tourner la machine le temps n cessaire pour voir s afficher le message de fin de jeu sans quitter la premiere piece Exercice 7 43 trap door La solution de facilit consiste cr er une direction permettant d aller dans une room mais de ne pas cr er la direction inverse ex room accessible en tapant go nord mais impossibilit de faire go sud Il pourrait tre plus pratique de cr er une classe porte avec des portes ouvertes ferm es clefs infranchissable Edit en fin de projet la classe door n a pas t r alis e puisque le syst me de trap door suffit pour emp cher le joueur de faire demi tour lorsqu il est sorti du bar et qu il doit faire son choix entre les deux chemins 48 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 7 44 Beamer r alis avec l aide de L o Dupont mon me 5L J avais dans un premier temps cr er simplement un item appel teleporteur dans GameEngine avec deux m thodes chargement pour r cup rer la room courante et teleportation pour changer de salle d di uniquement cet objet Voici son code
45. l pourra s humecter le visage et gagner un peu de lucidit ou sortir des toilettes ou entrer dans une des cabines de laquelle se d gage une aura particuli re En sortant des toilettes on se retrouve alors dans la salle principale du bar Les options sont plus vari es Mais le joueur rencontre un probl me il n a plus son portefeuille C est donc vous d explorer le bar pour le retrouver e Le joueur peut s avancer vers la table des clients e Le joueur peut se rendre au comptoir o se trouve le barman et acheter la boisson de son choix alcool perte de lucidit et restriction dans l inventaire caf ou eau gain de lucidit et plus de place dans l inventaire Le portefeuille est indispensable puisque les boissons sont payantes Une option de dialogue vous permettra d obtenir sa position l tage d apr s le barman e Enfin le joueur peut sortir du bar RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E LA BIFURCATION Le joueur doit maintenant choisir entre 2 chemins tout retour tant impossible tant donn que vous tes press vous avez un temps limit pour rentrer chez vous LE CHEMIN A La pharmacie Le premier arr t possible est la pharmacie Vous y rencontrez un pharmacien de garde pour la nuit qui vous fait une offre il vous donne gratuitement deux pilules provenant de son arri re boutique Vous pouvez les ing rer commande manger pour d couvrir leurs effets l une vous fait perdre connaissan
46. lasse TransporterRoom h ritant de Room a donc t cr e avec un attribut de type RoomRandomizer ce genre d objet ayant lui aussi sa classe dans le jeu et permettant de d finir les Rooms dans lesquelles nous pourront nous rendre et d en choisir une au hasard La classe RoomRandomizer a pour attribut une HashMap de toutes les rooms HashMap de String et de Rooms remplie partir de la classe Room une Arraylist dans laquelle on y met juste les Rooms et d une m thode de s l ction qui avec un objet de type Random apporte un nombre al atoire compris en 0 et le nombre de room dans la liste et la m thode retourne la Room correspondant l indice de la liste gale au nombre al atoire Finallement on se sert de cette Room dans la classe TransporterRoom en red finissant la m thode getExit pour apporter la nouvelle direction room Ces classes TransporterRoom et RoomRandomizer ont t achev es et d bugg es avec l aide de L DUPONT El groupes Edit en fin de projet le jeu comporte deux TransporterRoom les deux sont fonctionnelles L une est disponible en d but de jeu cabine des toilettes l autre en milieu de jeu cabine t l phonique 53 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 7 46 1 commande alea Consigne floue non comprise Exercice 7 46 2 am lioration par l h ritage des exercices 43 45 La classe Beamer a t cr e dans cette optique elle d coule extends
47. le voir attribut de l item si son poids ne fait pas d passer le poids max du joueur si le joueur a la somme d argent necessaire pour l acheter Si oui l objet va dans l inventaire du joueur public void takeItem Command command String itemString command getSecondWord Item vltem aPlayer getPlayerCurrentRoom getltemListRoom getltem itemString if lcommand hasSecond Word si pas de 2nd mot l gui printin Que voulez vous prendre n return else if laPlayer getPlayerCurrentRoom getltemListRoom containltem itemString verifie si l objet est dans la room l gui printin Cet objet n est pas dans la salle in return 40 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E else if aPlayer getArgent svItem getPrixltem si l objet est associe a un prix et que le joueur n a pas les moyens l gui printin Vous n avez pas les moyens pour ce genre folie Cet objet coute trop cher return else l if vitem testTransportable false aPlayer getPoidsCourant vltem getWeightItem paPlayer getPoidsMax l gui printin Vous ne pouvez pas prendre cet objet il est trop lourd pour vous return on a verifie si l objet etait transportable et si son poids ne fait pas depasser la limite imposer par aPlayer aPoidsMax sinon else fgui printin Vous deposez dans votre inventaire itemString An aPlayer setPoidsCourant aPlayer getPoidsCourant vltem
48. leportation teleporteur regarder go est go est go entree go nord retour retour go est go entree go sud go entree go sortie go ouest go entree go sud go etage 68 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Ce scenario permet quant a lui de tester la validite de toutes les commandes de je On v rifie donc que chaque commande produit l effet voulu et que des fausses manipulations commandes n empechent pas la progression prendre cookie manger cookie prendre eau go sud lacher eau go est prendre table lacher table lacher lehvgheosuivnhiv prendre alcool retour prendre salle prendre teleporteur manger teleporteur go ouest charge teleporteur prendre transporteur manger transporteur retour go etage prendre billard lacher teleporteur prendre portefeuille go descendre go ouest lacher transporteur prendre eau prendre cafe manger cafe manger alcool regarder 69 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E manger eau teleportation transporteur retour charge transporteur go sortie go est retour go ouest go ouest go entree prendre cachet retour prendre cachet manger cachet teleportation transporteur prendre comprime manger comprime go entree prendre comprime prendre comprime manger comprime go sud go etage prendre teleporteur teleportation teleporteur go est charge teleporteur go nord go ouest go gogogogo go droite retour go gauche 70 RAPPORT A3P HOU
49. me si elles ont toutes la m me dimension elles apparaissent diff remment l cran et la fen tre s agrandit se redimensionne toute seule ce qui gene le joueur Edit une solution plus agr able pour le joueur a t trouv e en emp chant la fen tre de se redimensionner trop et cacher l entr e texte avec la methode setResizable appliqu e la JFrame Et chaque Room a son image 32 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 7 20 et 7 21 et 7 22 Extend your adventure project so that a Room can contain a single Item Items have a description and a weight When creating Rooms and setting their exits Items for this game should also be created When a player enters a Room information about an Item present in this Room should be displayed Remarque il est possible de remplacer le poids de chaque Item par un prix ou m me de pr voir les deux Modify the project so that a Room can hold any number of Items Use a collection to do this Make sure the Room has an addItem method that places an Item into the Room Make sure all Items get shown when the player enters a Room Cr ation d une classe nomm e Item avec deux attributs un pour la description de l objet et un pour son poids Dans cette classe on r alise un constructeur qui fabrique un objet d finit par sa description et son poids entre autre Ajout dans Room dans le constructeur d une liste d objets HashMap pour pouvoir ensuite cr er ces
50. ment mon nom appara tre Mehdi HOUACINE car mon coll gue de bin me Louis Defloris n a pas particip au projet LB Th me du jeu Le th me valid par M Bureau est la sortie d un bar de Dublin un homme ivre doit retrouver le chemin de sa maison Ce th me r sume donc le contexte du jeu et le but fix au joueur RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E L C R sum du sc nario complet Dans ce jeu vous d butez la partie dans un bar de Dublin et vous contr lez un homme qui recouvre peu peu sa lucidit et qui doit retournez chez lui de mani re ce que sa femme ne se rende pas compte qu il soit sorti A mesure que votre personnage sombre dans l alcool son mariage fait de m me et si sa femme le d couvre dans cet tat ou si vous vous faites embarquer par la police la partie est perdue Arriver chez vous sera une preuve arriver avec une bonne excuse en est une autre puisque le fait que vous arriviez chez vous ne vous fera pas gagner il faudra aussi persuader la femme du joueur que vous tiez dehors pour une bonne raison raison que vous trouverez sur le chemin du retour De plus vous n avez que 30 minutes de jeu pour rentrer chez vous eh oui vous tes press La partie debute dans les toilettes du bar o le joueur se reveille apres avoir perdu connaissance Il se rappelle peu peu les v nements qui se sont d roul s avant son l ger coma de 6h allong sous le lavabo poisseux
51. n param tres return throws et quelques commentaires indispensables dispers s dans le code corriger l orthographe et les fautes de frappe dans le jeu dans les sources et dans le rapport reg n rer la javadoc en utilisant les options private et linksource partir de la ligne de commande compl ter le rapport avec entre autres table des mati res sc nario plan explications sur les exercices et sur les bouts de code emprunt s sc narios de test et r capitulatif des contributions de chacun v rifier la page web titre noms rapport ou scenario plan applette etc pr parer le d p t JNews se faire expliquer toutes les parties que l on n a pas directement programm es le fichier README TXT la racine du r pertoire contenant le projet c est dire la racine du jar doit comporter l URL compl te permettant d acc der la page web de l quipe 64 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E 1 Le probl me de la premi re Room du jeu persiste sans raison apparente Pour rappel leu jeu n arrive pas l afficher au lancement mais n a pas de soucis pour l afficher apr s quand on y revient 2 Les commandes commentaires des m thodes documentations dialogues du jeu direction nom des zones nom des personnages nom des objets et autres indications dans le jeu sont exclusivement en fran ais mise part peut tre quelques noms de m thodes mais l utilisateur maura affaire qu une interfac
52. objets dans la classe GameEngine dans la methode createRooms on peut ajouter autant d objet que l on veut de la m me facon que l on peut ajouter des sorties aux rooms room addItem new Item description weight permet de cr er un objet et le placer dans une room avec la methode addltem cr er dans room pour la cr ation d objet comme ci avant Edit des modifications ont t apport es au sein des m thodes ainsi que leur place notamment avec la cr ation de la classe ItemList plus loin Chaque Item poss de d sormais les attributs description celle de l objet poids poids de l objet qui se r percute sur l inventaire du joueur et sa capacit le prendre ou non transportable pour savoir si le joueur a le droit de la prendre ou non consommable pour savoir si le joueur a le droit de la manger ou non prix certains objets peuvent se r cup rer simplement d autres doivent tre achet s 33 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E How should all the information about an Item present ina Room be produced Which class should produce the String describing the Item Which class should display it Why Explain in writing If answering this exercise makes you feel you should change your implementation go ahead and make the changes Ce proc d permet de cr er un objet et lui affecter toutes sortes d informations sous forme de String en red finissant la m thode toString dans la classe item description poids
53. on importance aussi puisque si le joueur n a pas assez d argent sur lui il ne peut pas acheter certains objets payants 43 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 7 33 afficher l inventaire du joueur La commande objets permet une fois qwelle est tap e d afficher l cran le contenu de l inventaire et les caract ristiques de chaque objet description prix poids Exercice 7 34 magic cookie Un objet cookie magique a t cr et place dans une room Une fois qu il a t plac dans l inventaire le poids maximal que le joueur peut porter aPoidsMax est modifi via un modificateur et il augmente de 50 De la m me mani re dans le jeu boire de l alcool est punitif et sa consommation fait diminuer cet attribut de 20 Exercices 7 34 1 et 2 Le fichier de test n est pas totalement mis jour et les javadoc sont reg n r es mais les commentaires sont aussi mettre jour traduire Edit les javadocs et leurs commentaires sont jour en fin de projet Les fichiers tests aussi Exercice 7 35 zuul with enums vl Projet tudi et modifications au projet apport es 44 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 7 35 1 switch La structure Switch a t apport e pour la reconnaissance des commandes tap es comme dans le projet zuul with enums vl La voici en fin de projet switch commandWord case HELP printHelp break case GO
54. ous les objets de son inventaire restart gui println Vous avez ingere le cachet gui printin Si ce n etait pas deja le cas vous avez perdu votre lucidite gui printin Vous avez perdu connaissance a votre reveil vous avez perdu tout votre argent et tout les objets de votre inventaire gui println Aussi vous avez perdu connaissance et vous vous reveillez dans les toilettes du bar gui printin Vous y reflechirez a deux fois la prochaine fois que vous ingererez une pilule donnee par un inconnu gui printin S il vous reste au moins une de ces pillules vous pourriez denoncer le pharmacien au commissariat du chemin ouest An i else if itemString equals comprime si c est la pilule comprime l restart reprend le jeu dans les toilettes sans perte d attribut gui println Vous avez perdu connaissance et vous vous reveillez dans les toilettes du bar gui println Depechez vous l heure tourne et vous etes revenu a votre point de depart gui printin Vous y reflechirez a deux fois la prochaine fois que vous ingererez une pillule donnee par un inconnu gui println S il vous reste au moins une de ces pillules vous pourriez denoncer le pharmacien au commissariat du chemin ouest An else fgui printin Soyez raisonnable vous n allez pas manger a aPlayer getInventaire removeltem itemString l objet disparait de l inventaire une fois mange 26 RAPPO
55. rant le poids total des objets port s Il y a aussi un constructeur pour initialiser ces attributs une m thode pour acc der la room une autre pour en changer Ces m thodes taient auparavant dans GameEngine Edit en fin de projet le joueur poss de plus d attributs et des accesseurs pour chacun d entre eux Exercices 7 30 take drop et 7 31 porter plusieurs items Les m thodes take et drop ont t r alis es dans gameEngine elles permettent de mettre des objets de la Room dans l inventaire du joueur L objet n est plus dans room lorsqu il va dans l inventaire et vice versa Il est possible de porter plusieurs items puisque le joueur poss de un inventaire qui est une itemList elle m me est une hashMap 39 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Edit en fin de projet ramasser certains objets ont une influence sur le joueur ex le portefeuille augmente l attribut argent du joueur ou alors il est n cessaire que le joueur prenne certains objets pour interagir avec eux ex le teleporteur qui doit tre dans l inventaire du joueur donc qui a t pris par le joueur pour pouvoir actionner la commande charge du t l porteur et la t l portation ensuite voir exercice du Beamer pour plus de d tails ce sujet Voici les codes pour chaque commande ex Propose de prendre l objet qui est dans la zone courante Cela est possible si l objet existe s il est dans la zone courante s il est ramassab
56. re manger pour manger ou boire un objet consommable qui est dans votre inventaire Certains objets modifient les caract ristiques du joueur lucidit poids max portable etc charge pour charger un t l porteur de votre inventaire Il enregistre la salle courante pour vous y amener plus tard teleportation pour vous t l porter l ou vous avez charg le t l porteur de votre inventaire save nomDeFichier pour l instant permet de sauvegarder le poids max portable du joueur load nomDeFichier pour charger le fichier de sauvegarde nomm nomDeFichier POUR JOUER Rendez vous sur http www esiee fr houacinm zuul jeu Acceptez les conditions et l applet s ouvrira dans une nouvelle page 15 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E III Declaration obligatoire anti plagiat pr ciser toutes les parties de code que vous n avez pas crites vous m me et citez la source sauf les fichiers zuul jar qui sont fournis videmment Ce n est pas pr ciser mais le jeu trouve ses fondations dans le projet zuul bad et ses d clinaisons de Michael Kolling and David J Barnes dont les noms apparaissent dans la documentation Des emprunts de code ont t effectu s e L DUPONT El groupe 5L projet Zuul 2012 2013 pour r aliser le t l porteur et les salles TransporteurRoom et pour de nombreux d bugs e l A LE El projet Zuul 2012 2013 pour r aliser la commande retour e Aymeric KOEPPEL
57. s de page du terminal gr ce l agencement des panels Il apporte deux nouvelles classes GameEngine et Userlnterface qui permettent de s adapter la nouvelle interface graphique GameEngine permet d apporter l image puisque les Rooms poss dent maintenant un attribut image et cela a t compris dans le constructeur de Room Lors de la cr ation d une Room on doit donc mettre une String de description et un chemin vers une image pour qu elle s affiche lorsqu on p n tre dans cette Room De son c t Userlnterface permet de g rer les panels et l emplacement donc de l image du champ de texte d filant ou non d filant du jeu nomm log par d faut et le champ d entr e texte la o le joueur doit taper les commandes Et aussi c est l qu on pourra impl menter un bouton voir exo bouton 29 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 7 18 7 optionnel decrire addActionListener et actionPerformed addActionListener est une methode qui permet d ajouter un listener une interface qui permet de r agir via des m thodes pour se d placer par exemples suite un v nement survenu dans le jeu La m thode actionPerformed permet de signaler de d clarer au programmeur qu une action permise par l interface listener associ e a t effectu e Exemple je passe ma souris dans une certaine zone donc cela implique le d clenchement d une commande Exercice 7 18 8 ajouter un bouton importer
58. s pilules offertes par le pharmacien dans la pharmacie du chemin A e Une table de billard aucune utilit pour le d roulement du jeu l tage du premier bar Les personnages clef du jeu sont quant eux le barman du premier bar qui vous indiquent l emplacement de votre portefeuille le pharmacien de la pharmacie du chemin A l infirmi re de l h pital du chemin B qui peut vous d livr le certificat m dical le policier du commissariat du chemin A qui peut vous r compenser de la m daille du m rite et enfin votre femme qui se trouve au domicile du joueur La r ussite de la partie d pend enti rement de ce dernier personnage RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E I G Situations gagnantes et perdantes Nous d taillerons ces situations pi ce par pi ce De mani re g n rale il faut viter d tre saoul avant de passer d une salle une autre pour viter les mauvaises surprises et se rappeler que le joueur que vous incarnez est press si vous mettez plus de 30 minutes pour arriver chez vous vous avez perdu LE BAR Dans le bar rien ne peut nous faire perdre mais c est ici que vous pouvez changer d tat saoul ou lucide en ing rant du cafe de l eau ou au contraire de l alcool LE CHEMIN A La pharmacie Le pharmacien de garde vous propose des pilules gratuitement Cette g n rosit cache un pi ge Une de ces pilules vous fait retourner au d but du jeu attention le chrono n a pas recomm
59. s tent de faire cet exercice Tout compilait apr s cr ation de la classe abstraite d di e aux commandes et des classes GoCommand et QuitCommand sans avoir rempli la m thode execute Nous avions m me r alis une classe pour chacune des commandes autour d une quinzaine Mais le soucis est que nous n arrivions pas a utilis la methode println de Userlnterface En effet nous narrivons nous en servir que dans la classe GameEngine et comme toute commande s accompagne forc ment d un affichage de caract res dans le jeu nous avons d abandonner Pexercice malgr ses avantages int ressants en mati re de couplage puisqu il d sengorgeait grandement la classe GameEngine qui fait office d sormais de fourre tout malheureusement Exercice 7 47 1 les paquetages Nous avons cr deux paquetages l un nomm pkg jeu qui regroupe les classes li es au joueur et son avanc e Player GameEngine Item ItemList Beamer Room TransporterRoom RoomRandomizer et l autre pkg structure qui renferme les classes li es la m canique du jeu Userlnterface Parser Command CommandWord CommandWords Comme demand la classe Game est en dehors de ces paquetages les noms commencent par pkg il y en a au moins 2 et ils contiennent plus de 2 classes chacun 55 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Exercice 7 48 Character La classe Character a t cr e dans le pkg jeu Elle cr e des personnages caract
60. ssaires pour le sc nario sont pr sents dans chaque Room o cela est n cessaire en fin de projet Exercice 7 23 back Commande qui permet de faire marche arri re Dans un premier temps nous avons r alis une commande back qui permettait de retourner dans la derni re salle visit e On d butait la partie avec comme attribut previousRoom null et aCurrentRoom avec la premiere salle du jeu A chaque changement de salle on op rait un changement previousRoom CurrentRoom puis CurrentRoom NextRoom Mais ce changement n tait pas viable il ne fonctionnait pas toujours et en particulier lorsqu on utilisait plusieurs fois back en jeu soit a ne faisait rien soit on se retrouvait bloqu dans une salle o aucune sortie ne fonctionnait On a donc demand de l aide a A LE El groupe 5 projet zuul 2012 2013 qui tait un peu en avance sur nous et qui nous a montr comment se servir d une stack comme suit Dans GameEngine Attribut private Stack Room pileBack new Stack Roomv puis dans goRoom on remplit la stackList pileBack push currentRoom enterRoom nextRoom puis dans la methode back on utilise cette collection avec des conditions au cas o la pile est vide au moment o on veut l utiliser ou si back est suivi d un second mot Sinon on range le haut de la pile dans previousRoom la derni re salle visit e Nous avons donc abandonn le pr c dent modele pour celui ci qui donne en fin de projet le co
61. thode save permet de cr er un fichier txt dans lequel nous y mettons des informations des attributs du joueur ou de la Room gr ce notamment une red finition de toString dans la classe Player et gr ce aussi la classe Print Writer Donc en tapant dans le jeu save fichierA nous cr ons dans le dossier du projet un fichier nomm fichierA txt qui contient les informations d taill es ci avant Puis en tapant load fichierA dans le jeu nous utilisons la classe Scanner pour lire le fichier nomme fichierA et utilisons certains m thodes pour appliquer des modificateurs d attributs Voici la methode save dans GameEngine en Pour sauvegarder la progression du joueur On cree un fichier texte avec l etat du joueur au moment ou on rentre la commande kii public void save Command command l Dans quel fichier if command hasSecondWord gui printin Veuillez sp cifier un nom de sauvegarde return String vNomFichier command getSecondWord cr ation du fichier de sauvegarde Print Writer vPW 59 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E try vVPW new Print Writer saves VNomFichier txt catch final IOException pExp gui println Impossible de cr er le fichier return Ecritures dans le fichier sauvegarde des attributs de Player vPW printin aPlayer toString Fermeture du fichier vPW close Et voici la methode loa
62. uparavant est quasi inexistante je vous renvoie aux 3 premiers exercices de la liste Il ne s est jamais manifest hors des premi res s ances de TP projet pour participer au d veloppement du jeu Epop e thylique Dublin ou pour se faire expliquer les parties de code du projet malgr mes mails et mises en garde au d but du projet peu pr s jusqu l exercice 15 10 Le fichier README txt contient bien Purl du site web de presentation du jeu 65 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E IV C Scenarii de test Ce premier sc nario permet de gagner le jeu sans faire de d tour Il permet de savoir s il est possible de gagner le jeu Aucun soucis ne doit nous en emp cher prendre eau manger eau go sud go sortie go ouest go ouest go sud go sud go est go entree go sud go etage 66 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E Ce second scenario permet de visiter toutes les zones du jeu On v rifie donc si chaque zone est accessible et s il est possible d en sortir C est le cas puisqu on arrive la derni re salle en lan ant ce scenario et qu on a visite chaque piece prendre eau manger eau regarder go ouest retour go sud prendre teleporteur go est go ouest go etage prendre portefeuille go descendre go sortie charge teleporteur go ouest go ouest go entree go sortie go sud go entree 67 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E go sortie go sud go entr e go est te
63. us accourez au comptoir et retombez dans l alcool La partie est finie L h pital Si vous tes lucide vous pouvez expliquer votre situation une infirmi re qui accepte de vous faire un certificat m dical Vous en aurez besoin la fin du jeu Si vous n tes pas lucide l infirmi re refuse de vous aider Vous perdez votre sang froid et elle appelle la police qui vous arr te La partie est termin e 11 RAPPORT A3P HOUACINE MEHDI E1 GROUPE 5E LA MAISON DU JOUEUR C est la derni re ligne droite votre femme se trouve l tage Si vous tes saoul elle le voit tout de suite La partie est termin e Si vous tes saoul et que vous avez une bouteille d alcool ou les pilules du pharmacien sur vous il existe un moyen d aller la pharmacie m me en choisissant le chemin B avec une TransporterRoom ou un t l porteur bien employ vous perdez l quilibre et elle s tombe nt de votre poche Votre femme enrage la partie est un chec total Si vous tes lucide mais que vous n avez pas d excuse pr senter la partie est un chec sauf si vous avez r ussi arriver ici en moins de 5 minutes depuis le d but du jeu dans les toilettes Elle consid rera alors votre retard comme acceptable et la partie est gagn e Mais vous n aurez certainement pas explor le jeu en vous d p chant Si vous tes lucide et que vous avez au moins une bonne excuse m daille de la police ou certificat de l h pital votre

Download Pdf Manuals

image

Related Search

Related Contents

Wiley Bioinformatics For Dummies, 2nd Edition    Easy RGB(W) Remote controller User Manual  Manual del usuario Medidor de humedad sin agujas Modelo MO257  WPT250 - Snooper Services  取扱説明書 (1.23 MB/PDF)  Melissa 640035 User's Manual  HP OFFICEJET 7300 User's Manual  

Copyright © All rights reserved.
Failed to retrieve file