eliot-dev
[Top][All Lists]
Advanced

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

[Eliot-dev] eliot/game pldrack.h pldrack.cpp


From: eliot-dev
Subject: [Eliot-dev] eliot/game pldrack.h pldrack.cpp
Date: Sun, 01 Jan 2006 19:47:26 +0000

CVSROOT:        /cvsroot/eliot
Module name:    eliot
Branch:         
Changes by:     Antoine Fraboulet <address@hidden>      06/01/01 19:47:26

Modified files:
        game           : pldrack.h pldrack.cpp 

Log message:
        - pldrack.h
        add comments and emacs mode
        add modes for toString
        
        - pldrack.cpp
        add modes for toString
        add bool "reject", should be used later to notify a reject during game
        add setRack(string)

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/eliot/eliot/game/pldrack.h.diff?tr1=1.10&tr2=1.11&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/eliot/eliot/game/pldrack.cpp.diff?tr1=1.7&tr2=1.8&r1=text&r2=text

Patches:
Index: eliot/game/pldrack.cpp
diff -u eliot/game/pldrack.cpp:1.7 eliot/game/pldrack.cpp:1.8
--- eliot/game/pldrack.cpp:1.7  Sat Nov  5 15:48:59 2005
+++ eliot/game/pldrack.cpp      Sun Jan  1 19:47:26 2006
@@ -18,12 +18,24 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  *****************************************************************************/
 
+/**
+ *  \file   pldrack.cpp
+ *  \brief  Improved Rack class with old and new tiles
+ *  \author Antoine Fraboulet & Olivier Teuliere
+ *  \date   2002 - 2005
+ */
+
 #include "rack.h"
 #include "pldrack.h"
 
 #include "debug.h"
 
 
+PlayedRack::PlayedRack()
+{
+  reject = false;
+}
+
 void PlayedRack::addOld(const Tile &t)
 {
     m_oldTiles.push_back(t);
@@ -135,8 +147,43 @@
     }
 }
 
+int PlayedRack::setManual(const string& iLetters)
+{
+    unsigned int i;
+    reset();
+
+    if (iLetters.size() == 0)
+    {
+        return 0; /* empty is ok */
+    }
+
+    for (i = 0; i < iLetters.size() && iLetters[i] != '+'; i++)
+    {
+        Tile tile(iLetters[i]);
+        if (tile.isEmpty())
+        {
+            return 1; /* */ 
+        }
+        addOld(tile);
+    }
+
+    if (i < iLetters.size() && iLetters[i] == '+')
+    {
+        for (i++; i < iLetters.size(); i++)
+        {
+            Tile tile(iLetters[i]);
+            if (tile.isEmpty())
+            {
+                return 1; /* */
+            }
+            addNew(tile);
+        }
+    }
 
-bool PlayedRack::checkRack(int iMin) const
+    return 0;
+}
+
+bool PlayedRack::checkRack(int cMin, int vMin) const
 {
     vector<Tile>::const_iterator it;
     int v = 0;
@@ -152,7 +199,7 @@
         if (it->isVowel()) v++;
         if (it->isConsonant()) c++;
     }
-    return (v >= iMin) && (c >= iMin);
+    return (v >= vMin) && (c >= cMin);
 }
 
 
@@ -163,19 +210,41 @@
 }
 
 
-string PlayedRack::toString(bool iShowExtraSigns) const
+string PlayedRack::toString(display_mode mode) const
 {
+    string s("");
     vector<Tile>::const_iterator it;
-    string s;
+  
+    if (nOld() > 0)
+    {
+       for (it = m_oldTiles.begin(); it != m_oldTiles.end(); it++)
+           s += it->toChar();
+    }
 
-    for (it = m_oldTiles.begin(); it != m_oldTiles.end(); it++)
-        s += it->toChar();
+    if (mode > RACK_SIMPLE && nOld() > 0 && nNew() > 0)
+    {
+       s += "+";
+    }
 
-    if (iShowExtraSigns && nOld() > 0 && nNew() > 0)
-        s += "+";
+    if (mode > RACK_EXTRA  && reject)
+    {
+       s += "-";
+       // nouveau tirage : rejet
+       // pas après un scrabble
+    }
 
-    for (it = m_newTiles.begin(); it != m_newTiles.end(); it++)
-        s += it->toChar();
+    if (nNew() > 0)
+    {
+       for (it = m_newTiles.begin(); it != m_newTiles.end(); it++)
+           s += it->toChar();
+    }
 
     return s;
 }
+
+/// Local Variables:
+/// mode: c++
+/// mode: hs-minor
+/// c-basic-offset: 4
+/// indent-tabs-mode: nil
+/// End:
Index: eliot/game/pldrack.h
diff -u eliot/game/pldrack.h:1.10 eliot/game/pldrack.h:1.11
--- eliot/game/pldrack.h:1.10   Sat Nov  5 15:48:59 2005
+++ eliot/game/pldrack.h        Sun Jan  1 19:47:26 2006
@@ -18,6 +18,13 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  *****************************************************************************/
 
+/**
+ *  \file   pldrack.h
+ *  \brief  Improved Rack class with old and new tiles
+ *  \author Antoine Fraboulet & Olivier Teuliere
+ *  \date   2002 - 2005
+ */
+
 #ifndef _PLAYEDRACK_H_
 #define _PLAYEDRACK_H_
 
@@ -39,7 +46,7 @@
 class PlayedRack
 {
 public:
-    PlayedRack() {}
+    PlayedRack();
     virtual ~PlayedRack() {}
 
     void reset();
@@ -51,6 +58,7 @@
 
     void setOld(const Rack &iRack);
     void setNew(const Rack &iRack);
+    int  setManual(const string& iLetters);
 
     int nTiles() const  { return nNew() + nOld(); }
     int nNew() const    { return m_newTiles.size(); }
@@ -62,14 +70,28 @@
     void getOldTiles(vector<Tile> &oTiles) const;
     void getAllTiles(vector<Tile> &oTiles) const;
 
-    bool checkRack(int iMin) const;
+    bool checkRack(int cMin, int vMin) const;
 
     void operator=(const PlayedRack &iOther);
-    string toString(bool iShowExtraSigns = true) const;
+
+    typedef enum {
+      RACK_SIMPLE,
+      RACK_EXTRA,
+      RACK_DEBUG
+    } display_mode;
+    string toString(display_mode iShowExtraSigns = RACK_EXTRA) const;
 
 private:
+    bool reject;
     vector<Tile> m_oldTiles;
     vector<Tile> m_newTiles;
 };
 
 #endif
+
+/// Local Variables:
+/// mode: c++
+/// mode: hs-minor
+/// c-basic-offset: 4
+/// indent-tabs-mode: nil
+/// End:




reply via email to

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