当前位置: 首页>>代码示例>>Python>>正文


Python Board.copy方法代码示例

本文整理汇总了Python中board.Board.copy方法的典型用法代码示例。如果您正苦于以下问题:Python Board.copy方法的具体用法?Python Board.copy怎么用?Python Board.copy使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在board.Board的用法示例。


在下文中一共展示了Board.copy方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: test_resolve_square

# 需要导入模块: from board import Board [as 别名]
# 或者: from board.Board import copy [as 别名]
def test_resolve_square():
    shape = (3, 2)  # 3 lines & 2 columns
    board1 = Board(shape)
    board1.current_player = VAMP
    board1.proba = 0.5
    # HUM: 0, VAMP: 1, WOLV: 2
    board1.grid = np.array([
        [[1, 0, 0], [0, 2, 0]],
        [[0, 0, 0], [0, 0, 0]],
        [[0, 0, 0], [0, 2, 2]],
    ], dtype=np.uint8)

    square = (2, 1)
    board2 = board1.copy()

    outcomes = get_outcomes(board1, square)
    for outcome in outcomes:
        outcome['result'] = list(outcome['result'])
    assert outcomes == [
        {'proba': 0.5, 'result': [0, 1, 0]},
        {'proba': 0.5, 'result': [0, 0, 1]},
    ]
    boards = resolve_square([board1, board2], outcomes, square)
    for board in boards:
        assert list(board.grid[square]) in [[0, 1, 0], [0, 0, 1]]
        print(board.proba)
        assert board.proba == 0.25
开发者ID:deterralba,项目名称:centrale_ia,代码行数:29,代码来源:board_test.py

示例2: __init__

# 需要导入模块: from board import Board [as 别名]
# 或者: from board.Board import copy [as 别名]
 def __init__(self):
     brd1 = Board(ENGLISH)
     brd1[3][3].pick()
     brd2 = brd1.copy()
     brd2.complement()
     init_costs(brd1)
     Problem.__init__(self, brd1, brd2)
     self.initial.set_observed_class(self.goal[3][3])
     self.initial[3][3].pvalue = \
     self.goal[3][3].pvalue = len(self.goal.clses) + 1
     self.generated = 0
开发者ID:ilmirons,项目名称:apsa,代码行数:13,代码来源:psolitaire.py

示例3: main

# 需要导入模块: from board import Board [as 别名]
# 或者: from board.Board import copy [as 别名]
def main():
    board = Board()
    end_game = False
    while not end_game:
        win_check(end_game, board)
        print("Please choose a position (from 1 to 9)")
        human_position = input(">")
        board.real_move(1, int(human_position) - 1)
        print(str(board))
        os.system('clear')
        win_check(end_game, board)
        current_board = board.copy()
        current_node = Node(-1, current_board)
        value, position = min_max(current_node)
        board.real_move(-1, position)
        print(str(board))
开发者ID:eevlogieva,项目名称:HackBulgaria_Programming101,代码行数:18,代码来源:start.py

示例4: TestBoard

# 需要导入模块: from board import Board [as 别名]
# 或者: from board.Board import copy [as 别名]
class TestBoard(TestCase):
    def setUp(self):
        self.board = Board(5, 7)

    def test_n_rows(self):
        self.assertEqual(self.board.n_rows, 5)

    def test_n_cols(self):
        self.assertEqual(self.board.n_cols, 7)

    def test_repr(self):
        board = Board(0, 0)
        self.assertEqual(repr(board), '')

        board = Board(3, 3)
        self.assertEqual(repr(board), 9 * ' ')

    def test_str(self):
        board = Board(1, 1)
        self.assertEqual(str(board), '+-+\n| |\n+-+\n')

    def test_eq(self):
        a = Board(5, 5)
        b = Board(5, 5)
        c = Board(3, 5)
        self.assertEqual(a, b)
        self.assertNotEqual(a, c)

    def test__hash__(self):
        c = {Board(5, 5)}
        c.add(Board(5, 5))
        self.assertEqual(len(c), 1)

    def test__contains__(self):
        M, N = 5, 7
        board = Board(M, N)
        self.assertIn(Position(M - 1, N - 1), board)
        self.assertNotIn(Position(-1, -1), board)
        self.assertNotIn(Position(M, N), board)

    def test_place(self):
        self.board.place(Rook, Position(3, 4))
        self.assertIsInstance(self.board[3][4], Rook)

    def test_place_at(self):
        self.board.place_at(Rook, 3, 4)
        self.assertIsInstance(self.board[3][4], Rook)

    def test_place_out_of_range(self):
        self.assertRaises(AssertionError, self.board.place, Rook, Position(7, 4))

    def test_place_is_empty(self):
        self.board.place_at(Rook, 3, 2)
        self.assertRaises(AssertionError, self.board.place, list, Position(3, 2))

    def test_place_is_subclass(self):
        self.assertRaises(AssertionError, self.board.place, list, Position(3, 2))

    def test_pieces(self):
        self.board.place_at(Rook, 3, 2)
        self.board.place_at(Queen, 1, 1)
        self.board.place_at(Knight, 2, 4)
        self.assertListEqual([str(x) for x in self.board.pieces], ['R', 'Q', 'N'])

    def test_copy(self):
        self.board.place_at(Rook, 3, 2)
        self.board.place_at(Queen, 1, 1)
        self.board.place_at(Knight, 2, 4)
        tmp = self.board.copy()
        self.assertEqual(self.board, tmp)
        self.assertIsNot(self.board, tmp)

    def test_attacked(self):
        self.board.place_at(Rook, 3, 2)
        self.board.place_at(Queen, 1, 1)
        self.board.place_at(Knight, 2, 4)
        self.assertSetEqual(self.board.attacked, set.union(*[x.attacked_positions for x in self.board.pieces]))

    def test_at(self):
        self.board.place_at(Rook, 3, 2)
        self.board.place_at(Queen, 1, 1)
        self.board.place_at(Knight, 2, 4)

        self.assertEqual(self.board.at(Position(3, 2)), self.board[3][2])
        self.assertEqual(self.board.at(Position(1, 1)), self.board[1][1])
        self.assertEqual(self.board.at(Position(2, 4)), self.board[2][4])

        self.assertEqual(self.board.at(Position(0, 2)), self.board[0][2])
开发者ID:boriel,项目名称:nqueens,代码行数:90,代码来源:test_board.py

示例5: ScrabbleVision

