Switchで『ポケットモンスター ファイアレッド・リーフグリーン』のダウンロード版が配信されたということで、
「Pythonを使って何か面白いツールを作れないかな?」と考えていました。
そこでふと思ったのが、
「色違いのポケモンって、実際どれくらい遭遇すれば出るんだろう?」
という疑問です。
色違いを狙ってポケモンを探していると、
「今何回遭遇したんだろう?」と分からなくなることってありませんか?
そこで今回は、
Pythonの知識とChatGPTを使って、ポケモン(FRLG)の遭遇回数をカウントできるツールを自作してみました。
【企画案】遭遇カウンターツールの概要
【企画案】遭遇カウンターツールの概要
ポケモンの遭遇カウンターを作成するには、いくつか考えておくべき条件があります。
例えば、次のようなポイントです。
- ポケモンの遭遇処理
- どのポケモンをカウントするのか
- 初回遭遇と2回目以降の処理
- ポケモンの判別方法
- ツールを停止した場合の処理
- 遭遇履歴の保存方法
このように、ツールの機能をある程度整理しておかないと、あとから機能を追加するのがかなり大変になります。
そのため今回は、企画段階で「どんなツールにするのか」という理想形をある程度決めてから開発を進めることにしました。
今回作成するツールでは、
遭遇したポケモンごとに回数をカウントし、図鑑のように一覧で確認できる機能を実装することを目標にしています。

実際の処理の流れは次のようになります。
- キャプチャーボードでポケモン(FRLG)のゲーム画面をPCに取り込む
- その映像をOBSに表示する
- PythonでOBSの画面をキャプチャーして画像処理を行う
- 遭遇したポケモンを判別してカウントする
この仕組みを使うことで、ゲーム画面を見ながら自動で遭遇回数をカウントしてくれるツールを作ることができます。
【仕組み】ポケモンを判別する方法
ポケモンの遭遇回数を自動でカウントするには、まず「今、ポケモンと遭遇した」という状態をPython側で判断する必要があります。
一番シンプルな方法として思いつくのは、画面に表示されたポケモンの画像を判別する方法です。
例えば、あらかじめポケモンの画像データを用意しておき、実際にゲーム画面に表示されたポケモンの画像と照らし合わせて一致していれば、
「このポケモンに遭遇した」
と判断してカウントするという仕組みです。
しかし、この方法にはいくつか問題があります。
まず、初めて遭遇するポケモンの画像が手元に存在しないという点です。
さらに、ポケモンは非常に種類が多いため、すべてのポケモンの画像を事前に自分で集めておく必要があります。
これではPythonを使っているにもかかわらず、
多くの作業を手動で行わなければならないという状態になってしまいます。
せっかくプログラムを作るのであれば、できるだけ人の手を使わずに動く 「自動化された仕組み」 にしたいところです。
そこで、「ポケモンそのものを判別する」のではなく、ポケモンと遭遇した瞬間の画面の変化に注目することにしました。
いろいろとゲーム画面を観察していると、野生ポケモンと遭遇するたびに、画面のテキスト部分に
「あ!やせいの〇〇がとびだしてきた!」
というメッセージが表示されることに気が付きました。
つまり、この

「あ!やせいの」
というテキストが表示された瞬間を検知することができれば、ポケモンと遭遇したタイミングをPythonで判断できるということになります。
この仕組みを利用すれば、
- ポケモンの種類を事前にすべて用意する必要がない
- 初めて遭遇するポケモンでも問題なくカウントできる
- 自動化されたシンプルな処理で動作する
というメリットがあります。
そこで今回のツールでは、
ゲーム画面に「やせいの」というテキストが表示された瞬間を検知し、そのタイミングで遭遇回数をカウントする仕組みを採用することにしました。
【技術解説】OpenCVで画面を検出する仕組み
今回のツールでは、ゲーム画面をPythonで解析するために
OpenCV(Open Source Computer Vision Library)というライブラリを使用しています。
OpenCVは、画像処理や映像解析を行うためのライブラリで、Pythonから簡単に利用することができます。
例えばOpenCVを使うことで、
- 画面のスクリーンショットを取得する
- 画像の中から特定のパターンを探す
- 映像をリアルタイムで解析する
といった処理を行うことができます。
今回のツールでは、このOpenCVを使って
ゲーム画面の中から特定のテキスト部分を検出する処理を実装しています。
具体的には、ポケモンと遭遇した際に表示される
「あ!やせいの」
というテキスト部分をあらかじめ画像として保存しておき、その画像と現在のゲーム画面を比較することで、ポケモンとの遭遇を判定しています。
この処理には、OpenCVの テンプレートマッチング(Template Matching) という機能を利用しています。
テンプレートマッチングとは、
小さな画像(テンプレート)が、大きな画像のどこに存在するかを探す技術です。
今回のケースでは、
- テンプレート画像
→ 「あ!やせいの」のテキスト部分 - 検索対象の画像
→ キャプチャーボードから取得したゲーム画面
という形になります。
Pythonはゲーム画面を一定間隔で取得し、その画面の中に「やせいの」というテキストが存在するかを毎回チェックします。
そして、そのテキストが検出された瞬間に「ポケモンと遭遇した」 と判断してカウントを増やす仕組みになっています。
この方法を使うことで、
- ポケモンの種類を事前に登録する必要がない
- 初めて遭遇するポケモンでも問題なく検出できる
- シンプルな画像判定で高速に処理できる
というメリットがあります。
OpenCVを使うことで、ゲーム画面のようなリアルタイム映像でもPythonで簡単に解析することができるため、今回のようなツールを作ることが可能になります。
【仕組み】ポケモン画像の自動登録
ポケモンと遭遇したタイミングを検出できるようになったとしても、まだ一つ問題があります。
それは、どのポケモンと遭遇したのかを判別する必要があるという点です。
もしポケモンの画像を事前にすべて用意しておけば、その画像とゲーム画面を照らし合わせることでポケモンを判別することもできます。
しかし、この方法では
- すべてのポケモン画像を自分で集める必要がある
- 新しく遭遇するポケモンに対応できない
という問題があります。
せっかくPythonでツールを作るのであれば、こういった作業もできるだけ自動化したいところです。
そこで今回のツールでは、
ポケモンに初めて遭遇したタイミングで、そのポケモンの画像を自動で保存する仕組みを作りました。
具体的には、ポケモンと遭遇したときのゲーム画面からポケモンが表示されている部分だけを切り出して保存するようにしています。
このとき保存された画像は、ポケモンごとの識別用画像として利用されます。
次に同じポケモンと遭遇した場合は、保存されている画像と現在のゲーム画面を比較し、一致していればそのポケモンの遭遇回数をカウントする仕組みになっています。

