From: judge Date: Fri, 21 Jun 2013 11:10:27 +0000 (+0800) Subject: Trying to fix bug with fifo and network players X-Git-Url: https://git.ucc.asn.au/?p=progcomp2013.git;a=commitdiff_plain;h=1da52d4a75c75ddff22f3a67a2c06875b335e601 Trying to fix bug with fifo and network players --- diff --git a/qchess/qchess.cgi b/qchess/qchess.cgi index 4b8e34c..035dce0 100755 --- a/qchess/qchess.cgi +++ b/qchess/qchess.cgi @@ -157,13 +157,17 @@ def main(argv): elif request == "start": print "New game." args = path+"qchess.py --no-graphics" - if mode == None or mode == "bishop": - args += " @fifo:../qchess-cgi-data/"+client+" @internal:AgentBishop --log=../qchess-cgi-data/"+client+".log" - if mode == "random": + if mode == "black": + args += " @internal:AgentBishop @fifo:../qchess-cgi-data/"+client + elif mode == None or mode == "bishop": + args += " @fifo:../qchess-cgi-data/"+client+" @internal:AgentBishop" + elif mode == "random": args += " @fifo:../qchess-cgi-data/"+client+" @internal:AgentRandom" elif mode == "eigengame": args += " --server=progcomp.ucc.asn.au @fifo:../qchess-cgi-data/"+client + args += " --log=@../qchess-cgi-data/"+client+".log"; + os.system("echo '"+args+"' | at now") # subprocess.Popen(args) diff --git a/qchess/qchess.py b/qchess/qchess.py index da4cab7..1dd8691 100755 --- a/qchess/qchess.py +++ b/qchess/qchess.py @@ -722,7 +722,15 @@ class FifoPlayer(Player): Player.__init__(self, name, colour) os.mkfifo(self.name+".in") os.mkfifo(self.name+".out") - + + try: + self.fifo_out = open_fifo(self.name+".out","w", FifoPlayer.timeout) + except: + raise Exception("FIFO_TIMEOUT") + else: + self.fifo_out.write("START "+colour+"\n") + self.fifo_out.close() + @@ -2995,4 +3003,4 @@ if __name__ == "__main__": # --- main.py --- # -# EOF - created from make on Thursday 20 June 18:09:07 WST 2013 +# EOF - created from make on Friday 21 June 18:15:14 WST 2013 diff --git a/qchess/src/player.py b/qchess/src/player.py index fffa738..37cca67 100644 --- a/qchess/src/player.py +++ b/qchess/src/player.py @@ -97,7 +97,15 @@ class FifoPlayer(Player): Player.__init__(self, name, colour) os.mkfifo(self.name+".in") os.mkfifo(self.name+".out") - + + try: + self.fifo_out = open_fifo(self.name+".out","w", FifoPlayer.timeout) + except: + raise Exception("FIFO_TIMEOUT") + else: + self.fifo_out.write("START "+colour+"\n") + self.fifo_out.close() + diff --git a/web/qwebchess/js.js b/web/qwebchess/js.js index 53e9288..8099802 100644 --- a/web/qwebchess/js.js +++ b/web/qwebchess/js.js @@ -6,7 +6,7 @@ */ pieceSelected = ""; // currently selected piece -playerColour = "W"; // colour of this player +playerColour = ""; // colour of this player // Unicode representations of chess pieces pieceChar = {"W" : { "p" : "\u2659", "h" : "\u2658", "b" : "\u2657", "r" : "\u2656", "q" : "\u2655", "k" : "\u2654", "?" : "?"}, @@ -32,9 +32,9 @@ $(document).ready(function() $("#status").html("white SELECT?"); $("#start").html("Quit Game"); pieceSelected = ""; - canClick = true; + canClick = false; $.ajax({url : "/cgi-bin/qchess.cgi", data : {r : "force_quit"}, success : function() {}}); - $.ajax({url : "/cgi-bin/qchess.cgi", data : {r : "start"}}).done(function(data) {$(this).update(data)}); + $.ajax({url : "/cgi-bin/qchess.cgi", data : {r : "start", m : "black"}}).done(function(data) {$(this).update(data)}); } @@ -44,6 +44,7 @@ $(document).ready(function() $("#welcome").show(); $("#status").html("Game over"); $("#start").html("New Game"); + canClick = false; $.ajax({url : "/cgi-bin/qchess.cgi", data : {r : "quit"}, success : function() {console.log("Quit game");}}); } }); @@ -283,12 +284,25 @@ $(document).ready(function() } else switch (lines[i]) { + case "SELECT?": pieceSelected = ""; case "MOVE?": case "": case "New game.": break; + case "START white": + if (playerColour == "") + { + playerColour = "W"; + break; + } + case "START black": + if (playerColour == "") + { + playerColour = "B"; + break; + } default: alert("Game ends: " + lines[i]); gameStarted = false;