00001 //---------------------------------------------------------------------------- 00002 /** @file WolveEngine.hpp 00003 */ 00004 //---------------------------------------------------------------------------- 00005 00006 #ifndef WOLVEENGINE_HPP 00007 #define WOLVEENGINE_HPP 00008 00009 #include "BenzeneHtpEngine.hpp" 00010 #include "BookCheck.hpp" 00011 #include "BookCommands.hpp" 00012 #include "CacheBook.hpp" 00013 #include "WolvePlayer.hpp" 00014 00015 _BEGIN_BENZENE_NAMESPACE_ 00016 00017 //---------------------------------------------------------------------------- 00018 00019 /** Htp engine for Wolve. */ 00020 class WolveEngine : public BenzeneHtpEngine 00021 { 00022 public: 00023 WolveEngine(int boardsize, WolvePlayer& player); 00024 00025 ~WolveEngine(); 00026 00027 /** @name Command Callbacks */ 00028 // @{ 00029 00030 // The callback functions are documented in the cpp file 00031 void WolveParam(HtpCommand& cmd); 00032 00033 // @} // @name 00034 00035 #if GTPENGINE_PONDER 00036 virtual void Ponder(); 00037 virtual void InitPonder(); 00038 virtual void StopPonder(); 00039 #endif 00040 00041 private: 00042 00043 WolvePlayer& m_player; 00044 00045 boost::scoped_ptr<Book> m_book; 00046 00047 BookCheck m_bookCheck; 00048 00049 BookCommands m_bookCommands; 00050 00051 CacheBook m_cacheBook; 00052 00053 double TimeForMove(HexColor color); 00054 00055 HexPoint GenMove(HexColor color, bool useGameClock); 00056 00057 void RegisterCmd(const std::string& name, 00058 GtpCallback<WolveEngine>::Method method); 00059 00060 }; 00061 00062 //---------------------------------------------------------------------------- 00063 00064 _END_BENZENE_NAMESPACE_ 00065 00066 #endif // WOLVEENGINE_HPP