AI が作った『象棋大補帖』:暗棋、シャンチー、象棋麻雀と小兵の物語、ブラウザでそのまま遊べる
今回はシャンチー(中国将棋)の駒をキャラクターにしてボードゲームのシリーズを作り、それをひとつのゲームファイルにまとめて、起動したら遊ぶゲームを選ぶ形にしました。だから「大補帖」(詰め合わせ)という名前です。駒は丸い木の板で、字のほかに顔と表情もあります。めくられるとあいさつし、取るとひとこと言い、取られると「いったん陣地に帰って休む」のです。
『象棋大補帖』(XIANGQI PACK)は懐かしのテレビゲーム機の形式のゲームで、ゲームファイル全体で 2 MB。中身は:
| 入口 | 内容 |
|---|---|
| 棋館 | 暗棋、シャンチー、象棋麻雀。コンピューター対戦は「かんたん・ふつう・むずかしい」の三段階、暗棋とシャンチーは二人対戦も |
| 物語 | 「小兵成長記」全六章、各章でひとつのゲームがステージになる |
| おまけ | 今日の一駒:駒を一つ引いて、はげましのひとこと |
| 言語 | 中文、English、日本語、한국어、Tiếng Việt。タイトルメニューで左右キーで切り替え。駒の文字は変わりません |
ルールはどれも伝統的なゲームです。プログラム、コンピューター対戦相手、画面、キャラクター、四曲の音楽は AI が作りました。AI の実作業は約 210 分、API 価格に換算して約 58 ドルです。
そして、私たちにとって初めての多言語ゲームです。中国語、英語、日本語、韓国語、ベトナム語の五つを、タイトルメニューで左右キーを押すだけで切り替えられ、画面の文字もフォントも切り替わります。翻訳も AI が行いました。
ブラウザでそのまま遊べます:aixsfc.app/player/?load=xiangqi。無料で遊べます。友だちに紹介するときはこのアドレスを送ってください。
遊び方







