diff options
Diffstat (limited to 'tableau.h')
-rw-r--r-- | tableau.h | 122 |
1 files changed, 64 insertions, 58 deletions
@@ -17,90 +17,96 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * $Id: tableau.h 87 2007-06-22 22:37:36Z tom $ + * $Id: tableau.h 95 2007-09-21 23:01:10Z tom $ */ #ifndef VDR_SPIDER_TABLEAU_H #define VDR_SPIDER_TABLEAU_H #include "spider.h" -class Deck; -class Card; -class Pack; -class Pile; -typedef Array<Pile*> Piles; -class FinalHeap; -typedef Array<FinalHeap*> Finals; -class History; -/** --- class Tableau ------------------------------------------------------ **/ - -class Tableau +namespace Spider { -private: - int dealCount; - int cardsToOpen; - Deck& deck; + class Deck; + class Card; + class Pack; + class Pile; + typedef Array<Pile*> Piles; + class FinalHeap; + typedef Array<FinalHeap*> Finals; + class History; + + + //--- class Spider::Tableau -------------------------------------------------- + + class Tableau + { + private: + int dealCount; + int cardsToOpen; + Deck& deck; + + public: + Pack* pack; + Piles piles; + Finals finals; + Pile* selected; + bool changed; + History* history; -public: - Pack* pack; - Piles piles; - Finals finals; - Pile* selected; - bool changed; - History* history; + /** Constructor */ + Tableau(Deck& deck, int pileCount, int finalCount, int deals); - /** Constructor */ - Tableau(Deck& deck, int pileCount, int finalCount, int deals); + /** Destructor */ + ~Tableau(); - /** Destructor */ - ~Tableau(); + /** Current count of deals */ + int deals(); - /** Current count of deals */ - int deals(); + /** Current count of points */ + int points(); - /** Current count of points */ - int points(); + /** Is no pile empty? */ + bool noPileEmpty(); - /** Is no pile empty? */ - bool noPileEmpty(); + /** Matches all cards in all piles? */ + bool allCardsMatches(); - /** Matches all cards in all piles? */ - bool allCardsMatches(); + /** Is the game over? */ + bool gameOver(); - /** Is the game over? */ - bool gameOver(); + /** Select p-th pile by selecting up to max matching cards on its end */ + void select(int p, int max = 0); - /** Select p-th pile by selecting up to max matching cards on its end */ - void select(int p, int max = 0); + /** Unselect the selected pile */ + void unselect(); - /** Unselect the selected pile */ - void unselect(); + /** Move cards from selected pile to p-th pile */ + void move(int p); - /** Move cards from selected pile to p-th pile */ - void move(int p); + /** Search move from p-th pile to the next left pile, return destination */ + int autoMoveLeft(int p); - /** Search move from p-th pile to the next left pile, return destination */ - int autoMoveLeft(int p); + /** Search move from p-th pile to the next right pile, return destination */ + int autoMoveRight(int p); - /** Search move from p-th pile to the next right pile, return destination */ - int autoMoveRight(int p); + /** Search best move from p-th pile, return destination */ + int autoMove(int p); - /** Search best move from p-th pile, return destination */ - int autoMove(int p); + /** Deal one row */ + void deal(); - /** Deal one row */ - void deal(); + /** Remove one suit of cards from selected pile to the final heaps */ + void remove(); - /** Remove one suit of cards from selected pile to the final heaps */ - void remove(); + /** Go one move backward in the history */ + void backward(); - /** Go one move backward in the history */ - void backward(); + /** Go one move forward in the history */ + void forward(); + }; - /** Go one move forward in the history */ - void forward(); -}; +} // namespace Spider #endif // VDR_SPIDER_TABLEAU_H |