X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=qchess%2Fsrc%2Fmain.py;h=3bb80f2ba2bb3a653448df59f87ef95118f83bc3;hb=b62f274ce80bc47fd5bd684cc4157860b8ad65f4;hp=ea50a1fec2921d2c7c33931a76044092003c799c;hpb=573931ea67fa99135eca781ff814933e04df4308;p=progcomp2013.git diff --git a/qchess/src/main.py b/qchess/src/main.py index ea50a1f..3bb80f2 100644 --- a/qchess/src/main.py +++ b/qchess/src/main.py @@ -20,6 +20,7 @@ sleep_timeout = None [game, graphics] = [None, None] def make_player(name, colour): + debug(name) if name[0] == '@': if name[1:] == "human": return HumanPlayer(name, colour) @@ -60,7 +61,11 @@ def make_player(name, colour): sys.stderr.write(sys.argv[0] + " : Can't find an internal agent matching \"" + s[1] + "\"\n") sys.stderr.write(sys.argv[0] + " : Choices are: " + str(map(lambda e : e[0], internal_agents)) + "\n") return None - + if s[0] == "fifo": + if len(s) > 1: + return FifoPlayer(s[1], colour) + else: + return FifoPlayer(str(os.getpid())+"."+colour, colour) else: return ExternalAgent(name, colour) @@ -84,6 +89,7 @@ def main(argv): global sleep_timeout + retry_illegal = False server_addr = None max_moves = None @@ -105,17 +111,7 @@ def main(argv): i += 1 arg = argv[i] if arg[0] != '-': - p = make_player(arg, colour) - if not isinstance(p, Player): - sys.stderr.write(sys.argv[0] + " : Fatal error creating " + colour + " player\n") - return 100 - players.append(p) - if colour == "white": - colour = "black" - elif colour == "black": - pass - else: - sys.stderr.write(sys.argv[0] + " : Too many players (max 2)\n") + players.append(arg) continue # Option parsing goes here @@ -181,7 +177,8 @@ def main(argv): sleep_timeout = -1 else: sleep_timeout = float(arg[2:].split("=")[1]) - + elif (arg[1] == '-' and arg[2:] == "retry-illegal"): + retry_illegal = not retry_illegal elif (arg[1] == '-' and arg[2:] == "help"): # Help os.system("less data/help.txt") # The best help function @@ -195,9 +192,27 @@ def main(argv): if server_addr == True: return dedicated_server() else: - return client(server_addr) + if len(players) > 1: + sys.stderr.write("Only a single player may be provided when --server is used\n") + return 1 + if len(players) == 1: + return client(server_addr, players[0]) + else: + return client(server_addr) + + for i in xrange(len(players)): + p = make_player(players[i], colour) + if not isinstance(p, Player): + sys.stderr.write(sys.argv[0] + " : Fatal error creating " + colour + " player\n") + return 100 + players[i] = p + if colour == "white": + colour = "black" + elif colour == "black": + pass + else: + sys.stderr.write(sys.argv[0] + " : Too many players (max 2)\n") - # Create the board # Construct a GameThread! Make it global! Damn the consequences! @@ -222,6 +237,7 @@ def main(argv): board = Board(style) board.max_moves = max_moves game = GameThread(board, players) + game.retry_illegal = retry_illegal @@ -244,6 +260,7 @@ def main(argv): server_addr = graphics.SelectServer() if server_addr != None: + pygame.quit() # Time to say goodbye if server_addr == True: return dedicated_server() else: