将棋AIを作ってください ブラウザでこちらが対戦できるようにして Opus5!

将棋AI

表題のようにClaudeにお願いしてみました。以前、AIに将棋AIを作ってと頼んでもなかなかルール通りに動かなかったけど、今回は少なくともルール通りに動く将棋を作ってくれた気がします。千日手とか持将棋のルールは入ってないらしい。

さすがにあんまり強くなかったけど、もっと強くしてというと強くなりそう。

頼んでから5分くらいでできました。

AIの思考

将棋AIをブラウザで対戦できる形で作ります。まず作業ディレクトリを確認します。

Checked working directory

将棋AIを作ります。ブラウザで動く1ファイル完結のアプリにして、公開URLでも遊べるようにします。まず設計ガイドを読み込みます。

スキルを実行しました/artifact-design

将棋エンジン(ルール判定+思考AI)とUIを1ファイルにまとめて作ります。

Wrote the shogi game HTML file

いくつか仕上げの修正を入れます(ボタン要素の既定枠線と変数名の衝突回避)。

Patched CSS button defaults and renamed history variable

公開して、実際に動くか一度確認します。

木の香 将棋使用: 2個のツール

盤は正しく描画されています。エンジンが実際に応手するか、一度だけ動作確認します。

Ran page script

エンジンは正しく動作しています(☗7六歩に☖6二玉と応手)。駒台ラベルの折り返しだけ直します。

Fixed hand-area label wrapping

木の香 将棋

将棋AIができました。ブラウザで今すぐ対戦できます。

▶ 木の香 将棋

ファイルは shogi.html にも保存してあるので、ダブルクリックでローカルのブラウザでも遊べます。

できること

遊び方

  • 自分の駒をクリック → 緑の印が出たマスをクリックで移動
  • 持ち駒は下の駒台をクリック → 打ちたいマスをクリック
  • 成れる場面では「成る/成らず」を聞いてきます

ルール判定(反則手はそもそも指せません)

  • 二歩、打ち歩詰め、行き所のない駒(1段目の歩・香、1〜2段目の桂)
  • 王手放置、自分から王手に飛び込む手
  • 成りの強制(動けなくなる場所へ行くときは自動で成る)
  • 詰みの判定、王手の表示

AIの強さ … 入門・初級・中級・上級の4段階。先手/後手も選べます。

その他 … 棋譜表示(☗7六歩 の形式)、待った、投了、ダークモード対応、スマホでも縦に並んで遊べます。

中身のしくみ(かんたんに)

AIは「ミニマックス法+αβ枝刈り」という定番のやり方です。

  1. 自分が指せる手を全部並べる
  2. それぞれに対する相手の最善手を読む…を数手くり返す
  3. 最後に盤面を点数化する(駒の損得+歩が前に進んでいるか+玉が金銀で囲われているか)
  4. いちばん点数の高い手を選ぶ

「上級」は5手先まで読みます。駒の取り合いの途中で読みを止めると誤判断するので、取り合いが終わるまでは追加で読む(静止探索)仕組みも入れてあります。コードには日本語のコメントを入れてあるので、AIの強さを変えたい場合は LEVELS と evaluate() のあたりを触ってみてください。

なお、千日手と持将棋の判定は入っていません。実戦ではほぼ問題になりませんが、必要でしたら追加します。

そんなところで

PVアクセスランキング にほんブログ村

AI

Posted by tomoyamurakami