ChatGPTノーコーディング部:ChatGPT+Pythonでゲームが簡単に作れて笑う
ChatGPT+Pytion最強伝説は本当だった
もはや簡単なマクロぐらいしか作れない私でありますが、ChatGPTがコードを吐くというので、最近またプログラミング的なことをチョイチョイと試しております。
たとえばこんなの。お恥ずかしい限りです。
それで、ChatGPTのコード生成能力ってやっぱりすごい感じがジワジワしてきたので、とりあえず目の前のPython環境で、ゲームプログラムなんかを作ってみることにしました。
とはいえ、どうしたらいいかさっぱりわからないので、ChatGPTに聞いたらPygameというモジュールを使うのが一般的とか言ってくれるので即インストール。それで、これを前提にChatGPTにコードを生成してみたら、
コードがスラスラ生成
しかもけっこうエラーもなく動いちゃう
からオドロキマンモス(死語)。
ブロック崩しにチャレンジ
ゲームといえば、ボールをパドルで跳ね返すテニスゲームですが、それより高度なブロック崩しなんて、と思いつつも試しに次のプロンプトを打ってみました。
すると、これだけで90行(空行含む)ほどのコードが生成。実際にPythonコードとして実行してみたところ、次の画面が表示。
プレイしてみたところ、パドルでボールも弾き返せますし、ブロックに当たれば消えてくれます。もうスゴすぎるとしか言いようがありません。
それで、これを元にマウスでパドルを移動できるようにしたり(元はキーボードでしかパドルを動かせなかった)、ボールの移動を三角関数を使って全方向に動かせるようにしたり、やっぱりブロック崩しといったら縦長の画面じゃね? と思ってChatGPTに作ってもらったのが次です。
もちろん、コードは全部ChatGPT。私は1行も書いてません(笑)
※当たり判定がちょっとバグってます(笑)
シューティングゲームにチャレンジ
次に何作ってみようかと思って、厚かましくも、次のプロンプトを出してみました。
「図形」を指定しているのは、そうしないと画像ファイルがあることを前提としたコードを吐くからです。画像ファイルを用意するのが面倒なので、ひとまず図形で代用してよ、というお願いですね。
生成されたコードを実行したのが次の画面です。青い四角が上から降ってきます。赤四角が自機で、これをキーボードで操作して避け続けるというゲームでした。そして、当たるとゲームオーバー。
これを見たら、隊列を組んで攻めてくるインベーダーゲームというより、縦スクロール系のシューティングゲームだと思いますよね。そこで、「自機からも弾が出るようにして」とか「敵も弾を出すようにして」などと要求しまくってできたのが次です。
敵と自機や、敵の弾と自機との当たり判定が入っていないので、いわゆる無敵モードなのですが、まさか、ここまで弾幕シューティングっぽくなるとは思いませんでした。
もちろん、ノーコーディングで、私は1行も書いてませんよ。
※自機と敵、自機と敵の弾の当たり判定が入っていません。
物理演算ゲームにチャレンジ
昔から、物理演算に憧れがあったもので、何気にPythonで物理演算を行うにはどうしたらいいのかChatGPTに聞いてみました。そしたら、PyGameでもできるっす、みたいなことを言われたので、さっそく実験。
とお願いしたところ、赤い玉同士がぶつかると、ちゃんと跳ね返るシミュレーションが生成されました。
それで、これを見て閃きました。
自分がマウスで操作する緑の玉が、一定時間の間、赤い玉に当たらなければ、より難しい次のステージ進む、そんなゲームができそう。
いわば、電流ビリビリゲームですね。というわけで、次のルールを追加。
マウス操作できる緑の玉が赤い玉に当たると、原点
青い玉は減点対象ではないが、赤い玉にぶつかると軌道が変わる
10点減点でゲームーオーバー
1ステージは10秒。その時間、10点減点されなければ、次のステージ
ステージが進むと玉の数が5つずつ増えていく
こうしてできたのが「玉避けゲーム」となります。これも1行も私はコードを書いていません。
※10秒間、10回赤い玉に当たらなければ次ステージというルールです。
ノーコーディング時代がやってくるかもしれんね
そんなわけで、ある程度ゲームとしての形がまとまった程度ではありますが、3種類ものゲームがそれなりの感じで仕上がりました。
驚くべきことは、これが、
ほぼ1日の出来事
だということです。私が現役プログラマーだったとしても、よほどの天才でもなければ、このペースでは到底作れるとは思えません。
その一方で課題も感じます。それが次です。
ピンポイントの修正をどう依頼したらいいかわからない
修正依頼とは無関係な部分を勝手に改変することがある
より大きなサイズのプログラムを体系的に作る方法がわからない
一つの手としては、ブロック設計だけは人間がしっかり作って、その中身だけを任せる、といった方法をとるのが安全かもしれません…。
とはいえ、上記が解決されさえすれば、おそらくコーディングは全部ChatGPTに任せてしまうノーコーディング時代が到来、って気がしてなりません。もし、これらの問題にチャレンジしている方や、すでに解決されている方がいたら、ぜひ教えていただきたいところです。
というわけで、
もうヤバすぎるな、ChatGPT!