- 暗棋:4×8 の盤に 32 個の駒をすべて伏せて並べます。一手で一つめくる、一歩動く、または取る。強さは帥(将)、仕、相、俥、傌、炮、兵の順。兵は帥を取れ、帥は兵を取れません。炮はちょうど一つ駒を飛び越えて取ります。ルールは中国語版ウィキペディアの「暗棋」の記事の台湾暗棋によります。
- シャンチー:ふつうの中国将棋で、九路十行の盤に河界。ルールは中国語版ウィキペディアの「象棋」の記事どおり:馬の足をふさがれると跳べない、象の目をふさがれると動けない、炮は一つ飛び越えて取る、兵は河を渡ってから横に動ける、両方の王は向かい合えない。駒を持ち上げると、動ける空きマスに金の輪、取れる駒には金の縁が出ます。王手をかけられると「將軍!」と表示。コンピューターが先手のときはあなたが黒になり、盤が回って自分の駒が下に来ます。
- 象棋麻雀:32 個の駒を牌にします。あなたとコンピューター三人が 4 個ずつ持ち、自分の番に一つ引いて一つ捨てます。五つで「一組と一対」になればあがり。一組は帥仕相・俥傌炮(同じ色)か兵三つ、一対は同じもの二つ。ほかの人の捨てた駒であなたの手がそろっても、あがれます。ルールは中国語版ウィキペディアの「象棋麻將」の記事の 32 枚の遊び方(一面子と一対子であがり)により、覚えやすいように簡単にしました:ツモとあがりだけで、チー・ポンはなし。兵三つも一組。記事にある色違いの将帥の対子は、この版ではまだ入れていません。始める前にルールのカードを出します。
- 物語「小兵成長記」:いちばん小さい兵が新兵の陣地で育ち、昇進していき、最後には新しく来た兵を育てます。六章は暗棋、象棋麻雀、シャンチーがステージで、難しさは「かんたん」から「ふつう」へ。勝つと次の章が開き、進み具合は保存されます。二回続けて負けると飛ばすこともでき、子どもが先に進めなくなることはありません。取られた駒は「陣地に帰る」だけで、けがをする言葉は出てきません。
- ボタン:十字キーで移動、A で決定、B でもとに戻す。
コンピューターの指し方
三つのゲームのコンピューターは、まず JavaScript で参考プログラムを書き、たくさん対戦させて強さを決めてから、ゲーム機のアセンブリ言語でそのとおりに書き直しました。
暗棋:「かんたん」は取れるとき十回に七回でたらめに取る。「ふつう」は一手ごとに点数をつける(何を取るか、動いたあと取り返されないか)。「むずかしい」は上位 8 手を選んでもう一手先まで読みます。参考プログラム同士で 300 局(先後を交代):
| 対戦 | 勝 | 負 | 引き分け |
|---|---|---|---|
| ふつう 対 かんたん | 300 | 0 | 0 |
| むずかしい 対 かんたん | 299 | 0 | 1 |
| むずかしい 対 ふつう | 99 | 52 | 149 |
引き分けが多いのは暗棋らしさです。どちらも慎重に指し、50 手めくりも取りもなければ引き分けになります。
シャンチー:一手目はよくある 8 種類の序盤(中炮、馬を跳ねる、相を上げる、兵を突く)からランダムに選びます。その後はすべての手をざっと見て(一手指す、その後の駒取り、相手の大駒をねらえるか)、よい何本かの筋を二手先まで読み、駒取りは最後まで追います。「かんたん」は 2 本、「ふつう」は 5 本、「むずかしい」は全部。各 20 局:
| 対戦 | 勝 | 負 | 引き分け |
|---|---|---|---|
| ふつう 対 かんたん | 12 | 0 | 8 |
| むずかしい 対 ふつう | 14 | 6 | 0 |
| むずかしい 対 かんたん | 17 | 3 | 0 |
ゲーム機の上では「かんたん」「ふつう」は一手最大約 2 秒、「むずかしい」はふつう 2〜4 秒、最長約 7 秒。そのため両方の名前の横に、この一手に何秒かけているかを表示し、相手が考えていることがわかるようにしました。
象棋麻雀:「かんたん」はでたらめに捨てる。「ふつう」は捨てたあと「あがれる駒の種類」がいちばん多くなる駒を捨てる。「むずかしい」はさらに、まだ見えていない駒が何個残っているかも数えます。4000 局:「かんたん」三人の卓に「ふつう」か「むずかしい」が一人入ると勝率は約 34〜36%、同じ卓の「かんたん」はそれぞれ約 5%。「ふつう」と「むずかしい」はほぼ同じで、このゲームは運の要素が大きいのです。
間違いがないかの確かめ方
- 一手ずつ照らし合わせる。 エミュレーターの中でコンピューター同士に指させ、一手ごとにゲームのメモリーから盤(または手牌、捨て牌、山)を読み出し、参考プログラムが同じ手を指したあとの結果と比べて、完全に同じであることを確かめます。暗棋は三つの強さで 19 局、シャンチーは三つの強さで一局最大 200 手、象棋麻雀は 42 局で、ツモあがり、ロン、流局がどれも出ています。
- シャンチーの指し手の数。 開始局面から合法手をすべて数えると、一手で 44 通り、二手で 1,920 通り、三手で 79,666 通り。知られている数と同じになってから、コンピューターを書きました。
- プレイヤーのように遊ぶ。 テストプログラムが十字キーと A で一局を最後まで遊びます:駒を持ち上げる、戻す、金の輪へ動かす、結果を見る、もう一局。シャンチーはコンピューター先手で盤が回る場合も。物語は第一章から六章がすべて開くまで遊び、進み具合が保存されることを確かめました。
AI による作り方
初めての多言語対応。 文章はすべてまず中国語で書き、言語ごとに中国語の文をキーにした辞書を用意しました。言語ごとに文章の領域とフォントの領域があり、同じ文はどの言語でも同じ位置にあるので、切り替えるときはその二つをメモリーに読み込むだけ。ゲームのプログラムは言語ごとに分けていません。韓国語とベトナム語はオープンライセンスのドットフォント Galmuri11 を使い、英語・ベトナム語・韓国語は単語単位で改行し、日本語は句読点が行頭に来ないようにしています。
ひとつの参考プログラム、ふたつの言語。 ルールとコンピューターはまず JavaScript で書き、対戦させて強さを決めてから、65C816 アセンブリでそのとおりに書き直しました。乱数の作り方まで同じなので、同じ局面では両方が同じ手を選び、一手ずつ照らし合わせられます。
遅いゲーム機でシャンチーを速く考えさせる。 最初の版の「むずかしい」は一手に最長約 15 秒かかりました。速くした方法:
- 方向ごとの動きをそれぞれ専用のプログラムに展開。
- 最後の一手は実際に動かさず、表から点数を計算。
- 各筋では「いまの最善よりよいか」だけを調べ、探索を早めに打ち切れるように。
どれも選ばれる手は変わりません。
考慮時間は画面の割り込みで数える。 コンピューターが考えている間、メインのプログラムは画面を描く暇がないので、秒数は毎フレーム一回動く垂直帰線割り込み(NMI)が更新します。
画面はすべてプログラムで描画。 木のテーブル、盤、木の駒、14 種類の駒それぞれ 5 種類の表情の顔を、すべてプログラムで描きました。フォントに「傌」(赤の馬)がないので、「俥」の人偏と細い「馬」を組み合わせて作りました。
四曲の音楽はすべて新作。 タイトル、対局中、勝ったとき、今日の一駒。MML(文字で書く楽譜)で五音音階の曲を書きました。
コスト
| AI の作業時間 | 約 210 分 |
| モデル | Claude Opus 5.5、約 440 回の応答 |
| AI の出力トークン | 約 55 万 |
| 処理したトークンの合計 | 約 1.9 億(大部分はキャッシュの読み込み) |
| 推定費用 | 約 58 ドル(2026 年 11 月の Anthropic API 価格で換算。サブスクリプションの課金方法は異なります) |
| その他の費用 | 0:フォントはオープンライセンス、それ以外はすべてこのゲームのために作りました |
バージョン履歴
| バージョン | 変更内容 |
|---|---|
| 1.261108.7 | 言語の切り替えをタイトルメニューのいちばん下の行へ。左右キーですぐ切り替え |
| 1.261108.6 | 言語の切り替え:中文、English、日本語、한국어、Tiếng Việt。保存されます。起動時にセーブを読み込むように |
| 1.261108.5 | 物語「小兵成長記」全六章 |
| 1.261108.4 | 象棋麻雀 |
| 1.261108.3 | シャンチー:両方の名前の横に、この一手の考慮秒数 |
| 1.261108.2 | シャンチーのコンピューターを作り直し:よくある序盤をランダムに、駒取りは最後まで、強さは「何本の筋を読むか」 |
| 1.261108.1 | シャンチー:コンピューター対戦(三段階)、二人対戦 |
| 1.261108.0 | 棋館のメニュー。すばやく押しても取りこぼさない |
| 1.261107.1 | 暗棋:めくった赤の帥が消える問題。メインメニューの文字が枠からはみ出す問題 |
| 1.261107.0 | 最初の版:暗棋(コンピューター対戦、二人対戦)、今日の一駒 |
まだやっていないこと
- 暗棋のルールの選択(俥の直進、連続取り)。
- シャンチーの詰め問題、揭棋などのほかの遊び方を、棋館に一つずつ追加。
- コンピューターの強さはコンピューター同士の対戦で決めたもので、人が遊んだときの感触は、もっと多くの人に試してもらう必要があります。
保護者と先生へ
- 小学生と家族で遊ぶのに向いています。駒の動き方がその駒の性格で、物語では兵が「河を渡ってはじめて横に動ける」、馬が「道がふさがれたら回り道」。遊んでいるうちに動かし方を覚えられます。
- 物語の相手は試合や任務で、取られると「陣地に帰って休む」。今日の一駒ははげましだけで、占いはしません。
AI で自分のゲームを作りたい方は、空のフォルダーで npx https://aixsfc.app/skill/aixsfc.tgz を実行してから claude を起動してください。説明はトップページにあります。
出典とライセンス
- ルール:暗棋、シャンチー、象棋麻雀はどれも伝統的なゲームで、ルールは中国語版ウィキペディアの「暗棋」「象棋」「象棋麻將」の記事によります。象棋麻雀の簡略化は上のとおりです。
- フォント:Cubic 11(俐方体11号)、ACh-K、SIL Open Font License 1.1。
- 韓国語・ベトナム語のフォント:Galmuri11、Lee Minseo、SIL Open Font License 1.1。
- 英語・日本語・韓国語・ベトナム語の訳:AI が訳したもので、ネイティブのチェックはまだです。
- 登場人物と物語:架空。
- プログラム、コンピューター対戦相手、画面、キャラクター、音楽:このゲームのために一から作りました。