def right_click(self, pos): """ Ce qu'il se passe en cas de clic droit """ # On cherche un soldat selectionné for member in self.members: if member.selected: # On vérifie si on a cliqué sur un ennemi for mob in self.mobs: if mob.hitbox.collidepoint(pos): member.set_target(mob) else: # C'est un clic droit de déplacement locked = TileGroup() # On cherche les positions des alliés et des ennemis for ally in self.members: locked.append(ally.tile.copy()) for mob in self.mobs: locked.append(mob.tile.copy()) new_tile = Tile([int(pos[0] / 32), int(pos[1] / 32)]) if new_tile not in locked and new_tile not in self.walls: member.path = pathfinder( self.walls, [self.map_width, self.map_height], member.tile, new_tile) member.destination = new_tile
def __init__(self, ants, logger, game_state): self.ants = ants self.logger = logger self.game_state = game_state self.dir_rotation = [('n','e','s','w'), ('e','s','w','n'), ('s','w','n','e'), ('w','n','e','s')] self.dir_current = 0 self.pathfinder = pathfinder(ants, logger, game_state)
def __init__(self, ants, logger, game_state): self.ants = ants self.logger = logger self.game_state = game_state self.dir_rotation = [('n','e','s','w','m'), ('e','s','w','m','n'), ('s','w','m','n','e'), ('w','m','n','e','s'), ('m','n','e','s','w')] self.aim = {'n': (-1, 0), 'e': (0, 1), 's': (1, 0), 'w': (0, -1), 'm': (0, 0)} self.dir_current = 0 self.pathfinder = pathfinder(ants, logger, game_state)
def update_ia(self, mob): """ Gère l'intelligence artificielle des mobs """ # On met à jour le mob mob.update(self.map, self.walls, self.log, [self.map_width, self.map_height]) # On vérifie si le mob est à couvert if mob.tile in self.covers: mob.going_to_cover = False # Le mob est à couvert, on vérifie s'il a une cible for member in self.members: if member.is_ko(): pass elif mob.target is False: mob.set_target(member) else: if mob.tile.get_distance( member.tile) < mob.tile.get_distance( mob.target.tile): # Le mob tire sur le joueur le plus proche mob.set_target(member) # Le mob est à découvert, on vérifie s'il n'est pas déjà entrain de bouger elif mob.going_to_cover is False: # TODO : Verrouiller les positions déjà occupées # On cherche la position à couvert la plus proche best_cover = False for cover in self.covers: if best_cover is False: best_cover = cover elif mob.tile.get_distance(cover) < mob.tile.get_distance( best_cover): best_cover = cover """ Couvert trouvé """ mob.destination = best_cover mob.path = pathfinder(self.walls, [self.map_width, self.map_height], mob.tile.copy(), best_cover) mob.going_to_cover = True
while (confirmation == 'Y'): k = int(input("Enter a k: ")) maxServer = int(math.pow(k, 3) / 4) vm_pair = int(input('Enter in how many VM pairs you would like: ')) f = int(input("Enter f: ")) pm_id = [*range(0, maxServer, 1)] #print(pm_id) source = [] dest = [] total_comm_cost = 0 for a in range(0, vm_pair): pair = random.sample(pm_id, 2) source.append(pair[0]) dest.append(pair[1]) print('source list: ', source) print('dest list: ', dest) pd.set_option("display.max_rows", None, "display.max_columns", None) graph, maxV = info_fattree_graph(k, maxServer) for a in range(0, vm_pair): #print(source[a], dest[a]) total_comm_cost = total_comm_cost + pathfinder( source[a], dest[a], graph, maxServer, maxV, k, f) print('Total Communication cost will be:', total_comm_cost) confirmation = str(input('Start over? Y/N')).upper() print(confirmation)
def __init__(self, ants, logger, game_state): self.ants = ants self.logger = logger self.game_state = game_state self.directions = ('n','e','s','w') self.pathfinder = pathfinder(ants, logger, game_state)