X-Git-Url: https://git.ucc.asn.au/?p=progcomp2013.git;a=blobdiff_plain;f=qchess%2Fsrc%2Fmain.py;h=f52cad083ea372490af83a4cb104625cc667c890;hp=a4fc574bdc8dae9edbd655f70d26a4b9cb3c6e75;hb=df2c20df9b55fd3ab24c494d745a260662f1da67;hpb=f7cca7e99d39a6b04b605e988d182a9b8a9e4be3 diff --git a/qchess/src/main.py b/qchess/src/main.py index a4fc574..f52cad0 100644 --- a/qchess/src/main.py +++ b/qchess/src/main.py @@ -25,10 +25,18 @@ def make_player(name, colour): return HumanPlayer(name, colour) s = name[1:].split(":") if s[0] == "network": - address = (None, 4562) + ip = None + port = 4562 if len(s) > 1: - address = (s[1], 4562) - return Network(colour, address, baseplayer = None) + ip = s[1] + + if ip == None: + if colour == "black": + port = 4563 + elif colour == "white": + port = 4563 + + return NetworkPlayer(colour, Network((ip, port)), None) if s[0] == "internal": import inspect @@ -217,27 +225,22 @@ def main(argv): sys.stderr.write(sys.argv[0] + " : Graphics window closed before players chosen\n") return 45 - - # Wrap Networks players around original players if necessary - for i in range(len(players)): - if isinstance(players[i], Network) and players[i].baseplayer == None: - for j in range(len(players)): - if i == j: + old = players[:] + for p in old: + if isinstance(p, NetworkPlayer): + for i in range(len(old)): + if old[i] == p or isinstance(old[i], NetworkPlayer): continue - - port = players[i].address[1] - if players[j].colour == "black" and players[i].colour == "white": - pass - elif players[j].colour == "white" and players[i].colour == "black": - port -= 1 - players[j] = Network(players[j].colour, (players[i].address[0], port), baseplayer = players[j]) - - + players[i] = NetworkPlayer(old[i].colour, p.network, old[i]) + for p in players: - if isinstance(p, Network): - if p.address[0] != None: - time.sleep(0.2) - p.connect() + debug(str(p)) + if isinstance(p, NetworkPlayer): + p.board = game.board + if not p.network.connected: + if not p.network.server: + time.sleep(0.2) + p.network.connect() # If using windows, select won't work; use horrible TimeoutPlayer hack