class TreeNode: def __init__(self, parent, action, evaluator, conf): if parent is None: self.go = Go(board_size=conf.BOARD_SIZE, komi=conf.KOMI) else: self.go = Go(copy=parent.go) if action == conf.PASS: self.go.pass_() else: self.go.play(*divmod(action, conf.BOARD_SIZE)) self.parent = parent self.children = [None] * conf.NUM_ACTIONS self.action = action self.n = np.zeros(conf.NUM_ACTIONS, dtype=np.int) self.w = np.zeros(conf.NUM_ACTIONS, dtype=np.float32) self.p, self.v = predict(evaluator, self, conf, random_trans=True)
def test_play_game(self): go = Go(size=11) go.play(5, 5) expected_board = '\n'.join([ '| |', '| |', '| |', '| |', '| |', '| W |', '| |', '| |', '| |', '| |', '| |' ]) self.assertEqual(str(go), expected_board, '\n' + repr(str(go)) + '\n' + repr(expected_board)) go.play(4, 5) self.assertEqual( str(go), '\n'.join([ '| |', '| |', '| |', '| |', '| B |', '| W |', '| |', '| |', '| |', '| |', '| |' ]), str(go)) with self.assertRaises(GoException): go.play(4, 5) self.assertEqual( str(go), '\n'.join([ '| |', '| |', '| |', '| |', '| B |', '| W |', '| |', '| |', '| |', '| |', '| |' ]), str(go)) go.play(3, 5) expected_board = '\n'.join([ '| |', '| |', '| |', '| W |', '| B |', '| W |', '| |', '| |', '| |', '| |', '| |' ]) self.assertEqual(str(go), expected_board, str(go)) go.play(5, 6) expected_board = '\n'.join([ '| |', '| |', '| |', '| W |', '| B |', '| WB |', '| |', '| |', '| |', '| |', '| |' ]) self.assertEqual(str(go), expected_board, str(go)) go.play(4, 6) self.assertEqual( str(go), '\n'.join([ '| |', '| |', '| |', '| W |', '| BW |', '| WB |', '| |', '| |', '| |', '| |', '| |' ]), str(go)) go.play(5, 4) self.assertEqual( str(go), '\n'.join([ '| |', '| |', '| |', '| W |', '| BW |', '| BWB |', '| |', '| |', '| |', '| |', '| |' ]), str(go)) go.play(4, 4) self.assertEqual( str(go), '\n'.join([ '| |', '| |', '| |', '| W |', '| WWW |', '| BWB |', '| |', '| |', '| |', '| |', '| |' ]), str(go))