All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
effect5x3d.h
Go to the documentation of this file.
1 /* effect5x3.h
2  */
3 #ifndef PROGRESS_EFFECT5X3D_H
4 #define PROGRESS_EFFECT5X3D_H
5 
8 #include "osl/centering5x3.h"
9 #include "osl/misc/carray.h"
10 #include <algorithm>
11 namespace osl
12 {
13  namespace progress
14  {
21  struct Effect5x3d
22  {
31  static int makeProgress(Player defense, const NumEffectState& state,
32  Square king);
33  static int makeProgress(Player defense, const NumEffectState& state){
34  return makeProgress(defense,state,state.kingSquare(defense));
35  }
36  static int makeProgress(const NumEffectState& state)
37  {
38  return makeProgress(BLACK, state) + makeProgress(WHITE, state);
39  }
43  static const Progress16 progress16(int progress)
44  {
45  assert(progress >= 0);
46  const int rank = progress / 8 - 16; // 適当
47  return Progress16(std::max(std::min(rank, 15), 0));
48  }
54  {
55  assert(progress >= 0);
56  const int rank = progress / 8 - 8; // 調整中
57  return Progress16(std::max(std::min(rank, 15), 0));
58  }
59  private:
60  CArray<int,2> progresses;
61  public:
62  explicit Effect5x3d(const NumEffectState& state)
63  {
66  }
67  void changeTurn() {}
68  int progress(Player p) const { return progresses[p]; }
69  const Progress16 progress16() const
70  {
71  return progress16(progresses[0] + progresses[1]);
72  }
73  const Progress16 progress16(Player p) const
74  {
75  return progress16each(progress(p));
76  }
77  // 必要なもの
78  void update(const NumEffectState& new_state, Move last_move);
79  };
80  } // namespace progress
81 } // namespace osl
82 
83 #endif /* PROGRESS_EFFECT5X3D_H */
84 // ;;; Local Variables:
85 // ;;; mode:c++
86 // ;;; c-basic-offset:2
87 // ;;; End: