def findPath( self ):
        stack = Stack()
        self._markPath(self._startCell.row, self._startCell.col) 

        stack.push(self._startCell)
        
        while not stack.isEmpty():
            # debug
            stack.show()     

            cur = _CellPosition(0, 0)
            cur.row = stack.peek().row
            cur.col = stack.peek().col
            print "current:"
            print (cur.row, cur.col) 
            if cur.row == self._exitCell.row and \
               cur.col == self._exitCell.col:
                print "findPath ok"
                return 1

            if self.haveUp(cur.row, cur.col):
                cur.row = cur.row - 1
                stack.push(cur)
                self._markPath(cur.row, cur.col) 
                continue

            if self.haveRight(cur.row, cur.col):
                cur.col = cur.col + 1
                stack.push(cur)
                self._markPath(cur.row, cur.col) 
                continue
            
            if self.haveDown(cur.row, cur.col):
                cur.row = cur.row + 1
                stack.push(cur)
                self._markPath(cur.row, cur.col) 
                continue
            
            if self.haveLeft(cur.row, cur.col):
                cur.col = cur.col - 1
                stack.push(cur)
                self._markPath(cur.row, cur.col) 
                continue

            print "aaaaaaaaaaaaa"
            self._markTried(cur.row, cur.col) 
            stack.pop() 
            stack.show()     
            

        print "findPath fail"
        return 0