見出し画像

AIと作る「ブロック自動配置システム」

BlockTennis

前回は、AIと一緒にBlockTennisを作った。
今回は、どうしてもブロックの自動配置が作りたくなっちゃったので、チャレンジしてみる。目指すは「ローグライクなテニスゲーム」だ!



AIはCopilotさん


ブロックの自動配置

10,10のグリッドサイズに沿って生成してください

了解しました!10x10のグリッドに沿ってブロックを生成する方法を説明します。これには、以下のような手順が必要です。

グリッドサイズの設定:
グリッドのサイズを定義します。例えば、各ブロックのサイズが10ピクセルの場合、生成する位置をこのサイズに基づいて計算します。

ブロック生成ロジックの変更:
ブロックを特定の間隔で配置するためのロジックをスクリプトに追加します。

Copilotさん

obj_genarate(生成オブジェクト)
Createイベント内

// 1秒間隔のアラームを設定
alarm[0] = 60;

Alarm 0イベント内

// ランダムなグリッド位置を計算
var grid_size = 10;
var grid_x = random(room_width / grid_size) * grid_size;
var grid_y = random(room_height / grid_size) * grid_size;

// 新しいブロックを生成 
instance_create_layer(grid_x, grid_y, "Instances", obj_block);

// 再びアラームを設定 
alarm[0] = 60;
時間でブロックをランダム配置

実行する前から分かっていたが、Alarmを使って時間をかけて、ランダムに配置するCopilotさん。
指示が曖昧なせいなので、もう少し具体的に聞いてみる。

20個のブロックを、x方向は画面中央から左右50ドットの範囲で、y方向はランダムで、自動生成するプログラムを書いて

20個のブロックを左右対称に生成する
center_xでルームの中央のx座標を定義し、offset_xを使って左右にブロックを配置します。

x方向は左右50ドットの範囲で、Y方向はランダムで配置
このコードでは、offset_xを使ってX方向にブロックを中心から左右に最大50ドットまでずらし、Y方向はランダムな位置に設定します。

Copilotさん

いやー、動かん。( ;∀;)
Copilotさんのコードを修正して動くようにしたCreate Eventがこちら。

// 変数の定義
// グリッドサイズを定義
var _grid_size = 10; // グリッドの間隔
var _blocks_per_side = 10; // ブロックの個数
var _x_range = 50; // x方向の範囲
var _center_x = room_width / 2; // centerポジション
var _offset_x; // xオフセットを左右対象にする
var _random_y; // y座標はランダム

// 左右対称にブロックを生成(X方向は指定された範囲内、Y方向はランダム)
for (var _i = 0; _i < _blocks_per_side; _i++) {
    _offset_x = (_i + 1) * _grid_size; // x方向は範囲に基づいてオフセットを計算
	_random_y = random(room_height); // y方向はランダム
    // 左側のブロック
    instance_create_layer(_center_x - _offset_x, _random_y, "Instances", obj_block);
    // 右側のブロック
    instance_create_layer(_center_x + _offset_x, _random_y, "Instances", obj_block);
}

エスケープキーでブロックを再生成するようにコードを追加して、ブロックを自動配置できるようになった。

20個のブロックを左右対称に自動配置

ブロックが重なったり画面外に出たりしていたので、次は重ならないのように修正だな。

自動配置の移り変わり

①時間で配置
②20個のブロックを左右対称に自動配置

色々追加修正調整して、ローグライクなテニスゲームを目指そう。

この自動生成は小さな一歩だが、これをもとにダンジョンとかシューティングやアクションゲームの敵の配置を作っちゃうから大きな一歩だ。

Copilotさんが文字数は500~1000文字以内って言ったが2000近い。
徐々に減らして行って、どんだけ変わるかテストだテスト。

次は、自動配置の重なり対策!


この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?