Пример #1
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('players', nargs='+')
    parser.add_argument('--seed', type=int, default=None)
    parser.add_argument('-o',
                        '--output',
                        type=argparse.FileType('w'),
                        default=sys.stdout)
    parser.add_argument('-m',
                        '--map',
                        choices=['empty', 'blocks', 'cave'],
                        default='empty')
    parser.add_argument('--long', action='store_true')
    args = parser.parse_args()

    bots = []
    for player in args.players:
        with open(player, 'r') as f:
            code = f.read().strip()
            parsed = []
            for i in range(0, len(code), 4):
                if i + 4 <= len(code):
                    parsed.append(int(code[i:i + 4], 16))
            bots.append(parsed)

    map_generator = map.Map if args.map == 'empty' \
        else map.RocksMap if args.map == 'blocks' \
        else map.CaveMap
    world = World(bots, map_generator, args.seed)

    if args.long:
        World.ENERGY_PER_TURN = 1000
        World.STARTING_ENERGY = 1000000

    meta = {
        'players': args.players,
        'seed': args.seed if args.seed is not None else -1,
        'map': args.map
    }

    args.output.write(world.run_with_log(1000, meta))