AI プログラミング ゲーム作り2

今日は、Ubuntu=Lynuxでやっていきます。CopiltもGeminiもアプリがありますが、WEBで検索してログインすればWEBでやれます。

いくつかレベルを上げつつ、作りたいと伝えたらブロック崩しを提案してくれた。

作ってみて、pythonがいいね

いっぱつでブロックを描画、ボールが動いて、カーソルで動くバーで、ボールを弾き、ブロックを崩せるもの作ってくれたよ。
あとはスコアと、ゲームクリアと、ゲームオーバー後の再開かな。

勉強のためと書いてあったけど、これだけ一発でできるなら、もうコード理解する気なくなる。

次のプロンプト

「3回ミスまで許せるようにしてください。あとゲームオーバーはプログラム終了しないでスペースキーを押して再開できるようにしてください。」

完璧ですね。

次のプロンプト リファクタリング1.OOD

コードが長くなってきました。ブロック、ボール、バーとそれぞれ特徴的なオブジェクトがあるのでオブジェクト指向設計にリファクタリングしてください

次のプロンプト リファクタリング2.細かい指示

runが一番大きなメイン処理かな、一番下にして、その中の処理にコメントを入れてほしい あと、update関数は処理が多すぎるので、コメント入れている単位くらいで関数化してほしいな。

Copilotの提案と次のプロンプト

「Copilot]
この形なら、例えば敵キャラ追加特殊ブロックを入れるときも関数を足すだけで済みます。 次はこのOOP版に効果音・BGMを追加して、よりアーケード感を出すバージョンにできますが、やりますか?

[プロンプト]
>アイテムが入っているブロックを違う色にして。 崩したらボールが2つ発生するブロックを作って。 効果音・BGMも適当に入れてみて。

>コードが途切れたので、もう一度全部表示して

>途切れてしまいますね。1回の文字数の限界があるのでしょうか? run()以降を表示して

一度に遅れる文字に上限があるらしい=コードの上限がある。

知り得た新しい事実。無料版であるからでしょうか。

他のコメントも含めて200行くらいが限界か?

しっかり設計して1つ1つのファイルをコンパクトにしていく必要があります。より良いですね。クラスごとのファイルとかするにはどうするの?python知らないからそこからだな。

ボールが増えるようにしたら…1回の増えるブロックで無限に増えだした。

大変になったぜ。

次のプロンプト

[プロンプト]
ボールが増える条件で、なんだか、予想以上にボールが増えるバグがあります。ずっとやってたら、無限大にボールが増えていきました。 1画面のボールの数の上限を10個にしてください。

[Copilot]
了解。増殖の暴走は「マルチボール生成を無制限に追加」するのが主因なので、画面上のボール上限を設けます。実装はシンプルで、上限までの残り枠だけ新規ボールを追加します。

変更点の概要

  • ボールの最大数を10個に制限(MAX_BALLS)。
  • マルチボール生成時に上限を超えないようにガード。
  • 生成する2球の初期ベクトルを少し変えて重なりを軽減。

結果、ボール分裂ができなくなった。

ボール無限増殖は、コピペ時のインデントミスだった。pythonは同じインテント位置で構文のブロックを示すらしい。むずい。バグるやろうそれ。
そして走行するうちにだめなパターンもある。おそらく、当たり判定が良くなく、連続でブロックにぶつかっている状態なのでしょう。ブロックが消えるのが遅いのかな?ということで、かんたんに修正するために…ボールの上限を3個にしました。

ここで完了です。1〜2時間。AIプログラミングすごいね。
ソースの公開は、別ページにしよう。↓ここ

AIでプログラミング ゲーム2のコード

元記事はこれです。この記事の最後のコードをここに記してます。 このファイルをテキストで~.pyのファイルにして、pythonインストールして>python ファイル名で実行できま…