X-Git-Url: https://git.ucc.asn.au/?p=progcomp2013.git;a=blobdiff_plain;f=qchess%2Fsrc%2Fplayer.py;h=0cc56c2f9d57ea28fdf258f1dc90016c2e128e32;hp=0a4ddd6c971453cab68011061b92c6193ddae0e4;hb=3decbfd61b59ee2611700e7fa96368e02f643d4d;hpb=a238aa7acac990bae67644d1dc7f518ce3e2e8c6 diff --git a/qchess/src/player.py b/qchess/src/player.py index 0a4ddd6..0cc56c2 100644 --- a/qchess/src/player.py +++ b/qchess/src/player.py @@ -18,6 +18,9 @@ class Player(): def update(self, result): pass + def reset_board(self, s): + pass + # Player that runs from another process class ExternalAgent(Player): @@ -85,6 +88,12 @@ class ExternalAgent(Player): raise Exception("GIBBERISH \"" + str(line) + "\"") return result + def reset_board(self, s): + self.send_message("BOARD") + for line in s.split("\n"): + self.send_message(line.strip(" \r\n")) + self.send_message("END BOARD") + def quit(self, final_result): try: self.send_message("QUIT " + final_result) @@ -167,6 +176,9 @@ class InternalAgent(Player): self.board.update(result) self.board.verify() + def reset_board(self, s): + self.board.reset_board(s) + def quit(self, final_result): pass @@ -218,6 +230,14 @@ def run_agent(agent): #sys.stderr.write(sys.argv[0] + " : Quitting\n") agent.quit(" ".join(line.split(" ")[1:])) # Quits the game break + elif line.split(" ")[0] == "BOARD": + s = "" + line = sys.stdin.readline().strip(" \r\n") + while line != "END BOARD": + s += line + "\n" + line = sys.stdin.readline().strip(" \r\n") + agent.board.reset_board(s) + else: agent.update(line) # Updates agent.board return 0