# 需要导入模块: from board import Board [as 别名]
# 或者: from board.Board import copy [as 别名]
class ScrabbleVision(Thread):
  def __init__(self, source):
    Thread.__init__(self)
    self.daemon = True
    self.source = source

    self.board = Board()
    self.l = Lock()
    self.started = False
    self.killed = False

  def get_current_board(self):
    with self.l:
      return self.board.copy()

  def kill(self):
    self.killed = True

  def run(self):

      self.source.start()

      while True:

        frame_raw = self.source.read()
        if frame_raw is None:
          print 'No frame received; terminating.'
          return

        if self.killed:
          print "Vision terminating"
          return

        reload(configs)
        element = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (configs.ERODE_RAD,configs.ERODE_RAD))
        element2 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (configs.DILATE_RAD,configs.DILATE_RAD))

        #BEGIN PROCESSING
        try:

          if configs.VFLIP: 
            frame = cv2.flip(frame_raw, flipCode=-1)
          else:
            frame = frame_raw

          if configs.DEBUG:
            POST("RAW", frame)

          luv = cv2.split(cv2.cvtColor(frame, cv2.COLOR_RGB2LUV))

          v_chan = luv[2]

          if configs.DEBUG:
            POST("V", v_chan)

          blur = cv2.GaussianBlur(v_chan, (configs.BLUR_RAD,configs.BLUR_RAD), 0)

          if configs.DEBUG:
            POST("blur", blur)
          thresh = cv2.adaptiveThreshold(blur, 255, 0, 1, configs.BOARD_THRESH_PARAM, configs.BOARD_BLOCK_SIZE)

          if configs.DEBUG:
            POST("thresh", thresh)

          erode = cv2.erode(thresh, element)
          erode = cv2.dilate(erode, element2)
          
          if configs.DEBUG:
            POST("erode", erode)

          erode_draw = frame.copy()
          
          contours,hierarchy = cv2.findContours(erode, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

          possible_corners = []

          #Find large contour closest to center of image
          for cnt in contours:
            sz = cv2.contourArea(cnt)
            if sz>75 and sz < 650:
              ellipse = cv2.fitEllipse(cnt)
              ((x,y), (w,h), r) = ellipse
              ar = w / h if w > h else h / w
              if ar > 1.8:
                continue
              pf = (w * h * 0.75) / sz
              if pf > 1.5:
                continue
              cv2.ellipse(erode_draw,ellipse,(0,255,0),2)
              possible_corners.append((x,y))


          def get_closest_corner(point):
            dst = float("inf")
            crnr = None
            for pc in possible_corners:
              d = distance(point, pc)
              if d < dst:
                dst = d
                crnr = pc
#.........这里部分代码省略.........
开发者ID:jheidel,项目名称:scrabble-opencv,代码行数:103,代码来源:vision.py

示例6: _put

# 需要导入模块: from board import Board [as 别名]
# 或者: from board.Board import copy [as 别名]
                    original_closed[node.state] = True
                    for new_node in node.expand(original_problem):
                        original_fringe.append(new_node)
                        _put(new_node, original_hashed_fringe)
        except StopIteration:
            print "Both fringe exhausted!"
            break
        
    return None


if __name__ == '__main__':
    
    B = Board(ENGLISH)
    
    GOAL = B.copy()
    GOAL.complement()
    GOAL[4][3].put()
    GOAL[5][3].put()
    
    B[3][3].pick()
    
    P = BoardProblem(B, GOAL)
    IP  = ReverseBoardProblem(GOAL, B)
    T0 = time.clock()
    sol = bidirectional_search(P, IP, go, FIFOQueue(), FIFOQueue())
    moves = translate2moves(sol)
    T = time.clock() - T0
    
    print B
    for move in moves:
开发者ID:ilmirons,项目名称:apsa,代码行数:33,代码来源:pegsolitaire.py

示例7: ScrabbleVision

# 需要导入模块: from board import Board [as 别名]
# 或者: from board.Board import copy [as 别名]
class ScrabbleVision(Thread):
    def __init__(self):
        Thread.__init__(self)
        self.board = Board()
        self.l = Lock()
        self.started = False
        self.killed = False

    def get_current_board(self):
        with self.l:
            return self.board.copy()

    def kill(self):
        self.killed = True

    def run(self):

            vc = cv2.VideoCapture(-1)

            if vc.isOpened(): # try to get the first frame
                rval, frame_raw = vc.read()
            else:
                rval = False

            while rval:

                if self.killed:
                    print "Vision terminating"
                    return

                reload(configs)
                element = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (configs.ERODE_RAD,configs.ERODE_RAD))
                element2 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (configs.DILATE_RAD,configs.DILATE_RAD))

                #BEGIN PROCESSING
                try:

                    
                    frame = cv2.flip(frame_raw, flipCode=-1)
                    POST("RAW", frame)

                    luv = cv2.split(cv2.cvtColor(frame, cv2.COLOR_RGB2LUV))

                    v_chan = luv[2]

                    #POST("V", v_chan)

                    blur = cv2.GaussianBlur(v_chan, (configs.BLUR_RAD,configs.BLUR_RAD), 0)

                    #POST("blur", blur)
                    thresh = cv2.adaptiveThreshold(blur, 255, 0, 1, configs.BOARD_THRESH_PARAM, configs.BOARD_BLOCK_SIZE)

                    #POST("thresh", thresh)

                    erode = cv2.erode(thresh, element)
                    erode = cv2.dilate(erode, element2)
                    
                    POST("erode", erode)

                    erode_draw = frame.copy()
                    
                    contours,hierarchy = cv2.findContours(erode, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

                    possible_corners = []

                    #Find large contour closest to center of image
                    for cnt in contours:
                        sz = cv2.contourArea(cnt)
                        if sz>75 and sz < 650:
                            ellipse = cv2.fitEllipse(cnt)
                            ((x,y), (w,h), r) = ellipse
                            ar = w / h if w > h else h / w
                            if ar > 1.8:
                                continue
                            pf = (w * h * 0.75) / sz
                            if pf > 1.5:
                                continue
                            cv2.ellipse(erode_draw,ellipse,(0,255,0),2)
                            possible_corners.append((x,y))


                    """


                    lines = cv2.HoughLinesP(erode, 1, 3.14/180, 300, minLineLength=200, maxLineGap=100)[0]
                    m,n = erode.shape

                    goodlines = lines[:40]

                    #Calculate intersection points
                    points = set()
                    CLUSTER_RAD = 50
                    clusters = []
                    for x in goodlines:
                        for y in goodlines:
                            i = intersect(x,y)
                            if i is not None:
                                added = False
                                for (ctr, st) in clusters:
                                    if distance(i, ctr) < CLUSTER_RAD:
#.........这里部分代码省略.........
开发者ID:ukasiu,项目名称:scrabble-opencv,代码行数:103,代码来源:vision.py

示例8: __init__

# 需要导入模块: from board import Board [as 别名]
# 或者: from board.Board import copy [as 别名]
class Scrabble:
  def __init__(self, rack):
    self.rack = rack
    self.board = Board()

  def is_word(self, possible_word):
    return (possible_word in DICTIONARY)

  def _try_letters_at_position(self, board, letters_at_position):
    '''Adds the letters to the board at the given position. Returns False if a
    non-word is created by any letter.'''
    starting_pos = letters_at_position.position_with_direction.position.copy()
    direction = letters_at_position.position_with_direction.direction
    letters = letters_at_position.letters
    try:
      board.add_letters(letters, starting_pos, direction)
    except OutOfBoundsException:
      return False
    # Check that there is a word at the original position/direction
    if not self.is_word(board.get_word(starting_pos, direction)):
      # We didn't make a real word
      return False
    # We made a real word, now check to make sure we didn't create any
    # non-words in the other direction.
    other_direction = Position.get_other_direction(direction)
    moving_position = starting_pos.copy()
    for _ in range(len(letters)):
      generated_word = board.get_word(moving_position, other_direction)
      moving_position.add_in_direction(1, direction)  # for next time
      if len(generated_word) < 2:
        # This one isn't a word- it's just a letter. We're fine
        continue
      if not self.is_word(generated_word):
        # We accidentally made a non word!
        return False
    # We made a word, and didn't make any non-words in the other direction!
    return True

  def try_rack_at_position(self, position_to_try):
    '''Try all combinations of the rack letters at position to see if we can
    make a word. The minimum word length is the distance to the closest
    letter, to make sure we're touching it.'''
    good_words = []
    minimum_num_letters = self.board.get_spaces_to_next_letter(position_to_try)
    for num_letters in range(minimum_num_letters, 8):
      for letters_to_try in future_itertools.permutations(self.rack,
                                                          num_letters):
        # Make a fake board and add these letters to it
        temp_board = self.board.copy()
        letters_at_position = LettersAtPosition(position_to_try,
                                                letters_to_try)
        try:
          if self._try_letters_at_position(temp_board, letters_at_position):
            # We made a word!
            good_words.append(letters_at_position)
        except OutOfBoundsException:
          # Just skip if we start or end out of bounds
          continue
    return good_words

  def generate_positions_to_try(self, ):
    '''Returns all possible places where our 7 letters could be played. This
    means the 7 spaces to the top/left of each piece on the board, and 1 space
    to the down/right. A position is skipped if it is not on the board or
    already occupied by a piece.

    Return type is PositionWithDirection, which gives the position and
    direction to be tried.'''
    positions_to_try = set()
    for base_position in self.board.get_position_of_all_letters():
      for direction in Position.DIRECTIONS:
        # Try 7 to the left (or up), and 1 to the right (or down)
        magnitudes_to_try = range(-7, 0) + [1]
        for distance_away_from_base in magnitudes_to_try:
          position = base_position.copy()
          position.add_in_direction(distance_away_from_base, direction)
          if self.board.position_is_out_of_bounds(position):
            # Can't start at an out of bounds position
            continue
          if not self.board.is_blank(position):
            # Skipping position- already has a letter
            continue
          positions_to_try.add(PositionWithDirection(position, direction))
    return positions_to_try
开发者ID:topher200,项目名称:scrabble-bot,代码行数:86,代码来源:game.py

示例9: GUI

# 需要导入模块: from board import Board [as 别名]
# 或者: from board.Board import copy [as 别名]
class GUI(object):
    'Interface for solving Sudoku puzzles.'
    
    def __init__(self):
        'Initialize GUI class.'
        self.board = Board()
        self.restore = None
        self.current = None
        self.createGUI()
        self.setEnabled(True)
        try:
            self.root.mainloop()
        except KeyboardInterrupt:
            self.board.terminate()

    def createGUI(self):
        'Create a TK interface.'
        self.root = tk.Tk()
        self.root.wm_title('Sudoku')
        
        self.frame = tk.Frame(self.root)
        self.frame.pack()

        self.frLeft = tk.LabelFrame(self.frame)
        self.frLeft.grid(row=0, column=0)

        self.frRight = tk.LabelFrame(self.frame)
        self.frRight.grid(row=0, column=1, sticky=tk.N)
                
        self.entries = []
        for r in range(9):
            ex = []
            for c in range(9):
                e = tk.Entry(self.frLeft, width=2)
                e.grid(row=r, column=c)
                ex.append(e)
            self.entries.append(ex)

        self.time = tk.StringVar()
        self.update = tk.BooleanVar()
        self.findall = tk.BooleanVar()
        
        self.lblTime = tk.Label(self.frame, textvariable=self.time)
        self.lblTime.grid(row=1, columnspan=2)
        self.time.set('suji wa dokushin ni kagiru')
        
        self.edtGivens = tk.Entry(self.frRight, width=2)
        self.edtGivens.insert(tk.END, '23')
        self.edtGivens.grid(row=1, column=0, sticky=tk.E)
        
        self.btnRandom = tk.Button(self.frRight, text="Random", command=self.onRandom)
        self.btnRandom.grid(row=1, column=1, sticky=tk.EW)

        self.btnEmpty = tk.Button(self.frRight, text="Empty", command=self.onEmpty)
        self.btnEmpty.grid(row=2, column=0, sticky=tk.EW)

        self.btnRestore = tk.Button(self.frRight, text="Restore", command=self.onRestore)
        self.btnRestore.grid(row=2, column=1, sticky=tk.EW)

        self.btnNext = tk.Button(self.frRight, text="Next", command=self.onNext)
        self.btnNext.grid(row=3, column=0, sticky=tk.EW)

        self.btnPrevious = tk.Button(self.frRight, text="Previous", command=self.onPrevious)
        self.btnPrevious.grid(row=3, column=1, sticky=tk.EW)
        
        self.chkFindAll = tk.Checkbutton(self.frRight, text="Find all", command=self.onFindAll, variable=self.findall)
        self.chkFindAll.grid(row=6, column=1, sticky=tk.EW)
        
        self.chkUpdate = tk.Checkbutton(self.frRight, text="Update", command=self.onUpdate, variable=self.update)
        self.chkUpdate.grid(row=7, column=1, sticky=tk.EW)

        self.btnStop = tk.Button(self.frRight, text="Stop", command=self.onStop)
        self.btnStop.grid(row=7, column=0, sticky=tk.EW)

        self.btnSolve = tk.Button(self.frRight, text="Solve", command=self.onSolve)
        self.btnSolve.grid(row=8, column=0, sticky=tk.EW, columnspan=2)
        
    def onUpdate(self):
        self.board.updatefunc = self.update.get() \
            and self.scatterBoard \
            or None

    def onRestore(self):
        self.board.copy(self.restore)
        self.scatterBoard()
    
    def onNext(self):
        if self.current == None and len(self.board.results) > 0:
            self.current = 0
        elif (self.current + 1) < len(self.board.results):
            self.current += 1
        else:
            return
        self.board.copy(self.board.results[self.current])
        self.scatterBoard()
    
    def onPrevious(self):
        if self.current == None and len(self.board.results) > 0:
            self.current = len(self.board.results) - 1
        elif self.current > 0:
#.........这里部分代码省略.........
开发者ID:szopenfx,项目名称:code,代码行数:103,代码来源:sudoku.py


注:本文中的board.Board.copy方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。