001
002import java.util.HashMap; //imports des différentes classes dont l'on va avoir besoin
003import java.util.Stack;
004import java.io.File;
005import java.util.Scanner;
006
007/** 
008 * Voici la classe principale du jeu, gérant toutes les interfaces contenues dans le jeu
009 * @author  Gabriel Leroux aidé des enseignements de M.Bureau
010 * @version 30/04/2020
011 */
012
013public class GameEngine
014{
015
016    private Parser aParser;
017    private Room [] aTab;
018    private UserInterface aGui;
019    private HashMap <String,Room> aMap;
020    private Player aPlayer;
021    private int i=0;
022    private boolean aModeTest;
023    /**
024     * Création du constructeur par défaut de la class Game dans laquelle
025     * je fais appelle à la procédure createRoom() et je créer un nouvel objet aParser
026     * de la classe Parser.
027     * création d'une HashMap créant une Room avec leur nom.
028     */
029    public GameEngine(){
030        this.aMap= new HashMap<String, Room>();
031        this.aModeTest=false;
032        this.aParser=new Parser();
033        this.aTab=new Room[13];
034        this.createRooms();
035    }
036
037    /**
038     * Constructeur de gui
039     * @param pUserInterface l'interface utilisateur
040     */
041    public void setGUI( final UserInterface pUserInterface )
042    {
043        this.aGui = pUserInterface;
044        this.aPlayer.setGUI(pUserInterface);
045    }
046
047    /**
048     * Procédure dans laquelle je déclare toutes mes salles et leurs descriptions.
049     * Bien entendu, je m'aide de la Hashmap, et plus précisèment de la méthode setExit(),
050     * pour définir les sorties en fonction des directions. Je vais aussi définir l'ensemble des 
051     * items présents dans le jeu.
052     */
053    private void createRooms(){
054
055        //creer 12 lieux
056        Room vFaucon=new Room("Vous êtes dans le fabuleux vaisseau spatial dénommé le faucon Millenium.","Images/VFaucon.gif");
057        this.aTab[11] =  vFaucon;
058        Room vHangar=new Room("Vous vous trouvez dans le hangar, où le malheureux Faucon Millenium s'est fait attirer contre son gré.","Images/bienvenue.gif");
059        this.aTab[10] =  vHangar;
060        Room vVestibule=new Room("Vous êtes finalement sortis du hangar. Vous vous trouvez désormais dans le Vestibule.","Images/vVestibule.gif");
061        this.aTab[9] =  vVestibule;
062        Room vHall1=new Room("Vous êtes dans la première partie de l'effroyable hall de l'étoile de la mort, surnommé hall1","Images/vHall1.gif");
063        this.aTab[5] =  vHall1;
064        Room vHall2=new Room("Vous avez choisis de rentrer dans la deuxième partie du hall, le hall2","Images/vHall2.gif");
065        this.aTab[2] =  vHall2;
066        Room vCorridor=new Room("Vous pénétrer dans un corridor froid et sombre. Entourez des rires des soldats et des officiers vous prenez peur...","Images/vCorridor.gif");
067        this.aTab[1] =  vCorridor;
068        Room vR2D2=new Room("Hoourrrrra ! Vous avez réussi à atteindre votre unique allié dans cet environnement sinistre. Pouura t-il vraiment et voudra-t'il vraiment vous aider ?.","Images/vR2D2.gif");
069        this.aTab[0] =  vR2D2;
070        Room vRefectoire=new Room("Vous avez atteint le réfectoire. Voici donc où mange ces saloupios de l'Empire.","Images/vRefectoire.gif");
071        this.aTab[3] =  vRefectoire;
072        Room vSalleDeGarde2=new Room("Attention ! Vous avez atteint une salle de garde.", "Images/vSalleDeGarde2.gif");
073        this.aTab[4] =  vSalleDeGarde2;
074        Room vPosteDeCommandement=new Room("Je ne sais pas où vous êtes allez vous fourrer, mais vous êtes dans de beaux draps...c'est à dire le poste de commandement.","Images/danse.gif");
075        this.aTab[6] =  vPosteDeCommandement;
076        Room vPrison=new Room("Félicitation ! Vous avez atteint la salle des machines. Plus qu'à désactiver le champ d'attraction et revenir à bord du Faucon et cela sera parfait.","Images/vSalleDesMachines.gif");
077        this.aTab[7] =  vPrison; //numéro a partir duquel on ne peut pas tp
078        Room vSalleSecrete=new Room(".","Images/IDK.gif");
079        this.aTab[8] =  vSalleSecrete;
080        
081        
082        TransporterRoom vSalleDeGarde1=new TransporterRoom("Attention ! Vous avez atteint une salle de garde.","Images/vSalleDeGarde1.gif",this.aTab);
083        this.aTab[12] =  vSalleDeGarde1;
084        
085        
086        // positionner les sorties pour créer le "réseau" de lieux ci-dessous
087        //vFaucon.setExit("down",vHangar);
088
089        vHangar.setExit("east",vVestibule);
090        vHangar.setExit("north-east",vSalleDeGarde1);
091        vHangar.setExit("up",vFaucon);
092        vVestibule.setExit("north",vSalleDeGarde1);
093        vVestibule.setExit("west",vHangar);
094        vVestibule.setExit("north-east",vHall1);
095        vSalleDeGarde1.setExit("north",vCorridor);
096        vSalleDeGarde1.setExit("south",vVestibule);
097        vSalleDeGarde1.setExit("east",vHall1);
098        vSalleDeGarde1.setExit("north-east",vHall2);
099        vSalleDeGarde1.setExit("north-west",vR2D2);
100        vSalleDeGarde1.setExit("south-west",vHangar);
101        vHall1.setExit("north",vHall2);
102        vHall1.setExit("west",vSalleDeGarde1);
103        vHall1.setExit("north-east",vRefectoire);
104        vHall1.setExit("north-west",vCorridor);
105        vHall1.setExit("south-west",vVestibule);
106        vHall2.setExit("south",vHall1);
107        vHall2.setExit("east",vRefectoire);
108        vHall2.setExit("west",vCorridor);
109        vHall2.setExit("north-east", vSalleDeGarde2);
110        vHall2.setExit("north-west", vPosteDeCommandement);
111        vHall2.setExit("south-west",vSalleDeGarde1);
112        vCorridor.setExit("north",vPosteDeCommandement);
113        vCorridor.setExit("south",vSalleDeGarde1);
114        vCorridor.setExit("east",vHall2);
115        vCorridor.setExit("west",vR2D2);
116        vCorridor.setExit("south-east",vHall1);
117        vR2D2.setExit("east",vCorridor);
118        vR2D2.setExit("north-east", vPosteDeCommandement);
119        vR2D2.setExit("south-east",vSalleDeGarde1);
120        vRefectoire.setExit("north",vSalleDeGarde2);
121        vRefectoire.setExit("west",vHall2);
122        vRefectoire.setExit("south-west",vHall1);
123        vSalleDeGarde2.setExit("south",vRefectoire);
124        vSalleDeGarde2.setExit("north-west", vPrison);
125        vSalleDeGarde2.setExit("south-west",vHall2);
126        vPosteDeCommandement.setExit("south",vCorridor);
127        vPosteDeCommandement.setExit("north-east", vPrison);
128        vPosteDeCommandement.setExit("south-east", vHall2);
129        vPosteDeCommandement.setExit("south-west",vR2D2);
130        vPrison.setExit("south-east",vSalleDeGarde2);
131        vPrison.setExit("south-west",vPosteDeCommandement);
132
133        // création d'une Hashmap contenant les pîèces.
134        this.aMap.put("vFaucon",vFaucon);
135        this.aMap.put("vHangar",vHangar);
136        this.aMap.put("vHall1",vHall1);
137        this.aMap.put("vHall2",vHall2);
138        this.aMap.put("vSalleDeGarde1",vSalleDeGarde1);
139        this.aMap.put("vSalleDeGarde2",vSalleDeGarde2);
140        this.aMap.put("vPrison",vPrison);
141        this.aMap.put("vPosteDeCommandement",vPosteDeCommandement);
142        this.aMap.put("vRefectoire",vRefectoire);
143        this.aMap.put("vR2D2",vR2D2);
144        this.aMap.put("vCorridor",vCorridor);
145        this.aMap.put("vVestibule",vVestibule);
146        this.aMap.put("vSalleSecrete",vSalleSecrete);
147
148        //initialiser le lieu courant (où débute-t-on le jeu ?) comme indiqué ci-dessous.
149        String vPrenom = javax.swing.JOptionPane.showInputDialog( "Quel est ton prenom ?" );
150        this.aPlayer=new Player(vPrenom,vHangar);
151
152        //création d'items
153        vHangar.setItem("chaise-longue",50,"Ceci est une chaise-longue. Elle pourrait vous être utile. Prenez-là !");
154        vHangar.setItem("sabre",50, "Ceci est un sabre forgé par les antiques jedi du passé.");
155        vHall1.setItem("cristal d'amélioration",10, "Votre sabre causera plus de dégât.");
156        vHall1.setItem("casque",5, "Protège votre petite caboche.");
157        vVestibule.setItem("bourse",0,"Petite bourse contenant 10 roubles. Inutile de vous dire que vous avez eu de la chance.");
158        vRefectoire.setItem("Grosse_bourse",0,"Grosse bourse contenant 100 roubles. Inutile de vous dire que vous êtes chanceux."); 
159        vPrison.setItem("Disqueuse-ACDC", 220, "Une disqueuse faisant de la musique ?! Prenez-là elle vous servira à enfoncer cette porte.");
160        vPrison.setItem("Princesse_Leïa",0,"Vous avez atteint votre objectif. Pensez à la ramenez au Faucon Millenium.");
161        vR2D2.setItem("lance-flamme",50,"BRULEZ-TOUT!!!!");
162        vR2D2.setItem("perceuse-visseuse(Bosch)", 220,"Ne sous-estimez pas le pouvoir de la perceuse. Achetez là vous en aurez besoin pour accomplir votre quête.");
163        vCorridor.setItem("épuisette",50,"ALLEZ PECHEZ DANS CE MAGNIFIQUE OCEAN QU'EST L'ESPACE !");
164
165        vSalleSecrete.setItem("Moyenne_bourse",0,"Bourse permettant au joueur d'éponger leur dette et de continuer le jeu.");
166
167        //création des portes
168        Door vDoorHangar=new Door(vHangar.retourneItem("sabre"),true,false);
169        vHangar.setDoor("east",vDoorHangar);
170        vVestibule.setDoor("west",vDoorHangar);
171        Door vDoorHangar2=new Door(null,false,true);
172        vHangar.setDoor("north-east",vDoorHangar2);
173        vSalleDeGarde1.setDoor("south-west",vDoorHangar2);
174        Door vDoorHangar3=new Door(vPrison.retourneItem("Princesse_Leïa"),true,true);
175        vHangar.setDoor("up",vDoorHangar3);
176        Door vDoorVestibule=new Door(null,false,false);
177        vVestibule.setDoor("north",vDoorVestibule);
178        vSalleDeGarde1.setDoor("south",vDoorVestibule);
179        Door vDoorVestibule2=new Door(vHangar.retourneItem("chaise-longue"),true,false);
180        vVestibule.setDoor("north-east",vDoorVestibule2);
181        vHall1.setDoor("south-west",vDoorVestibule2);
182
183        Door vDoorSalleDeGarde1=new Door(vR2D2.retourneItem("lance-flamme"),true,false);
184        vSalleDeGarde1.setDoor("east",vDoorSalleDeGarde1);
185        vHall1.setDoor("west",vDoorSalleDeGarde1);
186        Door vDoorSalleDeGarde3=new Door(null,false,false);
187        vSalleDeGarde1.setDoor("north",vDoorSalleDeGarde3);
188        vCorridor.setDoor("south",vDoorSalleDeGarde3);
189        //Door vDoorSalleDeGarde5=new Door(null,false,false);
190        vSalleDeGarde1.setDoor("north-west",vDoorSalleDeGarde3);
191        vR2D2.setDoor("south-east",vDoorSalleDeGarde3);
192        Door vDoorSalleDeGarde7=new Door(vCorridor.retourneItem("épuisette"),true,false);
193        vSalleDeGarde1.setDoor("north-east",vDoorSalleDeGarde7);
194        vHall2.setDoor("south-west",vDoorSalleDeGarde7);
195        Door vDoorHall1=new Door(null,false,false);
196        vHall1.setDoor("north-east",vDoorHall1);
197        vRefectoire.setDoor("south-west",vDoorHall1);
198        // Door vDoorHall3=new Door(null,false,false);
199        vHall1.setDoor("north",vDoorHall1);
200        vHall2.setDoor("south",vDoorHall1);
201        //Door vDoorHall5=new Door(null,false,false);
202        vHall1.setDoor("north-west",vDoorHall1);
203        vCorridor.setDoor("south-east",vDoorHall1);
204
205        Door vDoorR2D2=new Door(null,false,true);
206        vR2D2.setDoor("north-east",vDoorR2D2);
207        vPosteDeCommandement.setDoor("south-west",vDoorR2D2);
208        Door vDoorR2D21=new Door(null,false,false);
209        vR2D2.setDoor("east",vDoorR2D21);
210        vCorridor.setDoor("west",vDoorR2D21);
211
212        Door vDoorCorridor=new Door(null,false,false);
213        vCorridor.setDoor("east",vDoorCorridor);
214        vHall2.setDoor("west",vDoorCorridor);
215        //Door vDoorCorridor2=new Door(null,false,false);
216        vCorridor.setDoor("north",vDoorCorridor);
217        vPosteDeCommandement.setDoor("south",vDoorCorridor);
218
219        Door vDoorHall2=new Door(null,false,false);
220        vHall2.setDoor("east",vDoorHall2);
221        vRefectoire.setDoor("west",vDoorHall2);
222        //Door vDoorHall4=new Door(null,false,false);
223        vHall2.setDoor("north-west",vDoorHall2);
224        vPosteDeCommandement.setDoor("south-east",vDoorHall2);
225        //Door vDoorHall6=new Door(null,false,false);
226        vHall2.setDoor("north-east",vDoorHall2);
227        vSalleDeGarde2.setDoor("south-west",vDoorHall2);
228
229        Door vDoorRefectoire=new Door(null,false,false);
230        vRefectoire.setDoor("north",vDoorRefectoire);
231        vSalleDeGarde2.setDoor("south",vDoorRefectoire);
232
233        Door vDoorSalleDeGarde2=new Door(vPrison.retourneItem("Disqueuse-ACDC"),true,false);
234        vSalleDeGarde2.setDoor("north-west",vDoorSalleDeGarde2);
235        vPrison.setDoor("south-east",vDoorSalleDeGarde2);
236
237        Door vDoorPosteDeCommandement=new Door(vR2D2.retourneItem("perceuse-visseuse(Bosch)"),true,false);
238        vPosteDeCommandement.setDoor("north-east",vDoorPosteDeCommandement);
239        vPrison.setDoor("south-west",vDoorPosteDeCommandement);
240
241        //création du téléporteur
242        vHall2.setBeamer("Téléporteur",0,"Ceci est un téléporteur.");
243
244    }
245    /**
246     * Méthode permettant de changer de pièce.
247     * @param pCommand mots tapées par le joueur 
248     */
249    private void goRoom(final Command pCommand ){
250        //aSon.stop();
251        //verifier qu'il ny a pas de second mot
252        if (pCommand.hasSecondWord()==false){
253            this.aGui.println("Go where?");
254            return;
255        }
256        // Determiner le lieu suivant.
257        Room vNextRoom=null;
258        String vDirection=pCommand.getSecondWord();
259        vNextRoom=this.aPlayer.getCurrentRoom().getExit(vDirection);
260
261        // s'il n'y a pas de sortie
262        if (vNextRoom==this.aPlayer.getCurrentRoom()){
263            this.aGui.println("Commande inconnue");}
264        else if (vNextRoom==null){
265            this.aGui.println("Il n'y a pas de sortie dans cette direction !");
266        }
267        else{// sinon la room current devient celle tapée au clavier et on affiche les directions disponibles de cette nouvelle room
268            //test si porte peut être déverrouillée 
269            Door vDoor=this.aPlayer.getCurrentRoom().getDoor(vDirection);
270            try{if (this.aPlayer.getListe().getItem(vDoor.getCle().getNom())!=null){
271                    vDoor.setPorteVer(false);}
272            }
273            catch(java.lang.NullPointerException gaby){
274            }
275            if (vDoor.getPorteVer()==false){//si la porte n'est pas vérouillée on bouge
276                if(vDoor.getTrap()==false){//si la porte n'est pas trap on bouge
277                    this.aPlayer.changerLaRoom(vNextRoom,false);
278                    this.aPlayer.printLocationInfo();
279
280                }
281                else{//Si la porte est trap, on bouge et on la vérouille ensuite
282                    this.aPlayer.changerLaRoom(vNextRoom,true);
283                    this.aPlayer.printLocationInfo();
284                    this.aGui.println("Ceci est une porte piégée, vous ne pourrez pas faire demi-tour.");
285
286                    vDoor.setPorteVer(true);
287                }
288            }
289            else{//sinon on ne bouge pas
290                try{if(vDoor.getCle().getNom()!=null){
291                        this.aGui.println("Cette porte est verouillée. Essayez de trouver l'item permettant de l'ouvrir.\n L'item est : "+vDoor.getCle().getNom()+".");}
292                }
293                catch(java.lang.NullPointerException gaby){this.aGui.println("Cette porte est maintenant verrouillée et aucun item ne peut la dévérouiller. C'est une trap Door.");}
294            }
295        }//fin else
296    }//fin méthode
297
298    /**
299     * Procédure d'aide affichant les différentes commandes et faisant appel à printLocationInfo().
300     */
301    private void printHelp(){
302        this.aGui.println("Ne désespérez pas vous y êtes presque ! ");
303        this.aPlayer.printLocationInfo();
304        this.aGui.println("Vos commandes sont :");
305        this.aGui.println("");
306        this.aGui.println(this.aParser.getCommandString());
307        this.aGui.println("");
308
309        
310
311    }
312
313    /**
314     * Lance les méthodes associées aux commandes tapées par l'utilisateur 
315     * 
316     * @param pCommandLine les mots tapés par l'utilisateur.
317     */
318    public void interpretCommand( final String pCommandLine ) 
319    {
320        this.aGui.println( this.aPlayer.getNom() + " > " + pCommandLine );
321        Command vCommand = this.aParser.getCommand( pCommandLine );
322
323        if ( vCommand.isUnknown() ) {
324            this.aGui.println( "Je ne vois pas de quelle commande vous voulez parler." );
325            return;
326        }
327
328        String vCommandWord = vCommand.getCommandWord();
329        if ( vCommandWord.equals( "help" ) )
330            this.printHelp();
331        else if ( vCommandWord.equals( "go" ) )
332            this.goRoom( vCommand );
333
334        else if ( vCommandWord.equals( "look" ) )
335            this.aPlayer.look();
336
337        else if ( vCommandWord.equals( "back" ) )
338            if (vCommand.hasSecondWord()){
339                this.aGui.println( "Que vouliez-vous dire ? Pour retourner en arrière taper simplement 'back'. " );
340            }
341
342            else{ this.aPlayer.back();}
343        else if (vCommandWord.equals("test")){
344            this.test(vCommand.getSecondWord());
345        }
346        else if (vCommandWord.equals("prendre")){
347            if (vCommand.hasSecondWord()){
348                this.aPlayer.prendre(vCommand.getSecondWord());}
349            else{this.aGui.println ("Que voulez-vous prendre ?");}
350        }
351        else if (vCommandWord.equals("deposer")){
352            if (vCommand.hasSecondWord()){
353                this.aPlayer.deposer(vCommand.getSecondWord());}
354            else{this.aGui.println ("Que voulez-vous déposer ?");}
355        }
356        else if ( vCommandWord.equals( "ouvrir" ) ){
357            if (vCommand.hasSecondWord()){
358                this.aPlayer.ouvrir(vCommand.getSecondWord());}
359            else{this.aGui.println ("Que voulez-vous ouvrir ?");}}
360        else if (vCommandWord.equals("jouer")){
361            this.jouer(vCommand.getSecondWord());}
362        else if (vCommandWord.equals("charger")){
363            try{this.aPlayer.getListe().getBeamer(vCommand.getSecondWord()).charger(this.aPlayer.getCurrentRoom());} 
364            catch(java.lang.NullPointerException gaby){this.aGui.println ("Que voulez-vous charger ? Rentrer un téléporteur valide.");}}
365        else if (vCommandWord.equals("tirer")){
366
367            try{this.aPlayer.seTeleporter(vCommand.getSecondWord());}
368            catch(java.lang.NullPointerException gaby){this.aGui.println("Avec quoi voulez-vous tirer ? Rentrer un téléporteur valide.");}}
369        else if ( vCommandWord.equals( "quit" ) ) {
370            if ( vCommand.hasSecondWord() )
371                this.aGui.println( "Quit what?" );
372            else
373                this.endGame();
374        }
375        else if (vCommandWord.equals( "alea" )){
376            this.alea(vCommand.getSecondWord());
377        }
378    }
379
380    /**
381     * méthode test permettant d'éxécuter les commandes d'un fichier texte
382     * supposé dans le répertoire courant
383     * @param pTest le nom du fichier.
384     */
385    public void test(final String pTest){
386        this.aModeTest=true;
387        try {Scanner sr =new Scanner (new File(pTest+".txt"));
388            while (sr.hasNextLine()){
389                String vLigne = sr.nextLine();
390                this.interpretCommand(vLigne);
391            }
392            sr.close();
393            
394        }
395        catch (final java.io.FileNotFoundException sr){ this.aGui.println("Le fichier n'existe pas.");}
396        this.aModeTest=false;
397    }
398
399    /**
400     * méthode permettant de jouer au pierre feuille ciseau pour gagner/perdre de l'argent
401     * @param pString représente ce que le joueur choisi
402     */
403    public void jouer(final String pString){
404        try{
405            if (this.aPlayer.getCurrentRoom()==this.aMap.get("vR2D2")){
406                int vChiffre=(int)(Math.random()*3);
407
408                String vPc="";
409                if (vChiffre==0){
410                    vPc="pierre";
411                }
412                else if (vChiffre==1){  
413                    vPc="feuille";
414                }
415                else{ 
416                    vPc="ciseaux";
417                }
418
419                if (pString.equals(vPc)){
420                    this.aGui.println("R2D2 a choisi : "+vPc);
421                    this.aGui.println("Egalité. Vous ne gagnez ni ne perdez rien. N'hésitez pas à rejouer !");
422                    //i+=1;
423
424                }
425                else if(pString.equals("ciseaux")&&vPc.equals("feuille")||pString.equals("pierre")&&vPc.equals("ciseaux")||pString.equals("feuille")&&vPc.equals("pierre")){
426                    this.aGui.println("R2D2 a choisi : "+vPc);
427                    this.aGui.println("Vous avez gagné. Vous gagnez 10 roubles.");
428                    this.aPlayer.setArgent(10);
429
430                    //i+=1;
431                }
432                else if(pString.equals("ciseaux")&&vPc.equals("pierre")||pString.equals("pierre")&&vPc.equals("feuille")||pString.equals("feuille")&&vPc.equals("ciseaux")){ 
433                    this.aGui.println("R2D2 a choisi : "+vPc);
434                    this.aGui.println("Vous avez perdu. Vous perdez 20 roubles. Le jeu c'est dangereux.");            
435                    this.aPlayer.setArgent(-20);
436                    i+=1;
437                }
438                
439                
440                else{
441                    this.aGui.println("Commande inconnue.\nVeillez à bien rentrer 'pierre','feuille' ou 'ciseau' après le mot de commande 'jouer'.");
442                }
443                //création salle secrète
444
445                if (this.i==4){//if effacable ainsi que l'attribut i
446                    this.aMap.get("vR2D2").setItem("ame_du_joueur",0,"Vous êtes un grand joueur. Malchanceux ou chanceux peut m'importe vous méritez d'être récompensé. Prenez cette ame !");
447                    this.aMap.get("vSalleSecrete").setExit("east",this.aMap.get("vR2D2"));
448                    this.aMap.get("vR2D2").setExit("west",this.aMap.get("vSalleSecrete"));
449                    Door vDoorSalleSecrete= new Door(this.aMap.get("vR2D2").retourneItem("ame_du_joueur"), true, false);
450                    this.aMap.get("vSalleSecrete").setDoor("east",vDoorSalleSecrete);
451                    this.aMap.get("vR2D2").setDoor("west",vDoorSalleSecrete);
452
453                }
454            }//fin du if
455            else{this.aGui.println("Vous n'avez personne avec qui jouer.");
456            }//fin du else
457        }//fin du try
458        catch(java.lang.NullPointerException gaby){this.aGui.println("Vous êtes dans la bonne salle. Pensez à rentrer 'pierre','feuille' ou 'ciseau' après le mot de commande 'jouer'.");} 
459    }
460
461    /**
462     * fonction de fin de jeu empêchant toute saisie supplémentaire
463     *    
464     */
465    public void endGame()
466    {
467        this.aGui.println( "A la revoyure ! Ce fut un plaisir" );
468        this.aGui.enable( false );
469
470    }
471    /**
472     * Méthode permettant de sauver en mémoire la pièce que l'on veut lors de l'exécution des fichiers tests
473     * @param pString le nom de la pièce où l'on veut se rendre
474     */
475    public void alea(final String pString){
476        if (this.aModeTest==false){
477            this.aGui.println("Désolé cette commande n'est activable qu'en mode test.");
478            return;
479        }
480        else{
481            TransporterRoom vRoom=(TransporterRoom)this.aTab[12];
482            vRoom.setAlea(this.aMap.get(pString));
483        }
484    }
485} // Game
486