libkombilo  0.8
/home/ug/devel/kombilo-py-dev/kombilo/libkombilo/abstractboard.h
Go to the documentation of this file.
1 
26 #ifndef _ABSTRACTBOARD_H_
27 #define _ABSTRACTBOARD_H_
28 
29 #include <vector>
30 #include <utility>
31 #include <stack>
32 #include <iostream>
33 
34 class BoardError {
35  public:
36  BoardError();
37 };
38 
39 typedef std::pair<int,int> p_cc;
40 
41 
42 const char AB = 'x';
43 const char AW = 'y';
44 const char AEB = 'z'; // remove a black stone
45 const char AEW = 'Z'; // remove a white stone
46 
47 
48 
49 class MoveNC {
50  public:
51  char x;
52  char y;
53  char color;
54 
55  MoveNC();
56  MoveNC(char X, char Y, char COLOR);
57  MoveNC(const MoveNC& MNC);
58  bool operator==(const MoveNC& mnc) const;
59 };
60 
61 class Move : public MoveNC {
62  public:
63  Move();
64  Move(char xx, char yy, char cc);
65  Move(char xx, char yy, char cc, std::vector<p_cc > cap);
66  Move(const Move& m);
67  ~Move();
68  Move& operator=(const Move& m);
69 
70  std::vector<p_cc >* captures;
71 };
72 
73 
78  public:
79  int boardsize;
80  std::vector<Move> undostack;
81 
82  abstractBoard(int bs = 19) throw(BoardError);
83  abstractBoard(const abstractBoard& ab);
84  ~abstractBoard();
85  abstractBoard& operator=(const abstractBoard& ab);
86 
87  void clear();
88  int play(int x, int y, const char* color) throw(BoardError);
90  void undo(int n=1);
91  void remove(int x, int y, bool removeFromUndostack);
92  char getStatus(int x, int y);
93  void setStatus(int x, int y, char val);
94 
98 
99  int len_cap_last() throw(BoardError);
100  void undostack_append_pass();
101  p_cc undostack_top_pos();
102  char undostack_top_color();
103  std::vector<p_cc > undostack_top_captures();
104  void undostack_push(Move& m);
105  void undostack_pop();
108  // abstractBoard& copy(const abstractBoard& ab);
109 
110  private:
111  char* status;
112  int* neighbors(int x, int y);
113  std::vector<p_cc >* legal(int x, int y, char color);
114  std::vector<p_cc >* hasNoLibExcP(int x1, int y1, int exc=-1);
115  char invert(char);
116 };
117 
118 #endif
119 
Definition: abstractboard.h:49
Definition: abstractboard.h:77
Definition: abstractboard.h:61
Definition: abstractboard.h:34