Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

FCTalonState.h

Go to the documentation of this file.
00001 #ifndef MMANN_FCTALONSTATE_H
00002 #define MMANN_FCTALONSTATE_H
00003 
00011 
00012 #include "FCState.h"
00013 #include "FCEnums.h"
00014 #include "CompareAlgorithms.h"
00015 #include "HashAlgorithms.h"
00016 #include "AGenericTree.h"
00017 #include "FCInternalHash.h"
00018 
00019 class MD5TalonStateDataHashAlgorithm;
00020 
00022 #define FC_TALON_PARAM_LENGTH                           0
00023 
00024 #define FC_TALON_PARAM_POSITION                         1
00025 
00026 #define FC_TALON_PARAM_KLONDIKE_STACK_POSITION          0
00027 
00028 #define FC_TALON_PARAM_KLONDIKE_QUEUE_POSITION          1
00029 
00030 #define FC_TALON_PARAM_KLONDIKE_NUMBER_OF_REDEALS_LEFT  2
00031 
00032 #define FC_TALON_NUMBER_OF_TALON_PARAMETERS             3
00033 
00035 class FCSTalonStateData
00036 {
00037 public:
00039     FCSTalonStateData();
00040 
00042     virtual ~FCSTalonStateData();
00043 
00044     friend class MD5TalonStateDataHashAlgorithm;
00045 
00049     virtual void Copy(FCSTalonStateData* Data);
00050 
00054     virtual int Compare(const FCSTalonStateData* TalonData);
00055 
00059     void SetKlondikeNumberOfRedealsLeft(char RedealsLeft);
00060 
00064     char GetKlondikeNumberOfRedealsLeft();
00065 
00069     void SetTalonPosition(char Position);
00070 
00074     char GetTalonPosition();
00075     
00079     void SetTalonLength(char Length);
00080 
00084     char GetTalonLength();
00085 
00089     void SetKlondikeTalonLength(char Length);
00090 
00094     char GetKlondikeTalonLength();
00095 
00099     void SetKlondikeTalonStackPosition(char Position);
00100 
00104     char GetKlondikeTalonStackPosition();
00105 
00109     void SetKlondikeTalonQueuePosition(char Position);
00110 
00114     char GetKlondikeTalonQueuePosition();
00115 
00117     void KlondikeTalonRedealBare();
00118 
00120     virtual void KlondikeTalonQueueToStack() = 0;
00121 
00125     virtual FCSCard* GetKlondikeTalonTopCard() = 0;
00126 
00131     virtual FCSCard* GetTalon(int Position) = 0;
00132 
00133 protected:
00135     char m_TalonParams[FC_TALON_NUMBER_OF_TALON_PARAMETERS];
00136 
00138     char m_KlondikeTalonLength;
00139 
00140 };
00141 
00142 
00144 #define TALON_PARAM_HASH_VALUE                          72211
00145 
00150 class MD5TalonStateDataHashAlgorithm : public MD5HashAlgorithm<FCSTalonStateData>
00151 {
00152 public:
00156     virtual int Hash(const FCSTalonStateData* key);
00157 };
00158 
00159 
00161 class FCSTalonStateWithLocations : public FCSStateWithLocations
00162 {
00163 public:
00165     FCSTalonStateWithLocations();
00166 
00168     virtual ~FCSTalonStateWithLocations();
00169 
00178     static FCSStateWithLocations* CreateInitialState(const char *String, int NumberOfFreecells, 
00179                                                     int NumberOfStacks, int NumberOfDecks, FCSTalonType TalonType);
00188     virtual int CheckStateValidity(int NumberOfFreecells, int NumberOfStacks, 
00189                                     int NumberOfDecks, FCSCard** MisplacedCard, FCSTalonType TalonType);
00190 
00195     virtual void StateAsString(char* String, FCSDebugDisplayInfo* DebugInfo);
00196 
00201     virtual FCSCard* GetTalon(int Position);
00202     
00206     virtual void CacheTalonStacks(FCInternalHash<FCSTalonStateData, void>* TalonHash) = 0;
00207 
00211     virtual void CreateTalons(int NumberOfTalons) = 0;
00212 
00216     virtual FCSTalonStateData* GetTalonData() = 0;
00217 
00219     virtual void DecrementKlondikeTalonStack() = 0;
00220 };
00221 
00225 FCSTalonStateData* CreateTalonStateData();
00226 
00227 #endif

Generated on Sat Nov 5 11:20:16 2005 for Cpp Freecell Solver by  doxygen 1.4.4