git.ucc.asn.au
/
progcomp2013.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed networking!
[progcomp2013.git]
/
qchess
/
src
/
player.py
diff --git
a/qchess/src/player.py
b/qchess/src/player.py
index
b3f0eb7
..
99d3616
100644
(file)
--- a/
qchess/src/player.py
+++ b/
qchess/src/player.py
@@
-1,7
+1,7
@@
import subprocess
import select
import platform
import subprocess
import select
import platform
-
+import re
agent_timeout = -1.0 # Timeout in seconds for AI players to make moves
# WARNING: Won't work for windows based operating systems
agent_timeout = -1.0 # Timeout in seconds for AI players to make moves
# WARNING: Won't work for windows based operating systems
@@
-16,6
+16,9
@@
class Player():
self.colour = colour
def update(self, result):
self.colour = colour
def update(self, result):
+ return result
+
+ def reset_board(self, s):
pass
# Player that runs from another process
pass
# Player that runs from another process
@@
-50,7
+53,7
@@
class ExternalAgent(Player):
if self.p.stdout in ready:
#sys.stderr.write("Reading from " + str(self.p) + " 's stdout...\n")
try:
if self.p.stdout in ready:
#sys.stderr.write("Reading from " + str(self.p) + " 's stdout...\n")
try:
- result = self.p.stdout.readline().strip("\r\n")
+ result = self.p.stdout.readline().strip("
\t
\r\n")
#sys.stderr.write("Read \'" + result + "\' from " + str(self.p) + "\n")
return result
except: # Exception, e:
#sys.stderr.write("Read \'" + result + "\' from " + str(self.p) + "\n")
return result
except: # Exception, e:
@@
-64,7
+67,8
@@
class ExternalAgent(Player):
line = self.get_response()
try:
line = self.get_response()
try:
- result = map(int, line.split(" "))
+ m = re.match("\s*(\d+)\s+(\d+)\s*", line)
+ result = map(int, [m.group(1), m.group(2)])
except:
raise Exception("GIBBERISH \"" + str(line) + "\"")
return result
except:
raise Exception("GIBBERISH \"" + str(line) + "\"")
return result
@@
-72,7
+76,7
@@
class ExternalAgent(Player):
def update(self, result):
#print "Update " + str(result) + " called for AgentPlayer"
self.send_message(result)
def update(self, result):
#print "Update " + str(result) + " called for AgentPlayer"
self.send_message(result)
-
+ return result
def get_move(self):
def get_move(self):
@@
-80,11
+84,19
@@
class ExternalAgent(Player):
line = self.get_response()
try:
line = self.get_response()
try:
- result = map(int, line.split(" "))
+ m = re.match("\s*(\d+)\s+(\d+)\s*", line)
+ result = map(int, [m.group(1), m.group(2)])
+
except:
raise Exception("GIBBERISH \"" + str(line) + "\"")
return result
except:
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)
def quit(self, final_result):
try:
self.send_message("QUIT " + final_result)
@@
-150,6
+162,7
@@
class HumanPlayer(Player):
pass
else:
sys.stdout.write(result + "\n")
pass
else:
sys.stdout.write(result + "\n")
+ return result
# Default internal player (makes random moves)
# Default internal player (makes random moves)
@@
-165,7
+178,11
@@
class InternalAgent(Player):
def update(self, result):
self.board.update(result)
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)
def quit(self, final_result):
pass
def quit(self, final_result):
pass
@@
-203,8
+220,6
@@
class AgentRandom(InternalAgent):
def run_agent(agent):
#sys.stderr.write(sys.argv[0] + " : Running agent " + str(agent) + "\n")
def run_agent(agent):
#sys.stderr.write(sys.argv[0] + " : Running agent " + str(agent) + "\n")
- colour = sys.stdin.readline().strip(" \r\n")
- agent.colour = colour
while True:
line = sys.stdin.readline().strip(" \r\n")
if line == "SELECTION?":
while True:
line = sys.stdin.readline().strip(" \r\n")
if line == "SELECTION?":
@@
-220,6
+235,14
@@
def run_agent(agent):
#sys.stderr.write(sys.argv[0] + " : Quitting\n")
agent.quit(" ".join(line.split(" ")[1:])) # Quits the game
break
#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
else:
agent.update(line) # Updates agent.board
return 0
@@
-229,7
+252,7
@@
def run_agent(agent):
class ExternalWrapper(ExternalAgent):
def __init__(self, agent):
class ExternalWrapper(ExternalAgent):
def __init__(self, agent):
- run = "python -u -c \"import sys;import os;from qchess import *;agent = " + agent.__class__.__name__ + "('" + agent.name + "','"+agent.colour+"');sys.exit(run_agent(agent))\""
+ run = "python -u -c \"import sys;import os;from qchess import *;agent = " + agent.__class__.__name__ + "('" + agent.name + "','"+agent.colour+"');sys.
stdin.readline();sys.
exit(run_agent(agent))\""
# str(run)
ExternalAgent.__init__(self, run, agent.colour)
# str(run)
ExternalAgent.__init__(self, run, agent.colour)
UCC
git Repository :: git.ucc.asn.au