Exemple #1
0
    def run(self):
        while True:
            moves = []
            self.enemies_locations = []
            self.player_sites = []

            self.game_map = getFrame()
            start_time = time.time()

            for y in range(self.game_map.height):
                for x in range(self.game_map.width):
                    if self.game_map.contents[y][x].owner != self.my_id:
                        self.enemies_locations.append(Location(x, y))
                    else:
                        self.player_sites.append(self.game_map.contents[y][x])

            self.player_sites = sorted(self.player_sites, key=lambda s: s.strength, reverse=True)

            while len(self.player_sites):
                current_site = self.player_sites.pop()
                movement = self.get_movement(current_site)
                moves.append(movement)

                if movement != STILL:
                    self.player_sites = sorted(self.player_sites, key=lambda s: s.strength, reverse=True)

                if time.time() - start_time > 0.9:
                    logging.info("AVOIDING TIMEOUT!! %d", len(self.player_sites))

                    for site in self.player_sites:
                        moves.append(Move(Location(site.x, site.y), STILL))

                    break

            sendFrame(moves)
Exemple #2
0
def main():
    state = {
        'seen_combat': False,
    }
    myID, gameMap = networking.getInit()
    networking.sendInit("Orez[Miner]")

    while True:
        gameMap = networking.getFrame()
        moves = [
            hlt.Move(
                hlt.Location(x, y),
                direction,
            ) for (x, y), direction in turn(gameMap, myID, state)
        ]
        networking.sendFrame(moves)
Exemple #3
0
                        filename="bot.log")
    myID, gameMap = getInit()

    run_id = 0
    if len(sys.argv) > 1:
        run_id = int(sys.argv[1])
        model = load_model("data/qmodel_%s.h5" %
                           (run_id - 1))  # load previous model
    else:
        model = get_new_model()

    sendInit('joelator')
    logging.info("My ID: %s", myID)

    turn = 0
    frame = getFrame()
    stack = frame_to_stack(frame, myID)
    allQs = []
    # Only pick one random position for easier q-learning
    while True:
        position = random.choice(np.transpose(np.nonzero(stack[0])))
        area_inputs = stack_to_input(stack, position)
        possible_moves, Qinputs, Qs = predict_for_pos(area_inputs, model)
        # Epsilon greedy strategy
        if random.random() < 0.1:
            index = np.random.choice(range(len(possible_moves)))
        else:
            index = np.argmax(Qs)
        Q = Qs[index]
        move = possible_moves[index]
        allQs.append(Q)
Naive bot
"""
#!/usr/bin/python3
from hlt import (Location, Move, CARDINALS, STILL)
from networking import (getInit, sendInit, getFrame, sendFrame)
from helper import (getStrength, getTerritory, getProduction)

sendInit('zyzo')
FILE_WRITER = open('log-ANALYTICS.log', 'w')
FILE_WRITER.write('')
FILE_WRITER.close()

MY_ID, GAME_MAP = getInit()
while True:
    MOVES = []
    GAME_MAP = getFrame()
    FILE_WRITER = open('log-analytics.log', 'a')
    ANALYTICS = {'s': 0, 'a': 0, 'm': 0}
    for y in range(GAME_MAP.height):
        for x in range(GAME_MAP.width):
            curLoc = Location(x, y)
            if GAME_MAP.getSite(curLoc).owner == MY_ID:
                movedPiece = False
                for d in CARDINALS:
                    if (GAME_MAP.getSite(curLoc, d).owner != MY_ID
                            and GAME_MAP.getSite(curLoc, d).strength <
                            GAME_MAP.getSite(curLoc).strength):
                        MOVES.append(Move(curLoc, d))
                        ANALYTICS['a'] += 1
                        movedPiece = True
                        break