Windows95付属のフリーセルゲームを自動的に解くWin32プログラム
フリーセルは Windows 95 に付属するトランプの一人遊びゲームです。最初はどういう戦略がいいのかなかなか解りませんが、慣れてくるとスイスイと解くことができるようになり、最後の方で自動的にカードがホームセルに移動するのは何とも気持ちのいいもので、ついつい何時間もやってしまいます。 筆者はNT3.x のころからこのゲームにはまってしまい、仕事がぜんぜんすすまないことも少なくありませんでした。そこで、このフリーセルを自動的に解いてしまうプログラムを作れば、貴重な時間を浪費しなくてすむだろうと思って、この 『vfc - フリーセルあらし』を作成しました。
■ プログラムの使い方
ヘルプはありませんが、ステータスバーに簡単な説明がでるので、 フリーセルが好きな人だったら、だいたいわかるでしょ?
■ プログラム概要
プログラムは以下のモジュールから構成されます。
フリーセルゲームの状態を認識する。
フリーセルゲームを操作する。
先読みを行い、着手を決定する。
UI、全体の制御。
以下、少しだけ解説します。
フリーセルゲームの状態を認識する。
画面からピクセルの状態を読み取り、カードの状態を認識する。パターンが決まっているので一種の画像認識ではあるが、ちょー簡単である。エースはスーツが見えないので、右ボタンでカードをクリックし、全体を表示させてから、画像を読み込んでいる。
フリーセルゲームを操作する。
SendMessage でフリーセルゲームのインスタンスにメッセージを送ることで、ゲームを 操作している。メニュー(ON_COMMAND)と、マウス、それにキーダウンメッセージを使用している。
操作自体は簡単だが、その結果フリーセルゲームがダイアログを表示する場合があり、それへの対処がちょっとだけやっかいだった。
先読みを行い、着手を決定する。
パズルのプログラムをやる人には比較的簡単なプログラム。 きっとMタンやF原さんなら3時間くらいで完成させるでしょう。 でもオイラは高速化にするにいろいろ苦労した。
UI、全体の制御。
特に解説することはない。
■ 現状の出来
現状の成功率は腰をすえるモードで95%程度。人間のエキスパート(限りなく100%に近い)にはかなわないが、操作時間を考えれば、まぁ満足できる出来でしょう。
現在の連勝記録は157。こんな人なかなかいないでしょ。