class Runner: def __init__(self): if sys.argv.__len__() == 4: self.remote_process_client = RemoteProcessClient(sys.argv[1], int(sys.argv[2])) self.token = sys.argv[3] else: self.remote_process_client = RemoteProcessClient("127.0.0.1", 31001) self.token = "0000000000000000" def run(self): try: self.remote_process_client.write_token_message(self.token) self.remote_process_client.write_protocol_version_message() self.remote_process_client.read_team_size_message() game = self.remote_process_client.read_game_context_message() strategy = MyStrategy() while True: player_context = self.remote_process_client.read_player_context_message() if player_context is None: break player = player_context.player if player is None: break move = Move() strategy.move(player, player_context.world, game, move) self.remote_process_client.write_move_message(move) finally: self.remote_process_client.close()
class Runner: def __init__(self): if sys.argv.__len__() == 4: self.remote_process_client = RemoteProcessClient(sys.argv[1], int(sys.argv[2])) self.token = sys.argv[3] else: for _ in xrange(20): try: self.remote_process_client = RemoteProcessClient("127.0.0.1", 31001) except socket.error as ex: if ex.errno == ERRNO_REFUSED: time.sleep(0.1) continue raise else: break self.token = "0000000000000000" def run(self): try: self.remote_process_client.write_token_message(self.token) team_size = self.remote_process_client.read_team_size_message() self.remote_process_client.write_protocol_version_message() game = self.remote_process_client.read_game_context_message() strategies = [] for _ in xrange(team_size): strategies.append(MyStrategy()) while True: player_context = self.remote_process_client.read_player_context_message() if player_context is None: break player_cars = player_context.cars if player_cars is None or player_cars.__len__() != team_size: break moves = [] for car_index in xrange(team_size): player_car = player_cars[car_index] move = Move() moves.append(move) strategies[player_car.teammate_index].move(player_car, player_context.world, game, move) self.remote_process_client.write_moves_message(moves) except socket.error as ex: if ex.errno != ERRNO_RESET: raise except KeyboardInterrupt: pass finally: self.remote_process_client.close()
class Runner: def __init__(self): if sys.argv.__len__() == 4: self.remote_process_client = RemoteProcessClient( sys.argv[1], int(sys.argv[2])) self.token = sys.argv[3] elif sys.argv.__len__() == 2: self.remote_process_client = RemoteProcessClient( '127.0.0.1', int(sys.argv[1])) self.token = "0000000000000000" else: self.remote_process_client = RemoteProcessClient( "127.0.0.1", 31001) self.token = "0000000000000000" def run(self): try: self.remote_process_client.write_token_message(self.token) team_size = self.remote_process_client.read_team_size_message() self.remote_process_client.write_protocol_version_message() game = self.remote_process_client.read_game_context_message() strategies = [] for strategy_index in range(team_size): strategies.append(MyStrategy()) while True: player_context = self.remote_process_client.read_player_context_message( ) if player_context is None: break player_hockeyists = player_context.hockeyists if player_hockeyists is None or player_hockeyists.__len__( ) != team_size: break moves = [] for hockeyist_index in range(team_size): player_hockeyist = player_hockeyists[hockeyist_index] move = Move() moves.append(move) strategies[player_hockeyist.teammate_index].move( player_hockeyist, player_context.world, game, move) self.remote_process_client.write_moves_message(moves) finally: self.remote_process_client.close()
class Runner: def __init__(self): if sys.argv.__len__() == 4: self.remote_process_client = RemoteProcessClient(sys.argv[1], int(sys.argv[2])) self.token = sys.argv[3] elif sys.argv.__len__() == 2: self.remote_process_client = RemoteProcessClient('127.0.0.1', int(sys.argv[1])) self.token = "0000000000000000" else: self.remote_process_client = RemoteProcessClient("127.0.0.1", 31001) self.token = "0000000000000000" def run(self): try: self.remote_process_client.write_token_message(self.token) team_size = self.remote_process_client.read_team_size_message() self.remote_process_client.write_protocol_version_message() game = self.remote_process_client.read_game_context_message() strategies = [] for strategy_index in range(team_size): strategies.append(MyStrategy()) while True: player_context = self.remote_process_client.read_player_context_message() if player_context is None: break player_hockeyists = player_context.hockeyists if player_hockeyists is None or player_hockeyists.__len__() != team_size: break moves = [] for hockeyist_index in range(team_size): player_hockeyist = player_hockeyists[hockeyist_index] move = Move() moves.append(move) strategies[player_hockeyist.teammate_index].move(player_hockeyist, player_context.world, game, move) self.remote_process_client.write_moves_message(moves) finally: self.remote_process_client.close()
class Runner: def __init__(self): if sys.argv.__len__() == 4: self.remote_process_client = RemoteProcessClient(sys.argv[1], int(sys.argv[2])) self.token = sys.argv[3] else: self.remote_process_client = RemoteProcessClient("127.0.0.1", 31001) self.token = "0000000000000000" def run(self, pid=None): try: self.remote_process_client.write_token_message(self.token) self.remote_process_client.write_protocol_version_message() team_size = self.remote_process_client.read_team_size_message() game = self.remote_process_client.read_game_context_message() strategies = [] for _ in range(team_size): strategies.append(MyStrategy()) while True: player_context = self.remote_process_client.read_player_context_message() if player_context is None: break player_wizards = player_context.wizards if player_wizards is None or player_wizards.__len__() != team_size: break moves = [] for wizard_index in range(team_size): player_wizard = player_wizards[wizard_index] move = Move() moves.append(move) strategies[wizard_index].move(player_wizard, player_context.world, game, move) self.remote_process_client.write_moves_message(moves) finally: self.remote_process_client.close() if pid: os.kill(pid, signal.SIGTERM)
class Runner: def __init__(self): self.reload = True self.freeze = False self.debug_client = DebugClient() self.input_event = EventEmitter() self.strategies = [] if sys.argv.__len__() == 4: self.remote_process_client = RemoteProcessClient( sys.argv[1], int(sys.argv[2])) self.token = sys.argv[3] else: self.remote_process_client = RemoteProcessClient( "127.0.0.1", 31001) self.token = "0000000000000000" def run(self): try: self.remote_process_client.write_token_message(self.token) self.remote_process_client.write_protocol_version_message() team_size = self.remote_process_client.read_team_size_message() game = self.remote_process_client.read_game_context_message() self.strategies = [] self.start_input() world_time = 0 while True: while self.freeze: time.sleep(0.5) if self.reload: print(f'actually reloading at {world_time}') for module in [ x for x in sys.modules if x.startswith('aicup2016') ]: del sys.modules[module] from aicup2016.strategy import Strategy self.strategies = [] for _ in range(team_size): self.strategies.append( Strategy(debug_client=self.debug_client, input_event=self.input_event)) self.reload = False player_context = self.remote_process_client.read_player_context_message( ) if player_context is None: break world_time = player_context.world.tick_index player_wizards = player_context.wizards if player_wizards is None or player_wizards.__len__( ) != team_size: break moves = [] for wizard_index in range(team_size): player_wizard = player_wizards[wizard_index] move = Move() moves.append(move) self.strategies[wizard_index].move(player_wizard, player_context.world, game, move) self.remote_process_client.write_moves_message(moves) finally: self.remote_process_client.close() def start_input(self): Thread(target=self.worker, daemon=False).start() def worker(self): while True: self.handle_input(input()) def handle_input(self, input): if input == 'r': self.reload = True print('reloading') elif input == 'p': self.freeze = not self.freeze print('pause') else: self.input_event.emit(input)