AIプログラミング日記:イラレ上で動作する「対戦型スネークゲーム」を作ってみた件
AI で AIスクリプト作ったった
AIによるノーコーディングプログラミングを初めて、ちょうど一年経過しました。その間、もっとも没頭したのが、ドローツールの金字塔Illustrator用のスクリプトです。AIでAIスクリプトを作る。駄洒落みたいな話ですが、実際のところ生成した総数は数千個。こんなことは、AIなしには成しえないことですね。ちなみに、それ以前AIスクリプトを作った経験はゼロです。
これまでに作ったほとんどは、当たり前ですが、なんらかのベクターデータを生成するためのものとなります。スクリプトを使うと、人力ではとても描けないデータが作れるのが最高におもしろいですね。ただ、いろいろ作ってみると、スクリプトの守備範囲は意外と広くて「こんなこともできるんだ」と驚かされることも…。
そして、そんなある日のこと、
イラレ上で動作するゲーム作れるじゃん
と気づきました。イラレの仕様上、リアルタイムゲームは作れないのですが、ターン性ゲームならば十分イケそう。さっそく、コンピュータゲームの古典的プログラムである「スネークゲーム」を作ることにしました。
スネークゲームってどんなゲームですか?
スネークゲームを御存じでない方のために紹介します。
もともとは一人ゲームで、餌を食べると長く伸びていく身体をコントロールするようなものでしたが、今回はプレイヤー vs CPUの対戦型にしてみました。
プレイ画面の説明
実行開始時の画面が次です。
[P]赤い四角:プレイヤーのスネーク
[F]赤い円:プレイヤーの餌
[E]緑の四角:敵(CPU)のスネーク
[F]緑の円:敵(CPU)の餌
プレイヤーはプレイヤーのスネークを動かすことができます。操作は次のとりです。おすすめはテンキーで、一番操作しやすいかと思います。カーソルキーはデバイスによって使えないことあるようです。[K][J][H][L]キーはviエディタふうにしています。
上移動:上ボタン、テンキーの[8]、カーソルキー、[K]キー
下移動:下ボタン、テンキーの[2]、カーソルキー、[J]キー
左移動:左ボタン、テンキーの[4]、カーソルキー、[H]キー
右移動:右ボタン、テンキーの[6]、カーソルキー、[L]キー
身体を長くするには、自分の色の餌を食べます。1つ食べると1つ増えます。しかし、敵(CPU)がプレイヤーの餌を食べると、身体が1つ縮みます。また、スネークが餌を食べると画面上のどこかに再び現れます。このルールは敵(CPU)にも適用されます。
こうして、先に身体の長さを10個にしたほうの勝ちとなります。次は、敵(CPU)に先に身体の長さを10個にされてしまい、プレイヤーの負けになった画面です。
勝っても、負けても、スクリプトはそこで終了します。
すり抜けルールとギブアップの操作
そのほかにも、ルールがいくつかあります。
まず、基本的に、身体はすり抜けられません。プレイヤーが自分の身体や敵(CPU)の身体に当たると、その先に行けません。敵(CPU)もプレイヤーの身体をすり抜けることができません。
ただし、敵(CPU)は自分の身体だけはすり抜けが可能になっています。これは、敵が自分の身体に当たって動けなくなる問題を回避するための特別ルールとなっています。
もし、プレイヤーが自分自身もしくは敵(CPU)の身体に阻まれて、どこにも移動できなくなった場合には、ダイアログの閉じるボタンか、[ESC]キーを押して、プレイヤー自身でギブアップすることができます。これらの操作は、ゲームプレイを中断したいときにもご利用ください。
ノーコーディングでどーもすいやせん
というわけで、そもそもデザインツールでゲームをするということ自体、本末転倒というか「この不届きモノ!」という感じですが、スクリプトでこんなこともできるんだ、というサンプルとしては、ちょっとおもしろいのではないかと思います。
AIをこんなことに使ってさーせん!
スクリプト(バイナリ)を公開します
イラレ版スネークゲームのスクリプト(バイナリ)を公開します。
使い方ですが、TheSnakeGame.jsxをダウンロードします。次に、イラレでドキュメントを1つ作ります。最後にTheSnakeGame.jsxをそこにドラッグ&ドロップします。これでゲームスタートです。
息抜きにどうですか?(笑)