Le terme environnement utilisé dans les batailles Pokemon fait référence au type de Pokémon, de stratégie et de construction utilisés dans la bataille de rang de Pocket Monster Sword Shield. On peut dire que le vrai frisson de Pokemon Battle est de créer une structure facile à gagner dans l'environnement actuel en connaissant l'environnement et en considérant la méta pour cela.
Dans Character Rank Maker exploité par Pokemon Soldier, un site de partage d'informations sur les combats Pokemon pour apts. Les évaluations des rangs S à E peuvent être définies personnellement, et les classements des personnages qui sont évalués subjectivement par des commentateurs célèbres et des contributeurs de vidéos de commentaires sont mentionnés.
Pokemon Soldier publie lui-même régulièrement son rang de personnage. https://youtu.be/TMXQ497foRg
Le rang S de ce rang de personnage est défini dans la vidéo comme "le centre de l'environnement" par Pokemon Soldier. Par contre, je pensais que le problème était que l'évaluation du centre de l'environnement était subjective et qu'une méthode d'évaluation quantitative était nécessaire.
Le but est «d'évaluer quantitativement le centre de l'environnement». Dans cet article, j'aimerais autant que possible considérer le centre de l'environnement en fonction des données.
Pokemon Home est une application de gestion Pokemon qui peut être utilisée sur les smartphones et Switch. Le nombre de Pokémon pouvant être stockés dans le logiciel étant limité, vous pouvez l'utiliser en stockant temporairement des Pokémon inutiles ici.
En plus de cela, cette Pokemon Home est également équipée d'une fonction d'échange, des informations environnementales de Pokemon dans les batailles classées, d'une fonction de classement des joueurs, etc., et est fréquemment utilisée pour des enquêtes environnementales auprès de personnes aptes.
API Comme présenté dans l'article ici, Pokemon Home utilise directement l'API utilisée dans l'application en déguisant l'User-Agent. Vous pouvez obtenir des données json en cliquant dessus. L'API suivante est utilisée cette fois. Veuillez consulter le lien pour plus de détails.
#Obtenez des informations sur les conditions de la saison
https://api.battle.pokemon-home.com/cbd/competition/rankmatch/list
#Acquisition des données de combat pour la saison / trimestre concerné
https://resource.pokemon-home.com/battledata/ranking/$id/$rst/$ts2/pokemon
#Données Pokémon pour la saison concernée
https://resource.pokemon-home.com/battledata/ranking/$id/$rst/$ts2/pdetail-$j
Afin de traiter l'environnement sous une forme visuellement facile à comprendre et à analyser, nous envisagerons cette fois une évaluation à l'aide de graphiques. Veuillez vous reporter à ici pour les graphiques que j'ai écrits dans le passé.
Dans cet article, nous avons décidé d'évaluer le taux élevé d'adoption simultanée avec Pokemon, qui a le taux d'utilisation le plus élevé. C'est parce que je pensais que l'environnement devrait se concentrer sur l'impact sur les autres Pokémon et la facilité de l'incorporer dans la fête, plutôt que sur les performances d'une seule unité. Compte tenu du top 10 des Pokémon avec un taux d'adoption simultanée élevé des 30 meilleurs classements de taux d'utilisation de Pokemon Home, nous visualiserons la relation avec un graphique non orienté.
Dans un graphe non orienté, vous devez définir des nœuds et des arêtes.
Cette fois, nous allons créer un graphique avec des nœuds comme Pokémon et des arêtes comme la présence ou l'absence du taux d'adoption simultanée le plus élevé.
Par exemple, si nous considérons 10 animaux qui ont un taux d'adoption simultanée élevé avec Aceburn, nous étendrons 10 arêtes du nœud Aceburn à chaque nœud Pokemon.
Cela a été répété pour les 30 meilleurs Pokémon, et il a été supposé que le Pokémon qui règne sur le nœud avec le plus haut ordre est le Pokémon qui a une relation mutuelle forte avec le Pokémon au sommet de l'environnement.
Les données requises sont les suivantes.
Quand j'ai cherché un livre d'images Pokémon compatible avec 8 générations, il y avait une personne qui le distribuait sous forme de fichier json, alors j'ai emprunté ici. .. Étant donné que les informations sur Pokémon telles que Ulaos Brizapos ajoutées après que l'île isolée de l'armure n'a pas encore été mise à jour, si vous l'essayez dans le dernier environnement, le résultat sera un peu bruyant à cause du Pokémon qui ne figure pas dans le livre d'images.
> git clone https://github.com/dayu282/pokemon-data.json
import json
pokedex = {}
for i in range(8):
#Pokémon ajouté pour toutes les générations
j = i + 1
with open("pokemon-data.json/en/gen" + str(j) + "-en.json", "r", encoding = "utf-8") as f:
pokemons = json.loads(f.read())
for pokemon in pokemons:
pokedex[pokemon["no"]] = pokemon["name"]
#Obtenez toutes les informations de saison et enregistrez-les au format json
> curl https://api.battle.pokemon-home.com/cbd/competition/rankmatch/list \
-H 'accept: application/json, text/javascript, */*; q=0.01' \
-H 'countrycode: 304' \
-H 'authorization: Bearer' \
-H 'langcode: 1' \
-H 'user-agent: Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Mobile Safari/537.36' \
-H 'content-type: application/json' \
-d '{"soft":"Sw"}' \
-o season.json
with open("season.json", "r", encoding = "utf-8") as f:
data = json.load(f)["list"]
#Organisez uniquement les informations nécessaires pour chaque terme
terms = []
for season in data:
for id in data[season]:
terms.append({"id" : id, "season" : data[season][id]["season"], "rule" : data[season][id]["rule"], "rst" : data[season][id]["rst"], "ts1" : data[season][id]["ts1"], "ts2" : data[season][id]["ts2"]})
En incorporant des variables dans la commande à l'aide de Jupyter, elle est acquise à l'aide d'une boucle. Les informations sur Pokémon sont divisées en 5 parties, alors récupérez tous les pdetail- {1 à 5} et concaténez-les.
for term in terms:
if term["rule"] == 0:
#Acquisition de l'environnement de combat
id = term["id"]
rst = term["rst"]
ts1 = term["ts1"]
ts2 = term["ts2"]
pokemons_file = str(id) + "-pokemons.json"
!curl -XGET https://resource.pokemon-home.com/battledata/ranking/$id/$rst/$ts2/pokemon -H 'user-agent: Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Mobile Safari/537.36' -H 'accept: application/json' -o $pokemons_file
for i in range(5):
#Obtenez des informations sur Pokemon pour le terme
j = i + 1
pokeinfo_file = str(id) + "-pokeinfo-" + str(j) + ".json"
!curl -XGET https://resource.pokemon-home.com/battledata/ranking/$id/$rst/$ts2/pdetail-$j -H 'user-agent: Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Mobile Safari/537.36' -H 'accept: application/json' -o $pokeinfo_file
id = 10011 #Bataille unique de la saison 1
#Liste des meilleurs Pokémon
with open(str(id) + "-pokemons.json", "r", encoding = "utf-8") as f:
top_pokemons = json.load(f)[:30]
#Informations Pokémon
pokemons_info = {}
for i in range(5):
j = i + 1
with open(str(id) + "-pokeinfo-" + str(j) + ".json") as f:
data = json.load(f)
for index in data.keys():
pokemons_info[index] = data[index]
Maintenant que nous avons les données nécessaires, nous allons dessiner un graphique.
nodes = [] #Liste des nœuds
edges = [] #Liste des bords
#Considérez le top 30
for pokemon in top_pokemons:
#Ajouter le Pokémon au nœud
nodes.append(pokedex[pokemon["id"]])
#Pokémon ajouté à adopter ensemble
with_poke_list = pokemons_info[str(pokemon["id"])][str(pokemon["form"])]["temoti"]["pokemon"]
for with_poke in with_poke_list:
nodes.append(pokedex[with_poke["id"]])
if (pokedex[with_poke["id"]], pokedex[pokemon["id"]]) not in edges: #Élimine la duplication par commande
edges.append((pokedex[pokemon["id"]], pokedex[with_poke["id"]]))
nodes = list(set(nodes)) #Convertissez une fois en ensemble et rendez-le unique
import networkx as nx
import matplotlib.pyplot as plt
from matplotlib import font_manager
#Création de graphique non valide
G = nx.Graph()
G.add_nodes_from(nodes)
G.add_edges_from(edges)
#Calculez l'ordre moyen de l'ensemble du réseau
average_deg = sum(d for n, d in G.degree()) / G.number_of_nodes()
#La taille doit être proportionnelle au degré du nœud
sizes = [2500*deg/average_deg for node, deg in G.degree()]
plt.figure(figsize=(15, 15))
nx.draw(G, with_labels=True, node_color = "lightblue", node_size = sizes, edge_color = "black")
plt.axis('off')
plt.savefig(str(id) + '-graph.png')
plt.show()
#Trier les nœuds par ordre décroissant
nodes_sorted_by_degree = sorted(G.degree(), key=lambda x: x[1], reverse=True)
print(nodes_sorted_by_degree)
#Sortie du classement des commandes
x, height = list(zip(*nodes_sorted_by_degree))
plt.figure(figsize=(15, 15))
plt.xlabel("Number of degrees")
plt.ylabel("Name of node")
plt.barh(x, height)
plt.savefig(str(id) + '-degs.png')
plt.show()
Je vais les montrer dans l'ordre de la saison 1. Il y a du bruit après la levée de l'interdiction de l'île isolée de l'armure.
L'environnement du bouclier d'épée s'ouvre. En termes d'ordre, Mimikyu, Rotom, Drapart, Drews, etc. sont très majoritairement au centre de l'environnement. En regardant le graphique, 9 Pokémon sont solidifiés au centre et d'autres Pokémon sont dessinés de manière à l'entourer, vous pouvez donc penser que 9 Pokémon sont au rang S au centre de l'environnement.
L'environnement commence à changer. La nouvelle ligne approchant du bord est intéressante. Nuruant, Brimond Saidon, Nuodehide, etc. pénètrent dans l'environnement.
Kyodai Max Cavigon et Kyodai Max Laplace ont été dévoilés. Entrez immédiatement dans l'environnement. À ce stade, Laplace a un taux d'adoption élevé, mais le taux d'adoption simultanée avec Pokemon, qui est dans le haut de l'environnement, n'est pas si élevé, donc en fait, compte tenu de ce graphique, il est évalué comme A ou B au lieu du rang S.
Certains nouveaux Pokémon Kyodai Max ont été levés, mais il n'y a pas beaucoup de changement. Cortus Lizardon entre dans l'environnement.
Aucun changement particulier.
Natrey commence à devenir populaire. Aucun autre changement.
Levée de l'interdiction des îles isolées en armure. Avec la levée de l'interdiction des caractéristiques de rêve d'Aceburn Gorilander et la levée de l'interdiction de Kyodai Max, nous allons plonger immédiatement au centre de l'environnement. Cavigon Armor Gaa commence à sortir du centre de l'environnement. Hold est un peu populaire.
Pokemon Home levé. Les Pokémon avec un tempérament de boucle de réception tel que l'air armé, le bonheur, le nutray et le dohideide pénètrent dans l'environnement. Cavigon est accepté et est hors de l'environnement. Au centre de l'environnement où le polygone 2 fait rage. La valeur de Cabaldon pour créer un point de départ augmente et Cabaldon devient le centre de l'environnement. Au fait, Charizard-1 est Ulaos, qui a un problème avec les livres illustrés.
La frontière au centre de l'environnement commence à devenir claire. Galados et Drews descendent un peu. La boucle de réception commence également à apparaître en dehors de l'environnement.
L'environnement a radicalement changé en raison de la règle d'interdiction de Pokémon de haut rang. Ulaos, Patchragon, Lizardon, Natrey, Rotom et Achilleine sont au cœur de l'environnement. Cavigon et Iron reviennent dans l'environnement. Morobarrel Pixie vient à l'environnement.
Genger est au centre de l'environnement. Aucun autre changement.
Levée de l'interdiction sur le champ de neige de la couronne. Les semi-légendes telles que Landros, Tekkaguya, Cap, Rehile, Thunder et Uturoid occupent la majeure partie de l'environnement. D'après les données de la saison 12, on peut dire que le centre de l'environnement actuel se trouve autour de Mimikyu, Aceburn, Polygon 2, Gorilander, Tekkaguya, Caprehille, Landros, Thunder et Utsuroid.
J'ai défini le rang du personnage à partir de la saison 12 comme suit en fonction de l'ordre. Veuillez vous y référer. Il est peut-être plein de théorie, mais j'espère qu'il vous sera utile comme index. Ayons une bonne vie Pokémon!
Post-scriptum: quelqu'un faisait quelque chose de similaire https://qiita.com/b_aka/items/9020e3237ff1a3e676e4
Recommended Posts