
AIと作る「ボールの通り道☆ブロック自動配置システム」

前回は、ブロックをシンメトリに配置するシステムを作った。
今回は、ボールの通り道を作るようにする。
アドバイザーのAIはCopilotさん
ボールの通路を自動生成
ボールの通路を作るプログラムをAIにお願いする。
GameMakerで、ブロックを配置する時に、Y方向に通路になるような空きスペースを作る方法を教えて
了解しました。
Y方向に通路を確保しつつブロックを配置する方法をご紹介します。
プロジェクトのセットアップ:
・ブロックと空きスペース用のスプライトを作成します。
・各列に1つの空きスペースをランダムに配置します。
・残りの空きスペースにブロックを配置します。
なるほど、空きスペース用の透明ブロックを作って座標をあらかじめ埋めておき、それ以外の場所にブロックを置くってことね。
サンプルコードもくれたけど、今まで作った物に対応しないので割愛。
通路用の透明ブロックは、Y座標だけ選べば置く必要はない。
通路の幅は、y_path_rangeとかで指定できるようにして、選んだY座標から通路の範囲にブロックの座標が入ったら除外するようにプログラムを追加。
新しく追加修正したコード
y_path_range = 60;
// 重なりを判定する関数
function is_overlapping(_new_x, _new_y) {
for (i = 0; i < array_length(x_positions); i++) {
if (abs(_new_x - x_positions[i]) < obj_block.sprite_width && abs(_new_y - y_positions[i]) < obj_block.sprite_height) {
return true; // ブロックが重なっている場合
}
// 新しく通路とブロックが重なった場合の処理を追加
if(abs(y_path - _new_y) < y_path_range) return true;
} return false;// 重ならない場合
}
// 空きスペースのY座標を決める
y_path = irandom(room_height/grid_size_y/2) * grid_size_y;

恒例の「BlockTennis」にガッチャンコ
BlockTennisに通路システムをガッチャンコしてブロックの個数やX座標の範囲、通路の幅などを調整した。

通路が開いたので、ボールが両陣営に移動するので、CPUと戦ってる感じにはなってきた。これでブロック自動配置システムは一旦終了かな。
それでも、片方がブロック崩しをやっている時にやれることがないので、その辺を追加してみる。
自動配置システムの変遷





