eliot-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Eliot-dev] eliot game/game_move_cmd.cpp test/driver utils/...


From: Olivier Teulière
Subject: [Eliot-dev] eliot game/game_move_cmd.cpp test/driver utils/...
Date: Sat, 21 Feb 2009 16:56:33 +0000

CVSROOT:        /cvsroot/eliot
Module name:    eliot
Changes by:     Olivier Teulière <ipkiss>       09/02/21 16:56:33

Modified files:
        game           : game_move_cmd.cpp 
        test           : driver 
        utils          : eliottxt.cpp 
Added files:
        test           : duplicate_explosive_variant.input 
                         duplicate_explosive_variant.ref 
                         duplicate_joker_variant.input 
                         duplicate_joker_variant.ref 
                         freegame_explosive_variant.input 
                         freegame_explosive_variant.ref 
                         freegame_joker_variant.input 
                         freegame_joker_variant.ref 
                         training_explosive_variant.input 
                         training_explosive_variant.ref 
                         training_joker_variant.input 
                         training_joker_variant.ref 

Log message:
         - Fixed the previous fix for joker games, for real this time
         - Added tests for joker and explosive games in all modes

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/eliot/game/game_move_cmd.cpp?cvsroot=eliot&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/eliot/test/driver?cvsroot=eliot&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/eliot/test/duplicate_explosive_variant.input?cvsroot=eliot&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/eliot/test/duplicate_explosive_variant.ref?cvsroot=eliot&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/eliot/test/duplicate_joker_variant.input?cvsroot=eliot&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/eliot/test/duplicate_joker_variant.ref?cvsroot=eliot&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/eliot/test/freegame_explosive_variant.input?cvsroot=eliot&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/eliot/test/freegame_explosive_variant.ref?cvsroot=eliot&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/eliot/test/freegame_joker_variant.input?cvsroot=eliot&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/eliot/test/freegame_joker_variant.ref?cvsroot=eliot&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/eliot/test/training_explosive_variant.input?cvsroot=eliot&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/eliot/test/training_explosive_variant.ref?cvsroot=eliot&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/eliot/test/training_joker_variant.input?cvsroot=eliot&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/eliot/test/training_joker_variant.ref?cvsroot=eliot&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/eliot/utils/eliottxt.cpp?cvsroot=eliot&r1=1.34&r2=1.35

