def initialize(board, robots): for robot, url in robots: robot.robots = map(lambda r: r[0].position, robots) robot.allowedMoves = board.getAllowedMoves(robot.position) try: get_move(url, robot) except ValueError: pass except httplib.BadStatusLine: pass
def move(board, robot, robots, statistics, url): robot.robots = map(lambda r: r[0].position, robots) robot.allowedMoves = board.getAllowedMoves(robot.position) newPosition, newSpeed, newVelocity = get_move(url, robot) board.moveRobot(robot.position, newPosition, newSpeed, newVelocity) if robot.position != newPosition or robot.position not in robot.destination: statistics[robot.id] = statistics.get(robot.id, 0) + 1 robot.setOwnPosition(newPosition) robot.setVelocity(newVelocity) robot.setSpeed(newSpeed)
#board = Board(config.readline().strip('\n'), visualize) # board = SimplePhysicsBoard(config.readline().strip('\n'), visualize) # board = PhysicsBoard(config.readline().strip('\n'), 'board', 4, 2, 4, visualize) board = NoPhysicsBoard(config.readline().strip('\n'), visualize) statistics = dict() robots = parse_config(board, config) shortest_paths = calculate_shortest_path_length(map(lambda r: r[0], robots), board) initialize(board, robots) print "initialized" while shouldContinue(robots): # print map(lambda t: t[0].position, robots) moves = [] for robot, url in robots: robot.robots = map(lambda r: r[0].position, robots) robot.allowedMoves = board.getAllowedMoves(robot.position) newPosition, newSpeed, newVelocity = get_move(url, robot) moves.append((robot, newPosition, newSpeed, newVelocity)) for robot, newPosition, newSpeed, newVelocity in moves: board.moveRobot(robot.position, newPosition) if robot.position != newPosition or robot.position not in robot.destination: statistics[robot.id] = statistics.get(robot.id, 0) + 1 robot.setOwnPosition(newPosition) robot.setVelocity(newVelocity) robot.setSpeed(newSpeed) if visualize: sleep(0.5) board.refreshBoard() print shortest_paths print statistics print calculate__metric(shortest_paths, statistics) if save: