Work on cgi bin stuff
[progcomp2013.git] / qchess / src / player.py
index d0f6cfb..fb6cbcd 100644 (file)
@@ -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)

UCC git Repository :: git.ucc.asn.au