なんか、ネタが切れた
ジェミニになんかネタないか??
<ジェミニから>
「ローカルHTML1ファイル」で動くミニゲーム(オセロ等)の即席爆速開発
難易度: ★★☆☆☆(サクッと動く)
作るもの: 外部ライブラリなし、HTML/CSS/JS 1ファイルで完結する「CPU対戦付きオセロ」。
記事の面白さ:
「オセロの挟むロジック」や「CPUの簡易思考(評価関数)」はAIが得意な領域。
AGYに「ブラウザを開かずにNode.jsで勝敗判定ロジックのユニットテストを書かせ、テストが通ったら完成」という自律ループを回させると、たった15分で完成して記事のネタになるスピード感が出せます。
<引用以上>
「面白そう。」
ということで今回は Windows 11 + Antigravity CLI で挑戦してみます。
Windows 11でもAntigravity CLIは動く
Windowsでも問題なく動作します。
ただし設定はMacより少し手間だったので、そのあたりは別記事でまとめようと思います。
で、windows11のターミナルはヒントでピントみたいにできる。
詳細はこっち
https://qiita.com/0903osa/items/0d145eb99534e934a34d
今回作ったもの
今回は HTML/CSS/JavaScriptだけで動くCPU対戦オセロ を作りました。
完成版はこちらです。
GitHub
https://github.com/mitsuosa0903/othello
*READMEをあとから追加しました
Windows・Macの両方で動作確認済みです。
で今回は3つのペインに
- 【Pane 1: Maker】
agy "8x8のオセロゲーム(HTML/CSS/JS 1ファイル: index.html)を作成してください。
思考ルーチン付きCPU対戦機能を含めます。
ただし、自分でテスト結果を判断せず、修正依頼が来たらコードのみを更新してください。"
- 【Pane 2: Checker】
agy --approval-mode auto_edit "Makerが作成するオセロのロジックに対して test_othello.js を作成してください。
以下を厳しくテストし、1つでも不合格ならエラーログを具体的に出力して終了コード1で終了してください。
- 8方向(特に斜め)の裏返しロジック
- 置ける場所がなくなった時の自動パス処理
- 両者置けない状態でのゲーム終了判定
全パス時のみExit Code 0を出力すること。"
- 【Pane 3: Judge】
agy "Checkerのテスト実行結果(node test_othello.js)を監視してください。
テストが失敗している場合、失敗ログを抽出してMaker(Pane 1)へ修正指示として出してください。
Exit Code 0 が確認されたら、STATE.md に『ロジック検証完了』と記録して停止してください。"
今回画面イメージ
今回の「3ペイン(MCJ構成)」を作る手順
オセロのMCJ(Maker-Checker-Judge)用に画面を3分割する最短手順です。
【完成イメージ】
+-------------------+-------------------+
| 1. Maker (左上) | 2. Checker (右上) |
+-------------------+-------------------+
| 3. Judge (下) |
+---------------------------------------+
Windows Terminal を開く(これが左上ペインになります)
Alt + Shift + + を押す ➔ 右側に新しいペイン(右上)が出現
Alt + ← を押して 左上ペインにフォーカスを戻す
Alt + Shift + - を押す ➔ 左下の位置に新しいペイン(下)が出現
(※必要に応じて Alt + Shift + → で下のペインを左右いっぱいに広げたり、マウスドラッグで境界線を調整すれば完成です!)
で、各プロンプトに上記のコマンド貼り付けて、スタート
今回は3択は2,4択は3で行きました。
15分ほどで完成したのですが、遊べなかったので
改善要求
(ペイン1)
そもそも遊べなかった
マニュアル用意して
といったら、完成しました
せっかくなので、最強モードで対戦したら
ボロ負けしました・・・・・(涙
悔しかったので、MacへSlackでZIPを送り、もう一度挑戦。
結果は……
やってみた感想
今回改めて感じたのは、
Makerが実装
Checkerがテスト
Judgeが修正指示
というMCJ構成は、ゲーム開発でも十分実用的ということです。
今回はオセロでしたが、この流れなら将棋や五目並べなどの簡単なゲームでも応用できそうです。
