Changeset 120

Show
Ignore:
Timestamp:
03/24/04 20:58:09 (5 years ago)
Author:
ug
Message:

Misc. changes. Undostack in abstractBoard.

Location:
06/devel
Files:
7 modified

Legend:

Unmodified
Added
Removed
  • 06/devel/abstractBoard.cc

    r83 r120  
    4040  undostack = PyList_New(0);  
    4141} 
     42 
     43 
     44abstractBoard::abstractBoard(const abstractBoard& ab) { 
     45} 
     46 
    4247 
    4348abstractBoard::~abstractBoard() { 
  • 06/devel/abstractBoard.h

    r83 r120  
    3232}; 
    3333 
     34 
     35class Move { 
     36 public: 
     37  char x; 
     38  char y; 
     39  char c; 
     40  vector<pair<char,char>> captures; 
     41} 
     42 
     43 
    3444class abstractBoard { 
    3545 public: 
    3646  int boardsize; 
    3747  char* status; 
    38   PyObject* undostack; 
     48  stack<Move> undostack; 
    3949 
    4050  abstractBoard(int bs = 19) throw(BoardError); 
     51  abstractBoard(const abstractBoard& ab); 
    4152  ~abstractBoard(); 
    4253  void clear(); 
     
    4758  void setStatus(int x, int y, char val); 
    4859  PyObject* get_undostack(); 
     60  int len_cap_last(); 
     61  abstractBoard copy(const abstractBoard& ab); 
     62 
    4963 private: 
    5064  int* neighbors(int x, int y); 
  • 06/devel/abstractBoardPY.py

    r119 r120  
    5858 
    5959    def copy(self): 
    60         print 'invoke copy' 
    6160        ab = abstractBoard(self.boardsize) 
    6261        ab.status = deepcopy(self.status) 
     
    6463        return ab 
    6564 
     65    def len_cap_last(self): 
     66        """ Return number of captured stones in last move. """ 
     67 
     68        return len(self.undostack[-1][2]) 
     69 
     70    def get_cap_last(self): 
     71        return self.undostack[-1][2] 
     72 
     73    def undostack_pop(self): 
     74        return self.undostack.pop() 
     75 
     76    def undostack_append_pass(self): 
     77        self.undostack.append(((20,20), '' ,[])) 
     78 
     79    def len_undostack(self): 
     80        return len(self.undostack) 
    6681 
    6782    def neighbors(self,x): 
  • 06/devel/board.py

    r94 r120  
    3333    from abstractBoard import * 
    3434except ImportError: 
    35     # print 'ouch' # FIXME 
     35    print 'ouch' # FIXME 
    3636    from abstractBoardPY import * 
    3737 
     
    218218        elif color in ['white', 'w']: color = 'W' 
    219219        if abstractBoard.play(self, pos, color):                    # legal move? 
    220             lll = self.get_undostack() 
    221             captures = lll[-1][2]     # retrieve list of captured stones 
     220            captures = self.get_cap_last() 
    222221            for x in captures: 
    223222                self.delete(self.stones[x]) 
     
    429428 
    430429        for i in range(no): 
    431             if self.get_undostack(): 
     430            if self.len_undostack(): 
    432431                self.onChange() 
    433                 pos, color, captures = self.get_undostack().pop() 
     432                pos, color, captures = self.undostack_pop() 
    434433                if self.getStatus(pos[0], pos[1]) != ' ': 
    435434                    self.setStatus(pos[0], pos[1], ' ') 
  • 06/devel/kombilo.py

    r119 r120  
    5656    from abstractBoard import * 
    5757except ImportError: 
    58     # print 'ouch' # FIXME 
     58    print 'ouch' # FIXME 
    5959    from abstractBoardPY import * 
    6060from board import * 
     
    14351435                     
    14361436                        if not self.master.board.play((jj,ii), color): 
    1437                             self.master.board.get_undostack().append(((20,20), '' ,[])) 
     1437                            self.master.board.undostack_append_pass() 
    14381438                        self.master.board.currentColor = self.master.modeVar.get() 
    14391439 
    14401440                        if nM == 'AB': 
    1441                             self.master.capB = self.master.capB + \ 
    1442                                                len(self.master.board.get_undostack()[len(self.master.board.get_undostack())-1][2]) 
     1441                            self.master.capB = self.master.capB + self.master.board.len_cap_last() 
    14431442                        if nM == 'AW': 
    1444                             self.master.capW = self.master.capW + \ 
    1445                                                len(self.master.board.get_undostack()[len(self.master.board.get_undostack())-1][2]) 
     1443                            self.master.capW = self.master.capW + self.master.board.len_cap_last() 
    14461444                        self.master.capVar.set('Cap - B: ' + str(self.master.capB) + ', W: ' + str(self.master.capW)) 
    14471445 
     
    14591457 
    14601458                        if nM == 'AB': 
    1461                             self.master.capB = self.master.capB + \ 
    1462                                                len(self.master.board.get_undostack()[len(self.master.board.get_undostack())-1][2]) 
     1459                            self.master.capB = self.master.capB + self.master.board.len_cap_last() 
    14631460                        if nM == 'AW': 
    1464                             self.master.capW = self.master.capW + \ 
    1465                                                len(self.master.board.get_undostack()[len(self.master.board.get_undostack())-1][2]) 
     1461                            self.master.capW = self.master.capW + self.master.board.len_cap_last() 
    14661462                        self.master.capVar.set('Cap - B: ' + str(self.master.capB) + ', W: ' + str(self.master.capW)) 
    14671463                except SGFError: showwarning('Error', 'SGF Error') 
  • 06/devel/searchPY.py

    r119 r120  
    298298                                assert 0 <= x < self.boardsize and 0 <= y < self.boardsize # jump to end of loop if pass 
    299299                             
    300                                 if b.get_undostack(): captures = b.get_undostack()[len(b.get_undostack())-1][2] 
     300                                if b.len_undostack(): captures = b.get_cap_last() 
    301301                                else: assert 0 
    302302 
  • 06/devel/v.py

    r94 r120  
    16261626 
    16271627                    if not self.board.play(p, self.modeVar.get()): 
    1628                         self.board.get_undostack().append(((20,20), '' ,[])) 
     1628                        self.board.undostack_append_pass() 
    16291629                    self.board.currentColor = self.modeVar.get() 
    16301630                 
    16311631                    if nM == 'AB': 
    1632                         self.capB = self.capB + len(self.board.get_undostack()[len(self.board.get_undostack())-1][2]) 
     1632                        self.capB = self.capB + self.board.len_cap_last() 
    16331633                    if nM == 'AW': 
    1634                         self.capW = self.capW + len(self.board.get_undostack()[len(self.board.get_undostack())-1][2]) 
     1634                        self.capW = self.capW + self.board.len_cap_last() 
    16351635                    self.capVar.set('Cap - B: ' + str(self.capB) + ', W: ' + str(self.capW)) 
    16361636                else: 
     
    16471647 
    16481648                    if nM == 'AB': 
    1649                         self.capB = self.capB + len(self.board.get_undostack()[len(self.board.get_undostack())-1][2]) 
     1649                        self.capB = self.capB + self.board.len_cap_last() 
    16501650                    if nM == 'AW': 
    1651                         self.capW = self.capW + len(self.board.get_undostack()[len(self.board.get_undostack())-1][2]) 
     1651                        self.capW = self.capW + self.board.len_cap_last() 
    16521652                    self.capVar.set('Cap - B: ' + str(self.capB) + ', W: ' + str(self.capW)) 
    16531653 
     
    16901690                    self.displayNode(c) 
    16911691                    if c.has_key('B'): 
    1692                         self.capB = self.capB + len(self.board.get_undostack()[len(self.board.get_undostack())-1][2]) 
     1692                        self.capB = self.capB + self.board.len_cap_last() 
    16931693                    if c.has_key('W'): 
    1694                         self.capW = self.capW + len(self.board.get_undostack()[len(self.board.get_undostack())-1][2]) 
     1694                        self.capW = self.capW + self.board.len_cap_last() 
    16951695                    self.capVar.set('Cap - B: ' + str(self.capB) + ', W: ' + str(self.capW)) 
    16961696 
     
    17221722                self.displayNode(c) 
    17231723                if nM == 'B': 
    1724                     self.capB = self.capB + len(self.board.get_undostack()[len(self.board.get_undostack())-1][2]) 
     1724                    self.capB = self.capB + self.board.len_cap_last() 
    17251725                if nM == 'W': 
    1726                     self.capW = self.capW + len(self.board.get_undostack()[len(self.board.get_undostack())-1][2]) 
     1726                    self.capW = self.capW + self.board.len_cap_last() 
    17271727                self.capVar.set('Cap - B: ' + str(self.capB) + ', W: ' + str(self.capW)) 
    17281728            except SGFError: 
     
    17441744                if (c.has_key('B') and c['B'][0]) or (c.has_key('W') and c['W'][0]): 
    17451745                    if c.has_key('B'): 
    1746                         self.capB = self.capB - len(self.board.get_undostack()[len(self.board.get_undostack())-1][2]) 
     1746                        self.capB = self.capB - self.board.len_cap_last() 
    17471747                    if c.has_key('W'): 
    1748                         self.capW = self.capW - len(self.board.get_undostack()[len(self.board.get_undostack())-1][2]) 
     1748                        self.capW = self.capW - self.board.len_cap_last() 
    17491749                    self.capVar.set('Cap - B: ' + str(self.capB) + ', W: ' + str(self.capW)) 
    17501750                    self.board.undo() 
     
    17941794            self.displayNode(c) 
    17951795            if c.has_key('B') and c['B'][0]: 
    1796                 self.capB = self.capB + len(self.board.get_undostack()[len(self.board.get_undostack())-1][2]) 
     1796                self.capB = self.capB + self.board.len_cap_last() 
    17971797            if c.has_key('W') and c['W'][0]: 
    1798                 self.capW = self.capW + len(self.board.get_undostack()[len(self.board.get_undostack())-1][2]) 
     1798                self.capW = self.capW + self.board.len_cap_last() 
    17991799            self.capVar.set('Cap - B: ' + str(self.capB) + ', W: ' + str(self.capW)) 
    18001800 
     
    18301830            for p in c['AB']: 
    18311831                if not self.board.play(self.convCoord(p), 'black'): 
    1832                     self.board.get_undostack().append(((20,20), '' ,[])) 
     1832                    self.board.undostack_append_pass() 
    18331833                else: self.board.currentColor = self.board.invert(self.board.currentColor) 
    18341834        if c.has_key('AW') and c['AW'][0]: 
    18351835            for p in c['AW']: 
    18361836                if not self.board.play(self.convCoord(p), 'white'): 
    1837                     self.board.get_undostack().append(((20,20), '' ,[])) 
     1837                    self.board.undostack_append_pass() 
    18381838                else: self.board.currentColor = self.board.invert(self.board.currentColor) 
    18391839        if c.has_key('AE') and c['AE'][0]: 
    18401840            for p in c['AE']: 
    18411841                if not self.board.remove(self.convCoord(p)): 
    1842                     self.board.get_undostack().append(((20,20), '' ,[])) 
     1842                    self.board.undostack_append_pass() 
    18431843        if c.has_key('B') and c['B'][0]: 
    18441844            p = self.convCoord(c['B'][0]) 
    18451845            if not p or not self.board.play(p, 'black'): 
    1846                 self.board.get_undostack().append(((20,20), '' ,[])) 
     1846                self.board.undostack_append_pass() 
    18471847        elif c.has_key('W') and c['W'][0]: 
    18481848            p = self.convCoord(c['W'][0]) 
    18491849            if not p or not self.board.play(p, 'white'): 
    1850                 self.board.get_undostack().append(((20,20), '' ,[])) 
     1850                self.board.undostack_append_pass() 
    18511851 
    18521852        self.displayLabels(c) 
     
    27362736        self.nextButton = Button(navFrame, text='->', command=self.next) 
    27372737        self.boardFrame.bind('<Right>', lambda e, s = self.nextButton: s.invoke()) 
     2738        # self.board.bind('<Button-5>', lambda e, s = self.nextButton: s.invoke()) # check whether this is OK an Windows! 
    27382739        self.prevButton = Button(navFrame, text='<-', command=self.prev)                                 
    27392740        self.boardFrame.bind('<Left>', lambda e, s = self.prevButton: s.invoke()) 
     2741        # self.board.bind('<Button-4>', lambda e, s = self.prevButton: s.invoke()) 
    27402742        self.next10Button = Button(navFrame, text='-> 10', command=self.next10) 
    27412743        self.boardFrame.bind('<Down>', lambda e, s = self.next10Button: s.invoke())