X-Git-Url: https://git.ucc.asn.au/?p=progcomp2013.git;a=blobdiff_plain;f=qchess%2Fsrc%2Fmain.py;h=f52cad083ea372490af83a4cb104625cc667c890;hp=7e862a9cf54cea4ea98b50c93640dbdbde990d3f;hb=df2c20df9b55fd3ab24c494d745a260662f1da67;hpb=c0c346f95a6d19d8967928aeeeb4937e1a99f2f4 diff --git a/qchess/src/main.py b/qchess/src/main.py index 7e862a9..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 + ip = None + port = 4562 if len(s) > 1: - address = s[1] - return NetworkReceiver(colour, address) + 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,23 @@ def main(argv): sys.stderr.write(sys.argv[0] + " : Graphics window closed before players chosen\n") return 45 - - # Wrap NetworkSender players around original players if necessary - for i in range(len(players)): - if isinstance(players[i], NetworkReceiver): - players[i].board = board # Network players need direct access to the board - for j in range(len(players)): - if j == i: + 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 - if isinstance(players[j], NetworkSender) or isinstance(players[j], NetworkReceiver): - continue - players[j] = NetworkSender(players[j], players[i].address) - players[j].board = board - - # Connect the networked players + players[i] = NetworkPlayer(old[i].colour, p.network, old[i]) + for p in players: - if isinstance(p, NetworkSender) or isinstance(p, NetworkReceiver): - if graphics != None: - graphics.board.display_grid(graphics.window, graphics.grid_sz) - graphics.message("Connecting to " + p.colour + " player...") - 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 if agent_timeout > 0: