eliot-dev
[Top][All Lists]
Advanced

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

[Eliot-dev] Changes to eliot/game/board_search.cpp


From: eliot-dev
Subject: [Eliot-dev] Changes to eliot/game/board_search.cpp
Date: Sat, 05 Nov 2005 08:57:01 -0500

Index: eliot/game/board_search.cpp
diff -u eliot/game/board_search.cpp:1.6 eliot/game/board_search.cpp:1.7
--- eliot/game/board_search.cpp:1.6     Sat Nov  5 11:01:58 2005
+++ eliot/game/board_search.cpp Sat Nov  5 13:56:59 2005
@@ -48,8 +48,8 @@
 
     len = iWord.getWordLen();
 
-    row = iWord.getRow();
-    col = iWord.getCol();
+    row = iWord.getCoord().getRow();
+    col = iWord.getCoord().getCol();
 
     for (i = 0; i < len; i++)
     {
@@ -78,16 +78,17 @@
     iWord.setBonus(fromrack == 7);
     iWord.setPoints(pts);
 
-    if (iWord.getDir() == Coord::VERTICAL)
+    // XXX: ugly!
+    if (iWord.getCoord().getDir() == Coord::VERTICAL)
     {
-        iWord.setRow(col);
-        iWord.setCol(row);
+        // Exchange the coordinates temporarily
+        iWord.accessCoord().swap();
     }
     iResults.add(iWord);
-    if (iWord.getDir() == Coord::VERTICAL)
+    if (iWord.getCoord().getDir() == Coord::VERTICAL)
     {
-        iWord.setRow(row);
-        iWord.setCol(col);
+        // Restore the coordinates
+        iWord.accessCoord().swap();
     }
 }
 
@@ -98,18 +99,18 @@
                         Matrix<Cross> &iCrossMx,
                         Matrix<int> &iPointsMx,
                         Matrix<bool> &iJokerMx,
-                        Rack &iRack, Round &partialword,
+                        Rack &iRack, Round &ioPartialWord,
                         Results &iResults, unsigned int iNode,
-                        int iRow, int iCol, int anchor)
+                        int iRow, int iCol, int iAnchor)
 {
     Tile l;
     unsigned int succ;
 
     if (iTilesMx[iRow][iCol].isEmpty())
     {
-        if (Dic_word(iDic, iNode) && iCol > anchor)
+        if (Dic_word(iDic, iNode) && iCol > iAnchor)
             BoardSearchEvalMove(iBoard, iTilesMx, iPointsMx, iJokerMx,
-                                iResults, partialword);
+                                iResults, ioPartialWord);
 
         for (succ = Dic_succ(iDic, iNode); succ; succ = Dic_next(iDic, succ))
         {
@@ -119,21 +120,21 @@
                 if (iRack.in(l))
                 {
                     iRack.remove(l);
-                    partialword.addRightFromRack(l, 0);
+                    ioPartialWord.addRightFromRack(l, 0);
                     ExtendRight(iBoard, iDic, iTilesMx, iCrossMx, iPointsMx,
-                                iJokerMx, iRack, partialword, iResults,
-                                succ, iRow, iCol + 1, anchor);
-                    partialword.removeRightToRack(l, 0);
+                                iJokerMx, iRack, ioPartialWord, iResults,
+                                succ, iRow, iCol + 1, iAnchor);
+                    ioPartialWord.removeRightToRack(l, 0);
                     iRack.add(l);
                 }
                 if (iRack.in(Tile::Joker()))
                 {
                     iRack.remove(Tile::Joker());
-                    partialword.addRightFromRack(l, 1);
+                    ioPartialWord.addRightFromRack(l, 1);
                     ExtendRight(iBoard, iDic, iTilesMx, iCrossMx, iPointsMx,
-                                iJokerMx, iRack, partialword, iResults,
-                                succ, iRow, iCol + 1, anchor);
-                    partialword.removeRightToRack(l, 1);
+                                iJokerMx, iRack, ioPartialWord, iResults,
+                                succ, iRow, iCol + 1, iAnchor);
+                    ioPartialWord.removeRightToRack(l, 1);
                     iRack.add(Tile::Joker());
                 }
             }
@@ -146,11 +147,11 @@
         {
             if (Tile('A' - 1 + Dic_chr(iDic, succ)) == l)
             {
-                partialword.addRightFromBoard(l);
+                ioPartialWord.addRightFromBoard(l);
                 ExtendRight(iBoard, iDic, iTilesMx, iCrossMx, iPointsMx,
-                            iJokerMx, iRack, partialword,
-                            iResults, succ, iRow, iCol + 1, anchor);
-                partialword.removeRightToBoard(l);
+                            iJokerMx, iRack, ioPartialWord,
+                            iResults, succ, iRow, iCol + 1, iAnchor);
+                ioPartialWord.removeRightToBoard(l);
             }
         }
     }
@@ -163,16 +164,17 @@
                      Matrix<Cross> &iCrossMx,
                      Matrix<int> &iPointsMx,
                      Matrix<bool> &iJokerMx,
