arcanum_jp’s blog

おっさんの日記

強くなる○×ゲーム:公開しました。

強くなる○×ゲーム
http://marubatu.arcanum.jp/


基本的なアルゴリズムはあるので、やってみようかと思っていたりする。昔、MSXマガジンで、鹿野 司氏が「人工知能うんちく話」・・・だっけ?で連載していたものを、Webで実現するだけなんだけど・・・○×ゲーム(3マスで○と×で対戦するアレね)の思考ルーチンを簡単な方法で構築する話があったっけ。簡単には以下のような思考ルーチン(と呼べるものか?)。

強くなる○×ゲーム - nigredoな日々 〜 arcanum.jpの出張所 〜

 メールアプリケーションを作ろうとしていたんだけど、まずメールサーバーの構築にorz...となったため、とりあえず実現可能なものを作ってみようかと思い、作ってみました。いつものごとく、飽きたら捨てるなんてことは今度こそはしたくないなぁと思いつつ。とりあえずコア部分ができたので、公開。


 オリジナル版では、負けた1手前の手を保存していたような気がしたんだけど、こちらでは、試合全部の手を保存しています。簡単に言うと、以前対戦した盤目と同じ形になったら、その対戦の最終的な勝ち負けによって打つ場所を変えます。何十試合もしないと、(始めの手を真ん中とすれば最低限、9+8+7+6+5+4+3+2+1=45手)強くなってきた感じはしないので、ちょっとアレだったかなと思う。とりあえず、下記にTODOを書いておく。

 

  • やったゲーム数、勝率を表示する。
  • コンピュータ対コンピュータをさせる
  • 対戦履歴を保存。(いちいち、何十戦もやってられないしね。)
  • タイトルで対戦履歴を選択して始めることができる。
  • 誰かが対戦した履歴を使って対戦できる
  • 誰かの対戦履歴と誰かの対戦履歴で対戦させる・・・なんか変な表現
  • 対戦履歴のグラフ化(勝率とか・・・)
  • 勝率の分布をグラフ化


 この方法でオセロなんて作ったらどうだろうか。定石の手に勝率の重みを付けて、COM対COMで100万試合ぐらいさせとくとか。多分パターン的にはそれでも足りないんだけど、普通に遊べるオセロはできるんではないだろうか。

言語 Java 1.6
フレームワーク Wicket 1.3
データベース なし
工数 15時間程度 + 妄想する時間