X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=qchess%2Fsrc%2Fplayer.py;h=fb6cbcdca0e5a19661f4e23d1729f54d8f065534;hb=5d8f204c6bde7cd0f4534e0904d20ad26df4ef5e;hp=d0f6cfb8d8c66c16e989666759b933283cb97f4c;hpb=5287b4f869be70ddae4b59a44c448be33f95ccda;p=progcomp2013.git diff --git a/qchess/src/player.py b/qchess/src/player.py index d0f6cfb..fb6cbcd 100644 --- a/qchess/src/player.py +++ b/qchess/src/player.py @@ -16,10 +16,61 @@ class Player(): self.colour = colour def update(self, result): - pass + return result def reset_board(self, s): pass + + def __str__(self): + return self.name + "<"+str(self.colour)+">" + + def base_player(self): + return self + +# Player that runs through a fifo +class FifoPlayer(Player): + def __init__(self, name, colour): + Player.__init__(self, name, colour) + os.mkfifo(self.name+".in") + os.mkfifo(self.name+".out") + + + + + + def update(self, result): + sys.stderr.write("update fifo called\n") + self.fifo_out = open(self.name+".out", "w") + self.fifo_out.write(result +"\n") + self.fifo_out.close() + return result + + def select(self): + sys.stderr.write("select fifo called\n") + self.fifo_out = open(self.name+".out", "w") + self.fifo_out.write("SELECT?\n") + self.fifo_out.close() + self.fifo_in = open(self.name+".in", "r") + s = map(int, self.fifo_in.readline().strip(" \r\n").split(" ")) + self.fifo_in.close() + return s + + def get_move(self): + sys.stderr.write("get_move fifo called\n") + self.fifo_out = open(self.name+".out", "w") + self.fifo_out.write("MOVE?\n") + self.fifo_out.close() + self.fifo_in = open(self.name+".in", "r") + s = map(int, self.fifo_in.readline().strip(" \r\n").split(" ")) + self.fifo_in.close() + return s + + def quit(self, result): + self.fifo_out = open(self.name+".out", "w") + self.fifo_out.write(result + "\n") + self.fifo_out.close() + os.remove(self.name+".in") + os.remove(self.name+".out") # Player that runs from another process class ExternalAgent(Player): @@ -76,7 +127,7 @@ class ExternalAgent(Player): def update(self, result): #print "Update " + str(result) + " called for AgentPlayer" self.send_message(result) - + return result def get_move(self): @@ -162,6 +213,7 @@ class HumanPlayer(Player): pass else: sys.stdout.write(result + "\n") + return result # Default internal player (makes random moves) @@ -177,7 +229,8 @@ class InternalAgent(Player): def update(self, result): self.board.update(result) - self.board.verify() + #self.board.verify() + return result def reset_board(self, s): self.board.reset_board(s)