From ead5aa83cd311e0e4e4605b0deb9b14a0f393112 Mon Sep 17 00:00:00 2001 From: mcgrady00h <281130306@qq.com> Date: Tue, 28 Nov 2017 14:47:30 +0800 Subject: [PATCH] check valid position --- GTP/.game.py.swp | Bin 20480 -> 0 bytes GTP/.test.py.swp | Bin 12288 -> 12288 bytes GTP/game.py | 57 +++++++++++++++++++++++++++++++++++++++++++---- GTP/test.py | 36 +++++++++++++++++++++++++----- 4 files changed, 83 insertions(+), 10 deletions(-) delete mode 100644 GTP/.game.py.swp diff --git a/GTP/.game.py.swp b/GTP/.game.py.swp deleted file mode 100644 index 4ad0ba67b4dcd2924fc518e0541320ba56605133..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 diff --git a/GTP/game.py b/GTP/game.py index c5d58fa..7f1b4c6 100644 --- a/GTP/game.py +++ b/GTP/game.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # vim:fenc=utf-8 # $File: game.py -# $Date: Tue Nov 28 01:1540 2017 +0800 +# $Date: Tue Nov 28 14:4726 2017 +0800 # $Author: renyong15 © # @@ -43,8 +43,43 @@ class Executor: return True,block - def _check_qi(self, vertex): - pass + def _is_qi(self, color, vertex): + nei = self._neighbor(vertex) + for n in nei: + if self.game.board[self.game._flatten(n)] == utils.EMPTY: + return True + + self.game.board[self.game._flatten(vertex)] = color + for n in nei: + if self.game.board[self.game._flatten(n)] == utils.another_color(color): + can_kill,block = self._find_block(n) + if can_kill: + self.game.board[self.game._flatten(vertex)] = utils.EMPTY + return True + + ### can not suicide + can_kill,block = self._find_block(vertex) + if can_kill: + self.game.board[self.game._flatten(vertex)] = utils.EMPTY + return False + + self.game.board[self.game._flatten(vertex)] = utils.EMPTY + return True + + + def _check_global_isomorphous(self, color, vertex): + ##backup + _board = copy.copy(self.game.board) + self.game.board[self.game._flatten(vertex)] = color + self._process_board(color, vertex) + if self.game.board in self.game.history: + res = True + else: + res = False + + self.game.board = _board + return res + def _in_board(self, vertex): x, y = vertex @@ -74,16 +109,30 @@ class Executor: def is_valid(self, color, vertex): + ### in board if not self._in_board(vertex): return False + + ### already have stone + if not self.game.board[self.game._flatten(vertex)] == utils.EMPTY: + return False + + ### check if it is qi + if not self._is_qi(color, vertex): + return False + + + if self._check_global_isomorphous(color, vertex): + return False + return True def do_move(self, color, vertex): if not self.is_valid(color, vertex): return False - self.game.history.append(copy.copy(self.game.board)) self.game.board[self.game._flatten(vertex)] = color self._process_board(color,vertex) + self.game.history.append(copy.copy(self.game.board)) return True diff --git a/GTP/test.py b/GTP/test.py index 0574ce0..0b8d4df 100644 --- a/GTP/test.py +++ b/GTP/test.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # vim:fenc=utf-8 # $File: test.py -# $Date: Tue Nov 28 01:0627 2017 +0800 +# $Date: Tue Nov 28 14:4717 2017 +0800 # $Author: renyong15 © # @@ -44,11 +44,11 @@ print(res) res = e.run_cmd('8 genmove BLACK') print(res) -g.show_board() +#g.show_board() print(g.check_valid((10, 9))) print(g.executor._neighbor((1,1))) print(g.do_move(utils.WHITE, (4, 6))) -g.show_board() +#g.show_board() res = e.run_cmd('play BLACK L10') @@ -88,7 +88,7 @@ print(res) res = e.run_cmd('play BLACK N12') print(res) -g.show_board() +#g.show_board() res = e.run_cmd('play BLACK P16') res = e.run_cmd('play BLACK P17') @@ -97,7 +97,6 @@ res = e.run_cmd('play BLACK P19') res = e.run_cmd('play BLACK Q16') res = e.run_cmd('play BLACK R16') res = e.run_cmd('play BLACK S16') -res = e.run_cmd('play BLACK S19') res = e.run_cmd('play WHITE S18') res = e.run_cmd('play WHITE S17') @@ -106,12 +105,37 @@ res = e.run_cmd('play WHITE Q18') res = e.run_cmd('play WHITE Q17') res = e.run_cmd('play WHITE R18') res = e.run_cmd('play WHITE R17') +res = e.run_cmd('play BLACK S19') print(res) -g.show_board() +#g.show_board() res = e.run_cmd('play WHITE R19') g.show_board() res = e.run_cmd('play BLACK S19') +print(res) g.show_board() +res = e.run_cmd('play BLACK S19') +print(res) + + +res = e.run_cmd('play BLACK E17') +res = e.run_cmd('play BLACK F16') +res = e.run_cmd('play BLACK F18') +res = e.run_cmd('play BLACK G17') +res = e.run_cmd('play WHITE G16') +res = e.run_cmd('play WHITE G18') +res = e.run_cmd('play WHITE H17') +g.show_board() + +res = e.run_cmd('play WHITE F17') +g.show_board() + +res = e.run_cmd('play BLACK G17') +print(res) +g.show_board() + +res = e.run_cmd('play BLACK G19') +res = e.run_cmd('play BLACK G17') +g.show_board()