-                     Rack &iRack, Round &iPartialWord,
-                     Results &iResults, int n, int iRow, int anchor, int limit)
+                     Rack &iRack, Round &ioPartialWord,
+                     Results &iResults, int n, int iRow,
+                     int iAnchor, int iLimit)
 {
     Tile l;
     int succ;
 
     ExtendRight(iBoard, iDic, iTilesMx, iCrossMx, iPointsMx, iJokerMx, iRack,
-                iPartialWord, iResults, n, iRow, anchor, anchor);
+                ioPartialWord, iResults, n, iRow, iAnchor, iAnchor);
 
-    if (limit > 0)
+    if (iLimit > 0)
     {
         for (succ = Dic_succ(iDic, n); succ; succ = Dic_next(iDic, succ))
         {
@@ -180,25 +182,25 @@
             if (iRack.in(l))
             {
                 iRack.remove(l);
-                iPartialWord.addRightFromRack(l, 0);
-                iPartialWord.setCol(iPartialWord.getCol() - 1);
+                ioPartialWord.addRightFromRack(l, 0);
+                
ioPartialWord.accessCoord().setCol(ioPartialWord.getCoord().getCol() - 1);
                 LeftPart(iBoard, iDic, iTilesMx, iCrossMx, iPointsMx,
-                         iJokerMx, iRack, iPartialWord, iResults,
-                         succ, iRow, anchor, limit - 1);
-                iPartialWord.setCol(iPartialWord.getCol() + 1);
-                iPartialWord.removeRightToRack(l, 0);
+                         iJokerMx, iRack, ioPartialWord, iResults,
+                         succ, iRow, iAnchor, iLimit - 1);
+                
ioPartialWord.accessCoord().setCol(ioPartialWord.getCoord().getCol() + 1);
+                ioPartialWord.removeRightToRack(l, 0);
                 iRack.add(l);
             }
             if (iRack.in(Tile::Joker()))
             {
                 iRack.remove(Tile::Joker());
-                iPartialWord.addRightFromRack(l, 1);
-                iPartialWord.setCol(iPartialWord.getCol() - 1);
+                ioPartialWord.addRightFromRack(l, 1);
+                
ioPartialWord.accessCoord().setCol(ioPartialWord.getCoord().getCol() - 1);
                 LeftPart(iBoard, iDic, iTilesMx, iCrossMx, iPointsMx,
-                         iJokerMx, iRack, iPartialWord, iResults,
-                         succ, iRow, anchor, limit - 1);
-                iPartialWord.setCol(iPartialWord.getCol() + 1);
-                iPartialWord.removeRightToRack(l, 1);
+                         iJokerMx, iRack, ioPartialWord, iResults,
+                         succ, iRow, iAnchor, iLimit - 1);
+                
ioPartialWord.accessCoord().setCol(ioPartialWord.getCoord().getCol() + 1);
+                ioPartialWord.removeRightToRack(l, 1);
                 iRack.add(Tile::Joker());
             }
         }
@@ -220,8 +222,8 @@
     for (row = 1; row <= BOARD_DIM; row++)
     {
         partialword.init();
-        partialword.setDir(iDir);
-        partialword.setRow(row);
+        partialword.accessCoord().setDir(iDir);
+        partialword.accessCoord().setRow(row);
         lastanchor = 0;
         for (col = 1; col <= BOARD_DIM; col++)
         {
@@ -233,14 +235,14 @@
             {
                 if (!iTilesMx[row][col - 1].isEmpty())
                 {
-                    partialword.setCol(lastanchor + 1);
+                    partialword.accessCoord().setCol(lastanchor + 1);
                     ExtendRight(iBoard, iDic, iTilesMx, iCrossMx, iPointsMx,
                                 iJokerMx, iRack, partialword, iResults,
                                 Dic_root(iDic), row, lastanchor + 1, col);
                 }
                 else
                 {
-                    partialword.setCol(col);
+                    partialword.accessCoord().setCol(col);
                     LeftPart(iBoard, iDic, iTilesMx, iCrossMx, iPointsMx,
                              iJokerMx, iRack, partialword, iResults,
                              Dic_root(iDic), row, col, col -
@@ -275,15 +277,15 @@
                         const Rack &iRack,
                         Results &oResults)
 {
-    Round partialword;
     int row = 8, col = 8;
 
     // Create a copy of the rack to avoid modifying the given one
     Rack copyRack = iRack;
 
-    partialword.setRow(row);
-    partialword.setCol(col);
-    partialword.setDir(Coord::HORIZONTAL);
+    Round partialword;
+    partialword.accessCoord().setRow(row);
+    partialword.accessCoord().setCol(col);
+    partialword.accessCoord().setDir(Coord::HORIZONTAL);
     LeftPart(*this, iDic, m_tilesRow, m_crossRow,
              m_pointRow, m_jokerRow,
              copyRack, partialword, oResults, Dic_root(iDic), row, col,




reply via email to

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