ntesukiMoveGenerator.h
Go to the documentation of this file.
00001 /* ntesukiMoveGenerator.h
00002  */
00003 #ifndef _NTEUSKI_MOVE_GENERATOR_H
00004 #define _NTEUSKI_MOVE_GENERATOR_H
00005 
00006 #include "osl/ntesuki/ntesukiMoveList.h"
00007 #include "osl/state/numEffectState.h"
00008 
00009 namespace osl {
00010   namespace ntesuki {
00011     class NtesukiRecord;
00018     struct
00019     NtesukiMoveGenerator
00020     {
00021       bool verbose;
00022 
00023       NtesukiMoveGenerator(bool verbose = false);
00024       ~NtesukiMoveGenerator();
00025       template <Player T>
00026       void generate(const NumEffectState& state,
00027                     NtesukiMoveList& moves);
00028       void generateSlow(const Player T,
00029                         const NumEffectState& state,
00030                         NtesukiMoveList& moves)
00031       {
00032         if (T == BLACK)
00033           generate<BLACK>(state, moves);
00034         else
00035           generate<WHITE>(state, moves);
00036       }
00037 
00038       template <Player T>
00039       void generateWithRzone(const NumEffectState& state,
00040                              NtesukiRecord *record,
00041                              int pass_left,
00042                              NtesukiMoveList& moves);
00043       void generateWithRzoneSlow(const Player T,
00044                                  const NumEffectState& state,
00045                                  NtesukiRecord *record,
00046                                  int pass_left,
00047                                  NtesukiMoveList& moves)
00048       {
00049         if (T == BLACK)
00050           generateWithRzone<BLACK>(state, record, pass_left, moves);
00051         else
00052           generateWithRzone<WHITE>(state, record, pass_left, moves);
00053       }
00054 
00055     private:
00056       template <Player T>
00057       void setOrder(const NumEffectState& state,
00058                     NtesukiMoveList& moves);
00059 
00060     };
00061 
00062   } //ntesuki
00063 } //osl
00064 #endif /* _NTEUSKI_MOVE_GENERATOR_H */
00065 // ;;; Local Variables:
00066 // ;;; mode:c++
00067 // ;;; c-basic-offset:2
00068 // ;;; End:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines