My Project
compactBoard.h
Go to the documentation of this file.
1 #ifndef _COMPACT_BOARD_H
2 #define _COMPACT_BOARD_H
3 #include "osl/simpleState.h"
4 #include <vector>
5 #include <string>
6 
7 namespace osl
8 {
9  namespace book
10  {
11  class OPiece
12  {
13  public:
15  {
16  const Square pos = p.square();
17  const int bitPos = position2Bits(pos);
18  value = (static_cast<int>(p.owner()) << 20 |
19  static_cast<int>(p.ptype()) << 16 | bitPos);
20  }
21  OPiece(int i)
22  {
23  value = i;
24  }
25  Square square() const
26  {
27  return bits2Square(value);
28  }
29  Ptype ptype() const
30  {
31  return static_cast<Ptype>((value >> 16) & 0xf);
32  }
33  Player owner() const
34  {
35  return static_cast<Player>(value >> 20);
36  }
37  operator int() const { return value; }
38 
40  static int position2Bits(const Square& pos);
42  static Square bits2Square(const int bit_position);
43  private:
44  int value;
45  };
46 
47  class CompactBoard;
53  bool operator==(const CompactBoard&, const CompactBoard&);
54  std::ostream& operator<<(std::ostream& os, const CompactBoard& c);
55  std::istream& operator>>(std::istream& os, CompactBoard& c);
60  {
61  public:
63  explicit CompactBoard(const SimpleState& state);
64  SimpleState state() const;
65  const std::vector<OPiece>& pieces() const {return piece_vector;};
66  Player turn() const {return player_to_move;}
67 
68  friend std::ostream& operator<<(std::ostream& os, const CompactBoard& c);
69  friend std::istream& operator>>(std::istream& os, CompactBoard& c);
70  friend bool operator==(const CompactBoard&, const CompactBoard&);
71  private:
72  std::vector<OPiece> piece_vector;
74  };
75  int readInt(std::istream& is);
76  void writeInt(std::ostream& os, int n);
77  }
78 }
79 
80 #endif // _COMPACT_BOARD_H
81 /* ------------------------------------------------------------------------- */
82 // ;;; Local Variables:
83 // ;;; mode:c++
84 // ;;; c-basic-offset:2
85 // ;;; End:
osl::Square
Definition: basic_type.h:532
osl::book::OPiece::ptype
Ptype ptype() const
Definition: compactBoard.h:29
osl::book::OPiece::OPiece
OPiece(Piece p)
Definition: compactBoard.h:14
osl::book::operator>>
std::istream & operator>>(std::istream &os, CompactBoard &c)
Definition: compactBoard.cc:91
osl::book::CompactBoard::operator<<
friend std::ostream & operator<<(std::ostream &os, const CompactBoard &c)
osl::book::OPiece::position2Bits
static int position2Bits(const Square &pos)
Converts a position to an integer (bits)
Definition: compactBoard.cc:7
osl::SimpleState
Definition: simpleState.h:35
osl::book::CompactBoard::turn
Player turn() const
Definition: compactBoard.h:66
osl::book::CompactBoard::pieces
const std::vector< OPiece > & pieces() const
Definition: compactBoard.h:65
osl::Ptype
Ptype
駒の種類を4ビットでコード化する
Definition: basic_type.h:84
osl::book::CompactBoard::player_to_move
Player player_to_move
Definition: compactBoard.h:73
osl::Piece
駒.
Definition: basic_type.h:788
osl::book::CompactBoard
SimpleStateよりcompactな局面の表現
Definition: compactBoard.h:60
osl::book::CompactBoard::CompactBoard
CompactBoard()
Definition: compactBoard.h:62
osl::book::OPiece
Definition: compactBoard.h:12
osl::book::operator<<
std::ostream & operator<<(std::ostream &os, const CompactBoard &c)
Definition: compactBoard.cc:79
osl::book::OPiece::square
Square square() const
Definition: compactBoard.h:25
osl::Piece::owner
Player owner() const
Definition: basic_type.h:963
osl::book::CompactBoard::operator>>
friend std::istream & operator>>(std::istream &os, CompactBoard &c)
osl::Piece::square
const Square square() const
Definition: basic_type.h:832
osl::Piece::ptype
Ptype ptype() const
Definition: basic_type.h:821
osl::book::OPiece::value
int value
Definition: compactBoard.h:44
osl::book::readInt
int readInt(std::istream &is)
Definition: openingBook.cc:7
osl::book::CompactBoard::state
SimpleState state() const
Definition: compactBoard.cc:58
osl::Player
Player
Definition: basic_type.h:8
simpleState.h
osl::book::OPiece::OPiece
OPiece(int i)
Definition: compactBoard.h:21
osl::book::OPiece::owner
Player owner() const
Definition: compactBoard.h:33
osl::book::CompactBoard::piece_vector
std::vector< OPiece > piece_vector
Definition: compactBoard.h:72
osl::book::OPiece::bits2Square
static Square bits2Square(const int bit_position)
Converts an integer (bits) to Square.
Definition: compactBoard.cc:13
osl::book::operator==
bool operator==(const CompactBoard &, const CompactBoard &)
局面を比較する.
Definition: compactBoard.cc:73
osl::book::writeInt
void writeInt(std::ostream &os, int n)
Definition: openingBook.cc:18
osl
Definition: additionalEffect.h:6
osl::book::CompactBoard::operator==
friend bool operator==(const CompactBoard &, const CompactBoard &)
局面を比較する.