2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ポケモン】旅パのタイプ相性チェックツールの作成&公開

Posted at

はじめに

3年前にポケモンBDSPが発売されたタイミングでとあるツールを作成しました。
旅パで使うタイプを設定すると、足りていないポケモンのタイプを教えてくれるものです。

GitHubにあるので好きにご覧ください。

データの取得

まず、ポケモンのタイプ相性表を取得します。

データ数としては少ないので自分で作ってもよいのですが、当時の自分はスクレイピングして取得したようです。
長年お世話になってきた徹底攻略様よりお借りしています。

実際のスクレイピングに使用したコードは以下です。

アプリとして実装

相性判定部分に関しては既にある相性表から読み取り、●がついているかどうかで判断しています。
関数で、効果抜群にできないタイプと不足タイプを検出し、それを返す形です。
途中でsetを使っているのは被っている要素を排除するためですね(多分)。

import streamlit as st
import pandas as pd

df_type_comp = pd.read_csv('type_comp.csv')
df_type_single = pd.read_csv('type_comp_single.csv')
type_dict = dict(zip(df_type_comp.columns, df_type_single.columns))

def check_comp(attack_type, defence_type):
    comp = df_type_comp[defence_type][attack_type]
    print('相性', comp)

def party_type_check(party_type_list):
    types = list(df_type_comp.columns)
    for pt in party_type_list:
        targets = list(df_type_comp.loc[df_type_comp.loc[pt]==''].index)
        for target in targets:
            if target in types:
                types.remove(target)
    lacks =  []
    for t in types:
        lacks.extend(df_type_comp[df_type_comp.loc[:, t] == ''].index)
    lacks = list(set(lacks))
    for pt in party_type_list:
        if pt in lacks:
            lacks = lacks.remove(pt)
    print('効果抜群にできないタイプ→', types)
    print('不足タイプ→', lacks)
    return types, lacks

st.write('# パーティーに含まれるタイプを選択してください。')
select_types = st.multiselect('選択↓', df_type_comp.index)
types, lacks = party_type_check(select_types)
st.markdown("# 効果抜群にできないタイプ")
st.write(' / '.join(types))
st.markdown("# 不足しているタイプ")
st.write(' / '.join(lacks))
types = [type_dict[key] for key in types]
lacks = [type_dict[key] for key in lacks]
st.markdown("# 参考用タイプ相性表")
st.dataframe(df_type_single[types].loc[lacks])

UI

マルチセレクトで簡単にタイプ登録をします。
そして、した二つのタイプ一覧が変化する形ですね。

image.png

image.png

また、下に参考用タイプ相性表が出てきます。
これを基に追加するタイプなどを選んでいく流れになります。

image.png

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?