def battle_royal(iterations, posPlayers, list_goal, game, strat, affichage=True): nbLignes = game.spriteBuilder.rowsize nbColonnes = game.spriteBuilder.colsize goalStates = [o.get_rowcol() for o in game.layers['ramassable']] wallStates = [w.get_rowcol() for w in game.layers['obstacle']] players = [o for o in game.layers['joueur']] nbPlayers = len(posPlayers) liste_gain = np.zeros(nbPlayers) for j in range(iterations): # ==== Initialisation des positions d'arriver chemin = [None] * nbPlayers for k in range(nbPlayers): list_goal[k] = goalStates[strat[k].get_goal()] chemin[k] = a_start(posPlayers[k], list_goal[k], nbLignes, nbColonnes, wallStates) while (not fini(chemin)): for i in range(len(chemin)): if len(chemin[i]) == 0: continue next_row, next_col = chemin[i].pop(0) players[i].set_rowcol(next_row, next_col) game.mainiteration() col = next_col row = next_row posPlayers[i] = (row, col) if (row, col) == list_goal[i]: game.mainiteration() d = gain(posPlayers, liste_gain, goalStates) Strat.repartition(d) if affichage: for k in range(len(liste_gain)): print("resultat joueur", k) print("type de stratégie: ", strat[k].get_nom()) print("score :", liste_gain[k]) print("score moyen :", liste_gain[k] / iterations) return liste_gain