オセロゲームを作ってみた

http://bitbucket.org/komamitsu/misc/src/tip/ocaml-reversi/

作ってみようかと思ったのは、ふと「ちゃんとゲーム木を実装したことが無いなぁ、特にαβカット周りは全然やったことない」と思ったからなのです。

できれば、min-maxの部分を切り分けておいてオセロ以外にも使えるといいなぁ、と考えていたのですが、恐らく放置されるような気がしています。

あと、オセロでどうすれば強い思考ルーチンになるか、あまり興味がなかったのでポカミスが多い、ぼんやりした子になっています。


最初はRubyで書き始めてみたのですが、想定していなかったデータ状態に陥る→修正→少し進んで別の想定していなかった状態に陥る、というループが回ってしまったので、ここはいっちょ型に定評のあるOCamlで実装してみようかと思いました。

実装している途中で気がついたのですが、行き当たりばったりで型を定義していると、とっても見通しの悪いコードになってしまうので、ちゃんと型の設計をすべきだなぁ、と。まぁ、結局見通しの悪いコードのままだったりしますけども。


とはいえ、そもそも型の正しい設計方法って良くわからないので道は遠いなあと思いました。多分、最初の3日間はtype宣言以外のコードは禁止されているのではないか、とか勝手に推測。