def getShipMove(ship,sy): bestSpot = [] best = 0 amount = 820 if game_map[game_map.normalize(ship.position)].halite_amount < constants.MAX_HALITE / 35 and (ship.halite_amount < amount ): for i in Direction.get_all_cardinals(): if(game_map[ship.position.directional_offset(i)].is_occupied == False): bestSpot.append(game_map[ship.position.directional_offset(i)]) for i in bestSpot: if(i.halite_amount > best): #bestDir = game_map.naive_navigate(ship, i.position) best = i.halite_amount bestDir = game_map.get_unsafe_moves(ship.position, i.position)[0] if best < 50: bestDir = Direction.convertStr(random.choice(["n", "s","e","w"])) place = game_map[ship.position.directional_offset((bestDir))].position inPicked = False for i in placepicked: if (i.__eq__(place)): inPicked = True if inPicked == False and game_map[ship.position.directional_offset(bestDir)].is_occupied == False: placepicked.append(ship.position.directional_offset(bestDir)) command_queue.append((ship.move(bestDir))) else: placepicked.append(ship.position) command_queue.append(ship.stay_still()) #returnCommand = (ship.move(bestDir)) else: if ship.is_full or ship.halite_amount > amount: #command_queue.append(game_map.get_unsafe_moves(ship.position, Shipyard)[0]) placeVal = game_map[ship.position.directional_offset(game_map.get_unsafe_moves(ship.position, Shipyard)[0])].position inPicked = False for e in placepicked: if (placeVal.__eq__(e)): inPicked = True if inPicked == True: command_queue.append(ship.stay_still()) placepicked.append(ship.position) else: command_queue.append(ship.move(game_map.naive_navigate(ship, Shipyard))) placepicked.append(placeVal) else: command_queue.append(ship.stay_still()) placepicked.append(ship.position)
def getShipMove(ship, sy): cleanPlaces(targetArea) bestSpot = [] best = 0 amount = 700 options = 0 if ship.position == Shipyard: openSpot = False for i in Direction.get_all_cardinals(): if (game_map[ship.position.directional_offset(i)].is_occupied == False): openSpot = True if openSpot == False: bestDir = Direction.North placepicked.append(ship.position.directional_offset(bestDir)) command_queue.append(ship.move(bestDir)) return 0 #< constants.MAX_HALITE / 35 if (game_map[ship.position].halite_amount <= 50 and (ship.halite_amount < amount)) or (Shipyard.__eq__(ship.position)): #print("WOOOOOOLK") for i in Direction.get_all_cardinals(): if (game_map[ship.position.directional_offset(i)].is_occupied == False): bestSpot.append(game_map[ship.position.directional_offset(i)]) options += 1 for i in bestSpot: if (i.halite_amount >= best): #bestDir = game_map.naive_navigate(ship, i.position) best = i.halite_amount bestDir = game_map.get_unsafe_moves(ship.position, i.position)[0] if best < 100: if len(targetArea) == 0: pos = [] for i in Direction.get_all_cardinals(): found = False if (game_map[ship.position.directional_offset( i)].is_occupied == False and game_map[ship.position.directional_offset(i)]. position.__ne__(game_map[me.shipyard].position)): pos.append(i) #bestDir = (i) found = True bestDir = random.choice(pos) if found == False: bestDir = (0, 0) placepicked.append(ship.position.directional_offset(bestDir)) command_queue.append(ship.move(bestDir)) return 0 else: bestDir = Direction.convertStr(getClosestSpot(ship)) if game_map[ship.position.directional_offset( bestDir)].is_occupied == False and not game_map[ ship.position.directional_offset( bestDir)].position in placepicked: placepicked.append( ship.position.directional_offset(bestDir)) command_queue.append(ship.move(bestDir)) return 0 bestDir = (0, 0) place = game_map[ship.position.directional_offset((bestDir))].position inPicked = False for i in placepicked: if (i.__eq__(place)): inPicked = True if inPicked == False and game_map[ship.position.directional_offset( bestDir)].is_occupied == False: placepicked.append(ship.position.directional_offset(bestDir)) command_queue.append((ship.move(bestDir))) return 0 else: isFound = False bestDir = (0, 0) for i in Direction.get_all_cardinals(): if (game_map[ship.position.directional_offset(i)].is_occupied == False) and ((game_map[ ship.position.directional_offset(i)].position in placepicked) == False): bestDir = (game_map.get_unsafe_moves( ship.position, ship.position.directional_offset(i))[0]) isFound = True placepicked.append( ship.position.directional_offset(bestDir)) command_queue.append(ship.move(bestDir)) return 0 if isFound == False: command_queue.append(ship.stay_still()) placepicked.append(ship.position) return 0 #returnCommand = (ship.move(bestDir)) else: if ship.is_full or ship.halite_amount > amount: #command_queue.append(game_map.get_unsafe_moves(ship.position, Shipyard)[0]) placeVal = game_map[ship.position.directional_offset( game_map.get_unsafe_moves(ship.position, Shipyard)[0])].position inPicked = False for e in placepicked: if (placeVal.__eq__(e)): inPicked = True if inPicked == True: isFound = False bestDir = (0, 0) for i in Direction.get_all_cardinals(): if (game_map[ship.position.directional_offset( i)].is_occupied == False) and ( (game_map[ship.position.directional_offset( i)].position in placepicked) == False): bestDir = (game_map.get_unsafe_moves( ship.position, ship.position.directional_offset(i))[0]) isFound = True placepicked.append( ship.position.directional_offset(bestDir)) command_queue.append(ship.move(bestDir)) return 0 ##command_queue.append(ship.stay_still()) ##placepicked.append(ship.position) ##return 0 else: command_queue.append( ship.move(game_map.naive_navigate(ship, Shipyard))) placepicked.append(placeVal) return 0 else: if game_map[ship.position].halite_amount > 0: command_queue.append(ship.stay_still()) placepicked.append(ship.position) return 0 else: isFound = False bestDir = (0, 0) for i in Direction.get_all_cardinals(): if (game_map[ship.position.directional_offset( i)].is_occupied == False) and ( (game_map[ship.position.directional_offset( i)].position in placepicked) == False): bestDir = (game_map.get_unsafe_moves( ship.position, ship.position.directional_offset(i))[0]) isFound = True placepicked.append(ship.position.directional_offset(bestDir)) command_queue.append(ship.move(bestDir)) return 0