この方法を使うことで、
- 初めて遭遇するポケモンでも自動で登録できる
- 事前にポケモン画像を集める必要がない
- 遭遇したポケモンが自動で図鑑のように増えていく
というツールを実現することができます。
実際にツールを使っていくと、遭遇したポケモンが自動的に保存されていき、まるでポケモン図鑑のように一覧表示されていくのがこのツールの面白いポイントです。
【機能紹介】図鑑形式でポケモンを確認できるUI
このツールでは、遭遇したポケモンをただカウントするだけではなく、ポケモン図鑑のように一覧で確認できるUIを作成しました。
ゲーム画面から検出されたポケモンは自動的に登録され、ツール内の図鑑一覧に表示されるようになっています。
一覧画面では、
- ポケモンの画像
- ポケモンのID
- 遭遇回数
といった情報をまとめて確認することができます。

また、ポケモンをクリックすると右側の詳細画面に表示され、
より大きな画像や遭遇回数などの情報を確認できるようになっています。

このような表示ができるのは、
ツール内で取得した情報をデータベースとして保存しているためです。
ポケモンと遭遇すると、
- ポケモンの画像
- ポケモンID
- 遭遇回数
- 画像の保存パス
といった情報がデータベースに記録されます。
そのためツールを一度終了しても、
次に起動したときにはこれまでに遭遇したポケモンの情報をそのまま読み込むことができます。
また、遭遇回数などの情報もデータベースに保存されているため、
長時間プレイしてもカウントが失われることはありません。
この仕組みによって、
「遭遇したポケモンがどんどん図鑑のように増えていく」
という、ポケモンらしい楽しみ方ができるツールになっています。
【開発環境】今回使用したPythonライブラリ
今回のツールは、いくつかのPythonライブラリを組み合わせて作成しています。
それぞれのライブラリは、次のような役割で使用しています。
OpenCV(cv2)
ゲーム画面の画像処理を行うために使用しています。
主にテンプレートマッチングを使い、画面内の「やせいの」というテキストを検出する処理に利用しています。
NumPy
OpenCVで扱う画像データは配列データとして処理されるため、
画像データの計算や処理を行うために使用しています。
Pillow(PIL)
画像の保存や読み込みなど、画像ファイルを扱う処理で使用しています。
遭遇したポケモンの画像を保存する際などに利用しています。
Tkinter
ツールの画面(GUI)を作成するために使用しています。
図鑑形式でポケモンを一覧表示する画面や、遭遇回数を確認するインターフェースを作成しています。
これらのライブラリを組み合わせることで、
ゲーム画面の解析・データ保存・UI表示までをPythonだけで実装することができました。
【まとめ】PythonとAIを使えばツールは意外と簡単に作れる
今回は、ポケモン(FRLG)の色違い厳選をサポートするためにポケモン遭遇カウンターツールをPythonで作成してみました。
キャプチャーボードでゲーム画面を取り込み、OpenCVで画面を解析し、遭遇したポケモンを自動でカウントするという少し本格的なツールになりましたが、実はこのツールには一つ大きな特徴があります。
それは、すべての機能を自分でコーディングしていないという点です。
今回作成したプログラムは、
基本的にChatGPTにプログラムを書いてもらう形で開発しました。
もちろん、AIにすべて任せれば必ずうまくいくというわけではありません。
しかし、Pythonの基礎的な知識や仕組みを理解していれば、
- どんな機能を作りたいのか
- どんな処理が必要なのか
- どこを修正すればよいのか
といった部分をAIに指示することができるため、
自分でコードを書くよりも短時間でツールを作ることができます。
以前であれば、こういったツールを作るにはかなり高度なプログラミングスキルが必要でした。
しかし現在は、AIを活用することで
アイデアを形にするハードルがかなり下がっていると感じています。
そのため、Pythonに興味がある方は
まずはPythonの基礎知識を少しだけ身につけることをおすすめします。
基礎知識があるだけでも、
- 技術系のブログ記事を読む
- プログラミングの本で学ぶ
- AIに質問しながらコードを作る
といった方法で、少しずつ理解を深めていくことができます。
私自身も、技術系のブログ記事や書籍、そしてAIを活用しながら学習を続けています。
これからPythonを始めてみたい方は、
初心者向けの書籍を1冊読んでみるだけでも理解がかなり進むのでおすすめです。