Patches:
Index: game/game_move_cmd.cpp
===================================================================
RCS file: /cvsroot/eliot/eliot/game/game_move_cmd.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- game/game_move_cmd.cpp      19 Feb 2009 18:26:11 -0000      1.4
+++ game/game_move_cmd.cpp      21 Feb 2009 16:56:32 -0000      1.5
@@ -106,14 +106,10 @@
         {
             if (m_round.isPlayedFromRack(i) && m_round.isJoker(i))
             {
-                // Get the real bag
-                Bag tmpBag(m_game.getDic());
-                m_game.realBag(tmpBag);
-
                 // Is the represented letter still available in the bag?
                 // XXX: this way to get the represented letter sucks...
                 Tile t(towupper(m_round.getTile(i).toChar()));
-                if (tmpBag.in(t))
+                if (bag.in(t))
                 {
                     bag.replaceTile(Tile::Joker());
                     bag.takeTile(t);
@@ -121,6 +117,8 @@
                     // FIXME: This shouldn't be necessary, this is only
                     // needed because of the stupid way of handling jokers in
                     // rounds
+                    // This is also needed for the unplayRound() method
+                    // to work correctly
                     m_round.setJoker(i, false);
                 }
 

Index: test/driver
===================================================================
RCS file: /cvsroot/eliot/eliot/test/driver,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- test/driver 24 Jan 2009 10:28:21 -0000      1.13
+++ test/driver 21 Feb 2009 16:56:32 -0000      1.14
@@ -32,6 +32,10 @@
 training_rosace     0
 # Navigation in the game history
 training_navigation 0
+# Joker game
+training_joker_variant 12
+# Explosive game
+training_explosive_variant 13
 
 # Board cross off by one score
 training_cross      0
@@ -65,6 +69,10 @@
 duplicate_no_point 68 # For 2 jokers in the rack
 # Navigation in the game history
 duplicate_navigation 11
+# Joker game
+duplicate_joker_variant 14
+# Explosive game
+duplicate_explosive_variant 15
 
 #################
 # Free game mode
@@ -80,6 +88,10 @@
 freegame_3_ai       2
 # Navigation in the game history
 freegame_navigation 10
+# Joker game
+freegame_joker_variant 16
+# Explosive game
+freegame_explosive_variant 17
 
 ##############
 # Load / Save
@@ -90,7 +102,7 @@
 # save and reload a training game, standard format
 load_saved_game     0  # randseed unused
 # load a training game with advanced format (test.elt)
-# load_test_adv       0 # We need to specifie a much more complete file format
+# load_test_adv       0 # We need to specify a much more complete file format
                         # before we can handle load/save on duplicate and
                        # freegame games
 

Index: utils/eliottxt.cpp
===================================================================
RCS file: /cvsroot/eliot/eliot/utils/eliottxt.cpp,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -b -r1.34 -r1.35
--- utils/eliottxt.cpp  24 Jan 2009 17:43:57 -0000      1.34
+++ utils/eliottxt.cpp  21 Feb 2009 16:56:33 -0000      1.35
@@ -1,6 +1,6 @@
 /*****************************************************************************
  * Eliot
- * Copyright (C) 2005-2008 Antoine Fraboulet & Olivier Teulière
+ * Copyright (C) 2005-2009 Antoine Fraboulet & Olivier Teulière
  * Authors: Antoine Fraboulet <antoine.fraboulet @@ free.fr>
  *          Olivier Teulière <ipkiss @@ gmail.com>
  *
@@ -290,20 +290,28 @@
 {
     printf("  ?       : aide -- cette page\n");
     printf("  e       : démarrer le mode entraînement\n");
-    printf("  c []    : charger la partie du fichier []\n");
+    printf("  ej       : démarrer le mode entraînement en partie joker\n");
+    printf("  ee       : démarrer le mode entraînement en partie détonante\n");
     printf("  d [] {} : démarrer une partie duplicate avec\n");
     printf("                [] joueurs humains et {} joueurs IA\n");
+    printf("  dj [] {} : démarrer une partie duplicate avec\n");
+    printf("                [] joueurs humains et {} joueurs IA (partie 
joker)\n");
+    printf("  de [] {} : démarrer une partie duplicate avec\n");
+    printf("                [] joueurs humains et {} joueurs IA (partie 
détonante)\n");
     printf("  l [] {} : démarrer une partie libre avec\n");
     printf("                [] joueurs humains et {} joueurs IA\n");
-    printf("  D       : raccourci pour d 1 1\n");
-    printf("  L       : raccourci pour l 1 1\n");
+    printf("  lj [] {} : démarrer une partie libre avec\n");
+    printf("                [] joueurs humains et {} joueurs IA (partie 
joker)\n");
+    printf("  le [] {} : démarrer une partie libre avec\n");
+    printf("                [] joueurs humains et {} joueurs IA (partie 
détonante)\n");
+    printf("  c []     : charger la partie du fichier []\n");
     printf("  x [] {1} {2} {3} : expressions rationnelles\n");
     printf("          [] expression à rechercher\n");
     printf("          {1} nombre de résultats à afficher\n");
     printf("          {2} longueur minimum d'un mot\n");
     printf("          {3} longueur maximum d'un mot\n");
     printf("  s [b|i] {1} {2} : définir la valeur {2} pour l'option {1},\n");
-    printf("                    qui est de type (b)ool ou (i)nt}\n");
+    printf("                    qui est de type (b)ool ou (i)nt\n");
     printf("  q       : quitter\n");
 }
 
@@ -855,7 +863,7 @@
 
         if (tokens.empty())
             continue;
-        if (tokens[0].size() > 1)
+        if (tokens[0].size() > 2)
         {
             printf("%s\n", "Invalid command");
             continue;
@@ -905,6 +913,14 @@
                         // New training game
                         Training *tmpGame = 
GameFactory::Instance()->createTraining(iDic);
                         PublicGame *game = new PublicGame(*tmpGame);
+                        // Set the variant
+                        if (tokens[0].size() > 1)
+                        {
+                            if (tokens[0][1] == L'j')
+                                game->setVariant(PublicGame::kJOKER);
+                            else if (tokens[0][1] == L'e')
+                                game->setVariant(PublicGame::kEXPLOSIVE);
+                        }
                         game->start();
                         loopTraining(*game);
                         //GameFactory::Instance()->releaseGame(*game);
@@ -932,6 +948,14 @@
                             game->addPlayer(new HumanPlayer);
                         for (int i = 0; i < _wtoi(nbAI.c_str()); ++i)
                             game->addPlayer(new AIPercent(1));
+                        // Set the variant
+                        if (tokens[0].size() > 1)
+                        {
+                            if (tokens[0][1] == L'j')
+                                game->setVariant(PublicGame::kJOKER);
+                            else if (tokens[0][1] == L'e')
+                                game->setVariant(PublicGame::kEXPLOSIVE);
+                        }
                         game->start();
                         loopDuplicate(*game);
                         //GameFactory::Instance()->releaseGame(*game);
@@ -959,38 +983,20 @@
                             game->addPlayer(new HumanPlayer);
                         for (int i = 0; i < _wtoi(nbAI.c_str()); i++)
                             game->addPlayer(new AIPercent(1));
-                        game->start();
-                        loopFreegame(*game);
-                        //GameFactory::Instance()->releaseGame(*game);
-                        delete game;
-                    }
-                    break;
-                case L'D':
+                        // Set the variant
+                        if (tokens[0].size() > 1)
                     {
-                        // New duplicate game
-                        Duplicate *tmpGame = 
GameFactory::Instance()->createDuplicate(iDic);
-                        PublicGame *game = new PublicGame(*tmpGame);
-                        game->addPlayer(new HumanPlayer);
-                        game->addPlayer(new AIPercent(1));
-                        game->start();
-                        loopDuplicate(*game);
-                        //GameFactory::Instance()->releaseGame(*game);
-                        delete game;
-                        break;
+                            if (tokens[0][1] == L'j')
+                                game->setVariant(PublicGame::kJOKER);
+                            else if (tokens[0][1] == L'e')
+                                game->setVariant(PublicGame::kEXPLOSIVE);
                     }
-                case L'L':
-                    {
-                        // New free game
-                        FreeGame *tmpGame = 
GameFactory::Instance()->createFreeGame(iDic);
-                        PublicGame *game = new PublicGame(*tmpGame);
-                        game->addPlayer(new HumanPlayer);
-                        game->addPlayer(new AIPercent(1));
                         game->start();
                         loopFreegame(*game);
                         //GameFactory::Instance()->releaseGame(*game);
                         delete game;
-                        break;
                     }
+                    break;
                 case L'x':
                     // Regular expression tests
                     handleRegexp(iDic, tokens);

Index: test/duplicate_explosive_variant.input
===================================================================
RCS file: test/duplicate_explosive_variant.input
diff -N test/duplicate_explosive_variant.input
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ test/duplicate_explosive_variant.input      21 Feb 2009 16:56:32 -0000      
1.1
@@ -0,0 +1,5 @@
+de 0 1
+a g
+a p
+q
+q

Index: test/duplicate_explosive_variant.ref
===================================================================
RCS file: test/duplicate_explosive_variant.ref
diff -N test/duplicate_explosive_variant.ref
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ test/duplicate_explosive_variant.ref        21 Feb 2009 16:56:32 -0000      
1.1
@@ -0,0 +1,76 @@
+Using seed: 15
+[?] pour l'aide
+commande> de 0 1
+helperSetRackRandom(): initial rack: ?HPLEYS (best word: gLYPHES)
+helperSetRackRandom(): replacing Joker with G
+helperSetRackRandom(): initial rack: ?WREFOI (best word: FERIa)
+helperSetRackRandom(): replacing Joker with A
+helperSetRackRandom(): initial rack: OW+?HBAG (best word: BOGHeY)
+helperSetRackRandom(): replacing Joker with E
+helperSetRackRandom(): initial rack: AW+?EDKE (best word: KWAs)
+helperSetRackRandom(): replacing Joker with S
+helperSetRackRandom(): initial rack: DEE+?ASI (best word: SpEEDAIS)
+helperSetRackRandom(): replacing Joker with P
+helperSetRackRandom(): initial rack: ?IDAEAO (best word: WEBrADIO)
+helperSetRackRandom(): replacing Joker with R
+helperSetRackRandom(): initial rack: A+?UTENZ (best word: ATtENUEZ)
+helperSetRackRandom(): replacing Joker with T
+helperSetRackRandom(): initial rack: ?EINECU (best word: GENICUlE)
+helperSetRackRandom(): replacing Joker with L
+helperSetRackRandom(): initial rack: ?TREVRT (best word: TREViRAT)
+helperSetRackRandom(): replacing Joker with I
+helperSetRackRandom(): initial rack: ?UNCNXS (best word: CEUX)
+helperSetRackRandom(): initial rack: ?NOAFUA (best word: FAUX)
+mode duplicate
+[?] pour l'aide
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  M  -  -  -  -  -
+ B   -  K  -  -  -  J  -  -  -  O  -  N  -  -  -
+ C   -  W  E  B  R  A  D  I  O  S  -  O  -  -  -
+ D   F  A  -  O  -  U  -  -  -  -  -  T  -  -  -
+ E   E  S  -  G  E  N  I  C  U  L  E  e  -  -  -
+ F   R  -  -  H  -  E  -  -  -  -  -  R  -  -  -
+ G   I  -  -  E  -  -  -  -  -  -  -  A  -  -  -
+ H   A  G  L  Y  P  H  E  S  -  L  A  I  N  E  E
+ I   -  -  -  S  U  A  -  P  L  a  N  T  O  N  S
+ J   -  -  -  -  -  -  -  E  -  -  -  -  -  -  -
+ K   -  -  -  -  A  T  T  E  N  U  E  Z  -  -  -
+ L   -  -  -  C  -  -  -  D  -  -  -  O  -  -  -
+ M   -  T  R  E  V  I  R  A  T  -  -  I  -  -  -
+ N   -  -  -  U  -  -  -  I  -  V  I  D  E  R  -
+ O   F  A  U  X  -  -  -  S  -  -  -  E  -  -  -
+commande> a p
+Eliot 1.5
+
+Game type: Duplicate
+Player 0: Computer
+
+    N |   RACK   |    SOLUTION     | REF | PTS | P | BONUS
+   ===|==========|=================|=====|=====|===|======
+    1 |  HSGPYEL | GLYPHES         |  H2 | 114 | 0 | *
+    2 |  OIAWEFR | FERIA           |  1D | 105 | 0 |  
+    3 | OW+HGBAE | BOGHEY          |  4C |  42 | 0 |  
+    4 | AW+EDESK | KWAS            |  2B |  51 | 0 |  
+    5 | DEE+PISA | SPEEDAIS        |  8H |  89 | 0 | *
+    6 |  OAADEIR | WEBRADIO        |  C2 |  46 | 0 |  
+    7 | A+ZTTNUE | ATTENUEZ        |  K5 | 118 | 0 | *
+    8 |  CEUIELN | GENICULE        |  E4 |  94 | 0 | *
+    9 |  TVIRETR | TREVIRAT        |  M2 |  76 | 0 | *
+   10 |  CSN?UXN | CEUX            |  4L |  50 | 0 |  
+   11 | NNS?+LOT | PLaNTONS        |  I8 |  61 | 0 | *
+   12 |  ?OUANAF | FAUX            |  O1 |  48 | 0 |  
+   13 | ANO?+RTI | NOTeRAIT        | 12B |  77 | 0 | *
+   14 |  MLIEDNO | ZOIDE           | 12K |  32 | 0 |  
+   15 | LMN+AUSE | SUA             |  I4 |  34 | 0 |  
+   16 | ELMN+ARE | LAINEE          | H10 |  31 | 0 |  
+   17 | MR+IVMEL | VIDER           | N10 |  34 | 0 |  
+   18 | LMM+QUEJ | JAUNE           |  6B |  30 | 0 |  
+   19 | LMMQ+OSM | MOS             | 10A |  27 | 0 |  
+
+   Total: 1159
+
+Rack 0: LMMQ
+commande> q
+fin du mode duplicate
+commande> q

Index: test/duplicate_joker_variant.input
===================================================================
RCS file: test/duplicate_joker_variant.input
diff -N test/duplicate_joker_variant.input
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ test/duplicate_joker_variant.input  21 Feb 2009 16:56:32 -0000      1.1
@@ -0,0 +1,28 @@
+dj 1 1
+a t
+j gENEZ h8
+a S
+a g
+a l
+a p
+j pLANTIEZ 3f
+a g
+a l
+a p
+j DECODaT g5
+a g
+a l
+a p
+j dEPLANTIEZ 3d
+a g
+a l
+a p
+h p
+a g
+a p
+h p
+a g
+a p
+a l
+q
+q

Index: test/duplicate_joker_variant.ref
===================================================================
RCS file: test/duplicate_joker_variant.ref
diff -N test/duplicate_joker_variant.ref
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ test/duplicate_joker_variant.ref    21 Feb 2009 16:56:32 -0000      1.1
@@ -0,0 +1,235 @@
+Using seed: 14
+[?] pour l'aide
+commande> dj 1 1
+mode duplicate
+[?] pour l'aide
+commande> a t
+AK?EZEN
+commande> j gENEZ h8
+commande> a S
+Joueur 0:   46
+Joueur 1:   48
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ C   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ D   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ E   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ F   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ G   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ H   -  -  A  K  E  N  E  S  -  -  -  -  -  -  -
+ I   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ J   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ K   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ L   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ M   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ N   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+commande> a l
+ A B C D  E F G H I J K L M N O P Q R S T U V W X Y Z ?
+ 8 2 2 3 13 2 2 2 8 1 0 5 3 5 6 2 1 6 5 6 6 2 1 1 1 1 2
+commande> a p
+Eliot 1.5
+
+Game type: Duplicate
+Player 0: Human
+Player 1: Computer
+
+    N |   RACK   |    SOLUTION     | REF | PTS | P | BONUS
+   ===|==========|=================|=====|=====|===|======
+    1 |  AK?EZEN | AKENEs          |  H3 |  48 | 1 |  
+
+   Total: 48
+
+Rack 0: Z+IL?ENT
+Rack 1: Z+IL?ENT
+commande> j pLANTIEZ 3f
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ C   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ D   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ E   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ F   -  -  P  -  -  -  -  -  -  -  -  -  -  -  -
+ G   -  -  L  -  -  -  -  -  -  -  -  -  -  -  -
+ H   -  -  A  K  E  N  E  S  -  -  -  -  -  -  -
+ I   -  -  N  -  -  -  -  -  -  -  -  -  -  -  -
+ J   -  -  T  -  -  -  -  -  -  -  -  -  -  -  -
+ K   -  -  I  -  -  -  -  -  -  -  -  -  -  -  -
+ L   -  -  E  -  -  -  -  -  -  -  -  -  -  -  -
+ M   -  -  Z  -  -  -  -  -  -  -  -  -  -  -  -
+ N   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+commande> a l
+ A B C D  E F G H I J K L M N O P Q R S T U V W X Y Z ?
+ 8 2 2 3 12 2 2 2 7 1 0 4 3 4 6 1 1 6 5 5 6 2 1 1 1 0 2
+commande> a p
+Eliot 1.5
+
+Game type: Duplicate
+Player 0: Human
+Player 1: Computer
+
+    N |   RACK   |    SOLUTION     | REF | PTS | P | BONUS
+   ===|==========|=================|=====|=====|===|======
+    1 |  AK?EZEN | AKENEs          |  H3 |  48 | 1 |  
+    2 | Z+IL?ENT | pLANTIEZ        |  3F |  86 | 0 | *
+
+   Total: 134
+
+Rack 0: DEDOTC?
+Rack 1: DEDOTC?
+commande> j DECODaT g5
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ C   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ D   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ E   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ F   -  -  P  -  -  -  -  -  -  -  -  -  -  -  -
+ G   -  -  L  -  D  E  C  O  D  A  T  -  -  -  -
+ H   -  -  A  K  E  N  E  S  -  -  -  -  -  -  -
+ I   -  -  N  -  -  -  -  -  -  -  -  -  -  -  -
+ J   -  -  T  -  -  -  -  -  -  -  -  -  -  -  -
+ K   -  -  I  -  -  -  -  -  -  -  -  -  -  -  -
+ L   -  -  E  -  -  -  -  -  -  -  -  -  -  -  -
+ M   -  -  Z  -  -  -  -  -  -  -  -  -  -  -  -
+ N   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+commande> a l
+ A B C D  E F G H I J K L M N O P Q R S T U V W X Y Z ?
+ 7 2 1 1 11 2 2 2 7 1 0 4 3 4 5 1 1 6 5 4 6 2 1 1 1 0 2
+commande> a p
+Eliot 1.5
+
+Game type: Duplicate
+Player 0: Human
+Player 1: Computer
+
+    N |   RACK   |    SOLUTION     | REF | PTS | P | BONUS
+   ===|==========|=================|=====|=====|===|======
+    1 |  AK?EZEN | AKENEs          |  H3 |  48 | 1 |  
+    2 | Z+IL?ENT | pLANTIEZ        |  3F |  86 | 0 | *
+    3 |  DEDOTC? | DECODaT         |  G5 |  79 | 0 | *
+
+   Total: 213
+
+Rack 0: RABEGE?
+Rack 1: RABEGE?
+commande> j dEPLANTIEZ 3d
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ C   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ D   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ E   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ F   -  -  P  -  -  -  -  -  -  -  -  -  -  -  -
+ G   -  -  L  -  D  E  C  O  D  A  T  -  -  -  -
+ H   -  -  A  K  E  N  E  S  -  -  -  -  -  -  -
+ I   -  -  N  -  -  -  -  -  -  -  -  -  -  -  -
+ J   -  -  T  -  -  -  -  -  -  -  -  -  -  -  -
+ K   -  -  I  -  -  -  -  -  -  -  -  -  -  -  -
+ L   -  H  E  B  E  R  G  E  A  -  -  -  -  -  -
+ M   -  -  Z  -  -  -  -  -  -  -  -  -  -  -  -
+ N   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+commande> a l
+ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ?
+ 6 1 1 1 9 2 1 1 7 1 0 4 3 4 5 1 1 5 5 4 6 2 1 1 1 0 2
+commande> a p
+Eliot 1.5
+
+Game type: Duplicate
+Player 0: Human
+Player 1: Computer
+
+    N |   RACK   |    SOLUTION     | REF | PTS | P | BONUS
+   ===|==========|=================|=====|=====|===|======
+    1 |  AK?EZEN | AKENEs          |  H3 |  48 | 1 |  
+    2 | Z+IL?ENT | pLANTIEZ        |  3F |  86 | 0 | *
+    3 |  DEDOTC? | DECODaT         |  G5 |  79 | 0 | *
+    4 |  RABEGE? | hEBERGEA        |  L2 |  72 | 1 | *
+
+   Total: 285
+
+Rack 0: X?MFETR
+Rack 1: X?MFETR
+commande> h p
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ C   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ D   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ E   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ F   -  -  P  -  -  -  -  -  -  -  -  -  -  -  -
+ G   -  -  L  -  D  E  C  O  D  A  T  -  -  -  -
+ H   -  -  A  K  E  N  E  S  -  -  -  -  -  -  -
+ I   -  -  N  -  -  -  -  -  -  -  -  -  -  -  -
+ J   -  -  T  -  -  -  -  -  -  -  -  -  -  -  -
+ K   -  -  I  -  -  -  -  -  -  -  -  -  -  -  -
+ L   -  -  E  -  -  -  -  -  -  -  -  -  -  -  -
+ M   -  -  Z  -  -  -  -  -  -  -  -  -  -  -  -
+ N   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+commande> a p
+Eliot 1.5
+
+Game type: Duplicate
+Player 0: Human
+Player 1: Computer
+
+    N |   RACK   |    SOLUTION     | REF | PTS | P | BONUS
+   ===|==========|=================|=====|=====|===|======
+    1 |  AK?EZEN | AKENEs          |  H3 |  48 | 1 |  
+    2 | Z+IL?ENT | pLANTIEZ        |  3F |  86 | 0 | *
+    3 |  DEDOTC? | DECODaT         |  G5 |  79 | 0 | *
+
+   Total: 213
+
+Rack 0: RABEGE?
+Rack 1: RABEGE?
+commande> h p
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ C   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ D   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ E   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ F   -  -  P  -  -  -  -  -  -  -  -  -  -  -  -
+ G   -  -  L  -  -  -  -  -  -  -  -  -  -  -  -
+ H   -  -  A  K  E  N  E  S  -  -  -  -  -  -  -
+ I   -  -  N  -  -  -  -  -  -  -  -  -  -  -  -
+ J   -  -  T  -  -  -  -  -  -  -  -  -  -  -  -
+ K   -  -  I  -  -  -  -  -  -  -  -  -  -  -  -
+ L   -  -  E  -  -  -  -  -  -  -  -  -  -  -  -
+ M   -  -  Z  -  -  -  -  -  -  -  -  -  -  -  -
+ N   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+commande> a p
+Eliot 1.5
+
+Game type: Duplicate
+Player 0: Human
+Player 1: Computer
+
+    N |   RACK   |    SOLUTION     | REF | PTS | P | BONUS
+   ===|==========|=================|=====|=====|===|======
+    1 |  AK?EZEN | AKENEs          |  H3 |  48 | 1 |  
+    2 | Z+IL?ENT | pLANTIEZ        |  3F |  86 | 0 | *
+
+   Total: 134
+
+Rack 0: DEDOTC?
+Rack 1: DEDOTC?
+commande> a l
+ A B C D  E F G H I J K L M N O P Q R S T U V W X Y Z ?
+ 8 2 2 3 12 2 2 2 7 1 0 4 3 4 6 1 1 6 5 5 6 2 1 1 1 0 2
+commande> q
+fin du mode duplicate
+commande> q

Index: test/freegame_explosive_variant.input
===================================================================
RCS file: test/freegame_explosive_variant.input
diff -N test/freegame_explosive_variant.input
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ test/freegame_explosive_variant.input       21 Feb 2009 16:56:32 -0000      
1.1
@@ -0,0 +1,17 @@
+le 1 1
+a T
+j ADULENT h3
+a g
+a T
+j EXULTERA 5f
+a g
+a T
+j EDITATES F5
+a gm
+a T
+j EGERMAIS 11d
+a g
+a S
+a p
+q
+q

Index: test/freegame_explosive_variant.ref
===================================================================
RCS file: test/freegame_explosive_variant.ref
diff -N test/freegame_explosive_variant.ref
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ test/freegame_explosive_variant.ref 21 Feb 2009 16:56:32 -0000      1.1
@@ -0,0 +1,137 @@
+Using seed: 17
+[?] pour l'aide
+commande> le 1 1
+helperSetRackRandom(): initial rack: ?NADUTE (best word: ADUlENT)
+helperSetRackRandom(): replacing Joker with L
+helperSetRackRandom(): initial rack: ?EHSRMI (best word: cHRISME)
+helperSetRackRandom(): replacing Joker with C
+mode partie libre
+[?] pour l'aide
+commande> a T
+Joueur 0: ETUDALN
+Joueur 1: HMIRCES
+commande> j ADULENT h3
+helperSetRackRandom(): initial rack: ?TALEXE (best word: EXALTErA)
+helperSetRackRandom(): replacing Joker with R
+helperSetRackRandom(): initial rack: ?QNNIKE (best word: INuK)
+helperSetRackRandom(): replacing Joker with U
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ C   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ D   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ E   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ F   -  -  C  -  -  -  -  -  -  -  -  -  -  -  -
+ G   -  -  H  -  -  -  -  -  -  -  -  -  -  -  -
+ H   -  -  A  D  U  L  E  N  T  -  -  -  -  -  -
+ I   -  -  R  -  -  -  -  -  -  -  -  -  -  -  -
+ J   -  -  I  -  -  -  -  -  -  -  -  -  -  -  -
+ K   -  -  S  -  -  -  -  -  -  -  -  -  -  -  -
+ L   -  -  M  -  -  -  -  -  -  -  -  -  -  -  -
+ M   -  -  E  -  -  -  -  -  -  -  -  -  -  -  -
+ N   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+commande> a T
+Joueur 0: XRAETEL
+Joueur 1: UEQNIKN
+commande> j EXULTERA 5f
+helperSetRackRandom(): initial rack: ?TESATD (best word: EDiTATES)
+helperSetRackRandom(): replacing Joker with I
+helperSetRackRandom(): initial rack: KN+?JERP (best word: JERKEr)
+helperSetRackRandom(): replacing Joker with R
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ C   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ D   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ E   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ F   -  -  C  -  E  -  -  -  -  -  -  -  -  -  -
+ G   -  -  H  -  X  -  -  -  -  -  -  -  -  -  -
+ H   -  -  A  D  U  L  E  N  T  -  -  -  -  -  -
+ I   -  -  R  -  L  -  -  -  -  -  -  -  -  -  -
+ J   -  -  I  -  T  -  -  -  -  -  -  -  -  -  -
+ K   -  -  S  -  E  -  -  -  -  -  -  -  -  -  -
+ L   -  -  M  -  R  -  -  -  -  -  -  -  -  -  -
+ M   -  -  E  -  A  -  -  -  -  -  -  -  -  -  -
+ N   -  -  -  N  I  Q  U  E  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+commande> a T
+Joueur 0: DITTSAE
+Joueur 1: KNPRRJE
+commande> j EDITATES F5
+helperSetRackRandom(): initial rack: ?RGSEMI (best word: EGERMaIS)
+helperSetRackRandom(): replacing Joker with A
+helperSetRackRandom(): initial rack: NP+?RVON (best word: PReVOT)
+helperSetRackRandom(): replacing Joker with E
+commande> a gm
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   @  -  -  +  -  -  -  @  -  -  -  +  -  -  @
+ B   -  #  -  -  -  *  -  -  -  *  -  -  -  #  -
+ C   -  -  #  -  -  -  +  -  +  -  -  -  #  -  -
+ D   +  -  -  #  -  -  -  +  -  -  -  #  -  -  +
+ E   -  -  -  -  #  -  -  -  -  -  #  -  -  -  -
+ F   -  *  C  -  E  D  I  T  A  T  E  S  -  *  -
+ G   -  -  H  -  X  -  +  -  +  -  -  -  +  -  -
+ H   @  -  A  D  U  L  E  N  T  -  -  +  -  -  @
+ I   -  -  R  -  L  -  +  -  +  -  -  -  +  -  -
+ J   -  *  I  -  T  *  -  J  -  *  -  -  -  *  -
+ K   -  -  S  -  E  -  -  E  -  -  #  -  -  -  -
+ L   +  -  M  #  R  -  -  R  -  -  -  #  -  -  +
+ M   -  -  E  -  A  -  +  K  +  -  -  -  #  -  -
+ N   -  #  -  N  I  Q  U  E  -  *  -  -  -  #  -
+ O   @  -  -  +  -  -  -  R  -  -  -  +  -  -  @
+commande> a T
+Joueur 0: ERIMASG
+Joueur 1: NPVRNOE
+commande> j EGERMAIS 11d
+helperSetRackRandom(): initial rack: ?NBIAID (best word: BlINDAI)
+helperSetRackRandom(): replacing Joker with L
+helperSetRackRandom(): initial rack: NN+?UGEI (best word: RUGINENt)
+helperSetRackRandom(): replacing Joker with T
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  P  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  R  -  -  -  -  -  -  -
+ C   -  -  -  -  -  -  -  E  -  -  -  -  -  -  -
+ D   -  -  -  -  -  -  -  V  -  -  E  -  -  -  -
+ E   -  -  -  -  -  -  -  O  -  -  G  -  -  -  -
+ F   -  -  C  -  E  D  I  T  A  T  E  S  -  -  -
+ G   -  -  H  -  X  -  -  -  -  -  R  -  -  -  -
+ H   -  -  A  D  U  L  E  N  T  -  M  -  -  -  -
+ I   -  -  R  -  L  -  -  -  -  -  A  -  -  -  -
+ J   -  -  I  -  T  -  -  J  -  -  I  -  -  -  -
+ K   -  -  S  -  E  -  -  E  -  -  S  -  -  -  -
+ L   -  -  M  -  R  -  -  R  -  -  -  -  -  -  -
+ M   -  -  E  -  A  -  -  K  -  -  -  -  -  -  -
+ N   -  -  -  N  I  Q  U  E  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  R  -  -  -  -  -  -  -
+commande> a S
+Joueur 0:  309
+Joueur 1:  248
+commande> a p
+Eliot 1.5
+
+Game type: Free game
+Player 0: Human
+Player 1: Computer
+
+    N |   RACK   |    SOLUTION     | REF | PTS | P | BONUS
+   ===|==========|=================|=====|=====|===|======
+    1 |  ETUDALN | ADULENT         |  H3 |  70 | 0 | *
+    2 |  HMIRCES | CHARISME        |  3F |  88 | 1 | *
+    3 |  XRAETEL | EXULTERA        |  5F |  84 | 0 | *
+    4 |  UEQNIKN | NIQUE           |  N4 |  46 | 1 |  
+    5 |  DITTSAE | EDITATES        |  F5 |  65 | 0 | *
+    6 | KN+PRRJE | JERKER          |  8J |  69 | 1 |  
+    7 |  ERIMASG | EGERMAIS        | 11D |  90 | 0 | *
+    8 | NP+VRNOE | PREVOT          |  8A |  45 | 1 |  
+
+   Total: 557
+
+Rack 0: LANBDII
+Rack 1: NN+ITEGU
+commande> q
+fin du mode partie libre
+commande> q

Index: test/freegame_joker_variant.input
===================================================================
RCS file: test/freegame_joker_variant.input
diff -N test/freegame_joker_variant.input
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ test/freegame_joker_variant.input   21 Feb 2009 16:56:32 -0000      1.1
@@ -0,0 +1,31 @@
+lj 1 1
+a T
+p
+p
+p
+p
+p
+a g
+a l
+a p
+j VExA 2J
+a g
+a T
+a l
+j ExO 15e
+a g
+a T
+a l
+p
+a p
+a l
+h p 5
+a g
+a p
+a l
+h p
+a g
+a p
+a l
+q
+q

Index: test/freegame_joker_variant.ref
===================================================================
RCS file: test/freegame_joker_variant.ref
diff -N test/freegame_joker_variant.ref
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ test/freegame_joker_variant.ref     21 Feb 2009 16:56:33 -0000      1.1
@@ -0,0 +1,233 @@
+Using seed: 16
+[?] pour l'aide
+commande> lj 1 1
+mode partie libre
+[?] pour l'aide
+commande> a T
+Joueur 0: ?AAUGOE
+Joueur 1: EP?TFTI
+commande> p
+commande> p
+commande> p
+commande> p
+commande> p
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ C   -  -  -  -  -  -  -  -  -  M  -  -  -  -  -
+ D   -  -  -  -  B  -  -  -  -  O  -  -  -  -  -
+ E   -  -  -  -  A  -  -  -  -  R  -  -  -  -  -
+ F   -  -  -  -  T  -  -  -  -  D  -  -  -  -  -
+ G   -  -  -  -  E  -  -  -  W  U  -  -  -  -  -
+ H   -  -  -  F  R  I  P  E  E  S  -  -  -  -  -
+ I   -  -  -  -  E  -  -  -  B  -  -  -  -  -  -
+ J   -  V  A  I  N  C  R  A  S  -  -  -  -  -  -
+ K   -  -  -  -  T  -  -  -  -  -  -  -  -  -  -
+ L   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ M   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ N   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+commande> a l
+ A B C D  E F G H I J K L M N O P Q R S T U V W X Y Z ?
+ 6 0 1 2 11 1 2 2 6 1 1 5 2 5 5 1 1 3 4 4 5 1 0 1 1 1 2
+commande> a p
+Eliot 1.5
+
+Game type: Free game
+Player 0: Human
+Player 1: Computer
+
+    N |   RACK   |    SOLUTION     | REF | PTS | P | BONUS
+   ===|==========|=================|=====|=====|===|======
+    1 |  ?AAUGOE | (PASS)          |  -  |   0 | 0 |
+    2 |  EP?TFTI | FrIPE           |  H4 |  26 | 1 |  
+    3 |  AAEGOU? | (PASS)          |  -  |   0 | 0 |
+    4 | TT+EB?AN | BATEReNT        |  5D |  86 | 1 | *
+    5 |  AAEGOU? | (PASS)          |  -  |   0 | 0 |
+    6 |  RCWV?AB | WeB             |  9G |  36 | 1 |  
+    7 |  AAEGOU? | (PASS)          |  -  |   0 | 0 |
+    8 | ACRV+SA? | VAiNCRAS        |  J2 |  91 | 1 | *
+    9 |  AAEGOU? | (PASS)          |  -  |   0 | 0 |
+   10 |  USOM?DM | MOrDUS          | 10C |  34 | 1 |  
+
+   Total: 273
+
+Rack 0: AAEGOU?
+Rack 1: M+EEOSQ?
+commande> j VExA 2J
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ C   -  -  -  -  -  -  -  -  -  M  -  -  -  -  -
+ D   -  -  -  -  B  -  -  -  -  O  -  -  -  -  -
+ E   -  -  -  -  A  -  -  M  O  R  E  S  Q  U  E
+ F   -  -  -  -  T  -  -  -  -  D  -  -  -  -  -
+ G   -  -  -  -  E  -  -  -  W  U  -  -  -  -  -
+ H   -  -  -  F  R  I  P  E  E  S  -  -  -  -  -
+ I   -  -  -  -  E  -  -  -  B  -  -  -  -  -  -
+ J   -  V  A  I  N  C  R  A  S  -  -  -  -  -  -
+ K   -  E  -  -  T  -  -  -  -  -  -  -  -  -  -
+ L   -  X  -  -  -  -  -  -  -  -  -  -  -  -  -
+ M   -  A  -  -  -  -  -  -  -  -  -  -  -  -  -
+ N   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+commande> a T
+Joueur 0: AGOU?HD
+Joueur 1: IRLF?DN
+commande> a l
+ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ?
+ 5 0 1 2 8 1 2 2 6 1 1 5 1 5 4 1 0 3 3 4 4 1 0 0 1 1 2
+commande> j ExO 15e
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ C   -  -  -  -  -  -  -  -  -  M  -  -  -  -  -
+ D   -  -  -  -  B  -  -  -  -  O  -  -  -  -  -
+ E   -  -  -  -  A  -  -  M  O  R  E  S  Q  U  E
+ F   -  -  -  -  T  -  -  -  -  D  -  -  -  -  x
+ G   -  -  -  -  E  -  -  -  W  U  -  -  -  -  O
+ H   -  -  -  F  R  I  P  E  E  S  -  -  -  -  -
+ I   -  -  -  -  E  -  -  -  B  -  -  -  -  -  -
+ J   -  V  A  I  N  C  R  A  S  -  -  -  -  -  -
+ K   -  E  -  -  T  -  -  -  -  -  -  -  -  -  -
+ L   -  X  -  -  -  -  -  -  -  -  -  -  -  -  -
+ M   -  A  -  -  -  -  -  -  -  -  -  -  -  -  -
+ N   L  I  N  D  O  R  -  -  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+commande> a T
+Joueur 0: ADGHUVC
+Joueur 1: FUI?ONL
+commande> a l
+ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ?
+ 5 0 1 1 8 1 2 2 5 1 1 4 1 4 2 1 0 2 3 4 4 1 0 0 1 1 1
+commande> p
+commande> a p
+Eliot 1.5
+
+Game type: Free game
+Player 0: Human
+Player 1: Computer
+
+    N |   RACK   |    SOLUTION     | REF | PTS | P | BONUS
+   ===|==========|=================|=====|=====|===|======
+    1 |  ?AAUGOE | (PASS)          |  -  |   0 | 0 |
+    2 |  EP?TFTI | FrIPE           |  H4 |  26 | 1 |  
+    3 |  AAEGOU? | (PASS)          |  -  |   0 | 0 |
+    4 | TT+EB?AN | BATEReNT        |  5D |  86 | 1 | *
+    5 |  AAEGOU? | (PASS)          |  -  |   0 | 0 |
+    6 |  RCWV?AB | WeB             |  9G |  36 | 1 |  
+    7 |  AAEGOU? | (PASS)          |  -  |   0 | 0 |
+    8 | ACRV+SA? | VAiNCRAS        |  J2 |  91 | 1 | *
+    9 |  AAEGOU? | (PASS)          |  -  |   0 | 0 |
+   10 |  USOM?DM | MOrDUS          | 10C |  34 | 1 |  
+   11 |  AAEGOU? | VExA            |  2J |   6 | 0 |  
+   12 | M+EEOSQ? | MORESQuE        |  E8 |  80 | 1 | *
+   13 | AGOU+?HD | ExO             | 15E |   2 | 0 |  
+   14 |  IRLF?DN | LINDoR          |  N1 |  50 | 1 |  
+   15 | ADGHU+VC | (PASS)          |  -  |   0 | 0 |
+   16 | F+UI?ONL | FLIQUONs        | 13B |  86 | 1 | *
+
+   Total: 497
+
+Rack 0: ACDGHUV
+Rack 1: EATLZL?
+commande> a l
+ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ?
+ 5 0 1 1 8 0 2 2 4 1 1 3 1 3 1 1 0 2 2 4 3 1 0 0 1 1 1
+commande> h p 5
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ C   -  -  -  -  -  -  -  -  -  M  -  -  -  -  -
+ D   -  -  -  -  B  -  -  -  -  O  -  -  -  -  -
+ E   -  -  -  -  A  -  -  -  -  R  -  -  -  -  -
+ F   -  -  -  -  T  -  -  -  -  D  -  -  -  -  -
+ G   -  -  -  -  E  -  -  -  W  U  -  -  -  -  -
+ H   -  -  -  F  R  I  P  E  E  S  -  -  -  -  -
+ I   -  -  -  -  E  -  -  -  B  -  -  -  -  -  -
+ J   -  V  A  I  N  C  R  A  S  -  -  -  -  -  -
+ K   -  E  -  -  T  -  -  -  -  -  -  -  -  -  -
+ L   -  X  -  -  -  -  -  -  -  -  -  -  -  -  -
+ M   -  A  -  -  -  -  -  -  -  -  -  -  -  -  -
+ N   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+commande> a p
+Eliot 1.5
+
+Game type: Free game
+Player 0: Human
+Player 1: Computer
+
+    N |   RACK   |    SOLUTION     | REF | PTS | P | BONUS
+   ===|==========|=================|=====|=====|===|======
+    1 |  ?AAUGOE | (PASS)          |  -  |   0 | 0 |
+    2 |  EP?TFTI | FrIPE           |  H4 |  26 | 1 |  
+    3 |  AAEGOU? | (PASS)          |  -  |   0 | 0 |
+    4 | TT+EB?AN | BATEReNT        |  5D |  86 | 1 | *
+    5 |  AAEGOU? | (PASS)          |  -  |   0 | 0 |
+    6 |  RCWV?AB | WeB             |  9G |  36 | 1 |  
+    7 |  AAEGOU? | (PASS)          |  -  |   0 | 0 |
+    8 | ACRV+SA? | VAiNCRAS        |  J2 |  91 | 1 | *
+    9 |  AAEGOU? | (PASS)          |  -  |   0 | 0 |
+   10 |  USOM?DM | MOrDUS          | 10C |  34 | 1 |  
+   11 |  AAEGOU? | VExA            |  2J |   6 | 0 |  
+
+   Total: 279
+
+Rack 0: AGOU+?HD
+Rack 1: M+EEOSQ?
+commande> a l
+ A B C D  E F G H I J K L M N O P Q R S T U V W X Y Z ?
+ 5 0 1 2 10 1 2 2 6 1 1 5 2 5 5 1 1 3 4 4 5 1 0 0 1 1 2
+commande> h p
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ C   -  -  -  -  -  -  -  -  -  M  -  -  -  -  -
+ D   -  -  -  -  B  -  -  -  -  O  -  -  -  -  -
+ E   -  -  -  -  A  -  -  -  -  R  -  -  -  -  -
+ F   -  -  -  -  T  -  -  -  -  D  -  -  -  -  -
+ G   -  -  -  -  E  -  -  -  W  U  -  -  -  -  -
+ H   -  -  -  F  R  I  P  E  E  S  -  -  -  -  -
+ I   -  -  -  -  E  -  -  -  B  -  -  -  -  -  -
+ J   -  V  A  I  N  C  R  A  S  -  -  -  -  -  -
+ K   -  -  -  -  T  -  -  -  -  -  -  -  -  -  -
+ L   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ M   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ N   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+commande> a p
+Eliot 1.5
+
+Game type: Free game
+Player 0: Human
+Player 1: Computer
+
+    N |   RACK   |    SOLUTION     | REF | PTS | P | BONUS
+   ===|==========|=================|=====|=====|===|======
+    1 |  ?AAUGOE | (PASS)          |  -  |   0 | 0 |
+    2 |  EP?TFTI | FrIPE           |  H4 |  26 | 1 |  
+    3 |  AAEGOU? | (PASS)          |  -  |   0 | 0 |
+    4 | TT+EB?AN | BATEReNT        |  5D |  86 | 1 | *
+    5 |  AAEGOU? | (PASS)          |  -  |   0 | 0 |
+    6 |  RCWV?AB | WeB             |  9G |  36 | 1 |  
+    7 |  AAEGOU? | (PASS)          |  -  |   0 | 0 |
+    8 | ACRV+SA? | VAiNCRAS        |  J2 |  91 | 1 | *
+    9 |  AAEGOU? | (PASS)          |  -  |   0 | 0 |
+   10 |  USOM?DM | MOrDUS          | 10C |  34 | 1 |  
+
+   Total: 273
+
+Rack 0: AAEGOU?
+Rack 1: M+EEOSQ?
+commande> a l
+ A B C D  E F G H I J K L M N O P Q R S T U V W X Y Z ?
+ 6 0 1 2 11 1 2 2 6 1 1 5 2 5 5 1 1 3 4 4 5 1 0 1 1 1 2
+commande> q
+fin du mode partie libre
+commande> q

Index: test/training_explosive_variant.input
===================================================================
RCS file: test/training_explosive_variant.input
diff -N test/training_explosive_variant.input
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ test/training_explosive_variant.input       21 Feb 2009 16:56:33 -0000      
1.1
@@ -0,0 +1,28 @@
+ee
+*
+a t
+*
+a t
+*
+a t
+*
+a t
+j BALTE h4
+a g
++
+a t
+t ABF??E
++
+a t
+j BI 4h
+a g
++
+a t
+t BAF?E
++
+a t
+t BAFE
++
+a t
+q
+q

Index: test/training_explosive_variant.ref
===================================================================
RCS file: test/training_explosive_variant.ref
diff -N test/training_explosive_variant.ref
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ test/training_explosive_variant.ref 21 Feb 2009 16:56:33 -0000      1.1
@@ -0,0 +1,86 @@
+Using seed: 13
+[?] pour l'aide
+commande> ee
+mode entraînement
+[?] pour l'aide
+commande> *
+helperSetRackRandom(): initial rack: ?OGUCNF (best word: ChNOUF)
+helperSetRackRandom(): replacing Joker with H
+commande> a t
+FNGCUHO
+commande> *
+helperSetRackRandom(): initial rack: ?ECTUST (best word: CUTTErS)
+helperSetRackRandom(): replacing Joker with R
+commande> a t
+RTUTCSE
+commande> *
+helperSetRackRandom(): initial rack: ?ICOINI (best word: NOIrCI)
+helperSetRackRandom(): replacing Joker with R
+commande> a t
+IIINCOR
+commande> *
+helperSetRackRandom(): initial rack: ?BLEAAE (best word: ABLAtEE)
+helperSetRackRandom(): replacing Joker with T
+commande> a t
+ATBEAEL
+commande> j BALTE h4
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ C   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ D   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ E   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ F   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ G   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ H   -  -  -  B  A  L  T  E  -  -  -  -  -  -  -
+ I   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ J   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ K   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ L   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ M   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ N   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+commande> +
+helperSetRackRandom(): initial rack: AE+?SNED (best word: ENnEADES)
+helperSetRackRandom(): replacing Joker with N
+commande> a t
+AEDESNN
+commande> t ABF??E
+commande> +
+commande> a t
+ABF??EI
+commande> j BI 4h
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ C   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ D   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ E   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ F   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ G   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ H   -  -  -  B  A  L  T  E  -  -  -  -  -  -  -
+ I   -  -  -  I  -  -  -  -  -  -  -  -  -  -  -
+ J   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ K   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ L   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ M   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ N   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+commande> +
+commande> a t
+ABEF??L
+commande> t BAF?E
+commande> +
+commande> a t
+BAF?EEU
+commande> t BAFE
+commande> +
+helperSetRackRandom(): initial rack: BAFE+?AD (best word: BLAFArDE)
+helperSetRackRandom(): replacing Joker with R
+commande> a t
+BAFEDAR
+commande> q
+fin du mode entraînement
+commande> q

Index: test/training_joker_variant.input
===================================================================
RCS file: test/training_joker_variant.input
diff -N test/training_joker_variant.input
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ test/training_joker_variant.input   21 Feb 2009 16:56:33 -0000      1.1
@@ -0,0 +1,45 @@
+ej
+*
+a t
+*
+a t
+*
+a t
+j PAVEuSE h2
+a g
++
+a t
+t WHISKYS
+r
+a r
+n 1
+a g
++
+a s
+a t
+j kA 3G
+a g
+t ??ABCDE
+a t
++
+a t
+j kAS j3
+a g
+a l
+a p
+h p
+a g
+a t
+a l
+h p
+a g
+a l
+h r
+*
+a t
+*
+a t
+*
+a t
+q
+q

Index: test/training_joker_variant.ref
===================================================================
RCS file: test/training_joker_variant.ref
diff -N test/training_joker_variant.ref
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ test/training_joker_variant.ref     21 Feb 2009 16:56:33 -0000      1.1
@@ -0,0 +1,190 @@
+Using seed: 12
+[?] pour l'aide
+commande> ej
+mode entraînement
+[?] pour l'aide
+commande> *
+commande> a t
+ICDSPT?
+commande> *
+commande> a t
+DAILE?O
+commande> *
+commande> a t
+E?ESAVP
+commande> j PAVEuSE h2
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ C   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ D   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ E   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ F   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ G   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ H   -  P  A  V  E  U  S  E  -  -  -  -  -  -  -
+ I   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ J   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ K   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ L   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ M   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ N   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+commande> +
+commande> a t
+IAPV?IG
+commande> t WHISKYS
+commande> r
+commande> a r
+  1: WHISKEYS        * 126 5C
+  2: WHISKYS         * 114 9B
+  3: WHISKYS         * 111 9E
+  4: WHISKEYS        *  92 8C
+  5: WHISKEY            74 5C
+  6: WHISKY             60 9E
+  7: WHISKYS            51 7B
+  8: WHISKYS            48 7E
+  9: HUSKYS             47 6G
+ 10: WHISKY             47 7E
+commande> n 1
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ C   -  -  -  -  W  -  -  -  -  -  -  -  -  -  -
+ D   -  -  -  -  H  -  -  -  -  -  -  -  -  -  -
+ E   -  -  -  -  I  -  -  -  -  -  -  -  -  -  -
+ F   -  -  -  -  S  -  -  -  -  -  -  -  -  -  -
+ G   -  -  -  -  K  -  -  -  -  -  -  -  -  -  -
+ H   -  P  A  V  E  U  S  E  -  -  -  -  -  -  -
+ I   -  -  -  -  Y  -  -  -  -  -  -  -  -  -  -
+ J   -  -  -  -  S  -  -  -  -  -  -  -  -  -  -
+ K   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ L   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ M   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ N   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+commande> +
+commande> a s
+206
+commande> a t
+NII?NAX
+commande> j kA 3G
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ C   -  -  -  -  W  -  -  -  -  -  -  -  -  -  -
+ D   -  -  -  -  H  -  -  -  -  -  -  -  -  -  -
+ E   -  -  -  -  I  -  -  -  -  -  -  -  -  -  -
+ F   -  -  -  -  S  -  -  -  -  -  -  -  -  -  -
+ G   -  -  k  -  K  -  -  -  -  -  -  -  -  -  -
+ H   -  P  A  V  E  U  S  E  -  -  -  -  -  -  -
+ I   -  -  -  -  Y  -  -  -  -  -  -  -  -  -  -
+ J   -  -  -  -  S  -  -  -  -  -  -  -  -  -  -
+ K   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ L   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ M   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ N   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+commande> t ??ABCDE
+The bag does not contain all these letters
+commande> a t
+AIINNX
+commande> +
+commande> a t
+AIINNX?
+commande> j kAS j3
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ C   -  -  -  -  W  -  -  -  -  -  -  -  -  -  -
+ D   -  -  -  -  H  -  -  -  -  -  -  -  -  -  -
+ E   -  -  -  -  I  -  -  -  -  -  -  -  -  -  -
+ F   -  -  -  -  S  -  -  -  -  -  -  -  -  -  -
+ G   -  -  k  -  K  -  -  -  -  -  -  -  -  -  -
+ H   -  P  A  V  E  U  S  E  -  -  -  -  -  -  -
+ I   -  -  -  -  Y  -  -  -  -  -  -  -  -  -  -
+ J   -  -  k  A  S  -  -  -  -  -  -  -  -  -  -
+ K   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ L   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ M   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ N   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+commande> a l
+ A B C D  E F G H I J K L M N O P Q R S T U V W X Y Z ?
+ 7 2 2 3 13 2 2 1 7 1 0 5 3 6 6 1 1 6 3 6 5 1 0 1 0 1 0
+commande> a p
+Eliot 1.5
+
+Game type: Training
+Player 0: Human
+
+    N |   RACK   |    SOLUTION     | REF | PTS | P | BONUS
+   ===|==========|=================|=====|=====|===|======
+    1 |  E?ESAVP | PAVEuSE         |  H2 |  80 | 0 | *
+    2 |  WHISKYS | WHISKEYS        |  5C | 126 | 0 | *
+    3 |  NII?NAX | kA              |  3G |   1 | 0 |  
+    4 | AIINNX+? | kAS             |  J3 |   2 | 0 |  
+
+   Total: 209
+
+Rack 0: IINNX
+commande> h p
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ C   -  -  -  -  W  -  -  -  -  -  -  -  -  -  -
+ D   -  -  -  -  H  -  -  -  -  -  -  -  -  -  -
+ E   -  -  -  -  I  -  -  -  -  -  -  -  -  -  -
+ F   -  -  -  -  S  -  -  -  -  -  -  -  -  -  -
+ G   -  -  k  -  K  -  -  -  -  -  -  -  -  -  -
+ H   -  P  A  V  E  U  S  E  -  -  -  -  -  -  -
+ I   -  -  -  -  Y  -  -  -  -  -  -  -  -  -  -
+ J   -  -  -  -  S  -  -  -  -  -  -  -  -  -  -
+ K   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ L   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ M   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ N   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+commande> a t
+AIINNX
+commande> a l
+ A B C D  E F G H I J K L M N O P Q R S T U V W X Y Z ?
+ 8 2 2 3 13 2 2 1 7 1 0 5 3 6 6 1 1 6 3 6 5 1 0 1 0 1 1
+commande> h p
+commande> a g
+     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ A   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ B   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ C   -  -  -  -  W  -  -  -  -  -  -  -  -  -  -
+ D   -  -  -  -  H  -  -  -  -  -  -  -  -  -  -
+ E   -  -  -  -  I  -  -  -  -  -  -  -  -  -  -
+ F   -  -  -  -  S  -  -  -  -  -  -  -  -  -  -
+ G   -  -  -  -  K  -  -  -  -  -  -  -  -  -  -
+ H   -  P  A  V  E  U  S  E  -  -  -  -  -  -  -
+ I   -  -  -  -  Y  -  -  -  -  -  -  -  -  -  -
+ J   -  -  -  -  S  -  -  -  -  -  -  -  -  -  -
+ K   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ L   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ M   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ N   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+ O   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
+commande> a l
+ A B C D  E F G H I J K L M N O P Q R S T U V W X Y Z ?
+ 8 2 2 3 13 2 2 1 7 1 0 5 3 6 6 1 1 6 3 6 5 1 0 1 0 1 2
+commande> h r
+commande> *
+commande> a t
+AE?IUGB
+commande> *
+commande> a t
+DINO?EB
+commande> *
+commande> a t
+REX?GOE
+commande> q
+fin du mode entraînement
+commande> q




reply via email to

[Prev in Thread] Current Thread [Next in Thread]