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
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: