スタータープロジェクト

リミックス用プロジェクト

完成サンプル
サンプル
難易度

入門にゅうもんレベル

チャプター数
全4章
タグ

出会って消えてコンニチハ!進化できるように進歩した|スイカゲーム⑦

ok-scratch
同じ種類の玉がぶつかりしとき、伝説の現象が起こるであろう。古代より伝わりしその名は「シンカ」なり!なりけり!

Scratchでスイカゲームを作ろう!~進化(合体)編~

こんにちは!今回はスイカゲームの一番楽しい部分、「進化(合体)」機能を作っていくよ!同じ種類のフルーツどうしがぶつかると、より大きなフルーツに変身する、あの気持ちいい瞬間を実現しよう!

①進化の条件を設定しよう!

まずは、どんな時に進化するのかの条件を設定するよ:

【進化の条件】
1. 「弾の情報を更新する」ブロックに条件チェックを追加
2. 「もし」ブロックで「自分の半径 = 相手の半径」かチェック
3. 同じサイズなら進化、違うサイズならバウンドするだけ

これで同じサイズのフルーツどうしがぶつかったときだけ進化するようになるよ!

②進化する時の動きを作ろう!

進化するときには、新しく大きなフルーツを生み出す必要があるね:

【進化する処理を作る】
1. 新しいブロック定義「進化する」を作る
2. 新しいフルーツの座標は二つのフルーツの中間点に設定
   - X座標 = (自分のX座標 + 相手のX座標) ÷ 2
   - Y座標 = (自分のY座標 + 相手のY座標) ÷ 2
3. スピードは二つのフルーツの合計を半分に
   - スピードX = (自分のスピードX + 相手のスピードX) ÷ 2
   - スピードY = (自分のスピードY + 相手のスピードY) ÷ 2
4. 半径は自分の半径 + 大きさ調整値(5)で大きくなる
5. 角度は二つのフルーツの角度の平均に

こうすると、二つのフルーツが合体して新しいフルーツが生まれる感じになるよ!

③元のフルーツを消す処理を作ろう!

進化したら、元の二つのフルーツを消さないといけないね:

【消す処理を作る】
1. 新しいブロック定義「消す」を作る(引数:消す玉)
2. 相手の玉のデータをすべて空白にする
   - X座標、Y座標、スピードX、スピードY、半径、角度をすべて空白に

これで進化した後、元のフルーツの一つが消えるようになったよ!でも…

④バグを発見!リストに空白が残る問題

試してみると、リストに空白のデータが残ってしまうバグが見つかったよ:

【問題点】
- フルーツを消しても、リストからは削除されていない
- リストに空白のデータが残り続ける
- すぐに空白が埋まってしまい、正しく消えない

このバグを直さないと、どんどん問題が広がっていくよ!

⑤空白行を片付ける機能を作ろう!

リストの空白を掃除する「片付け」機能を追加しよう:

【空白行を片付ける処理】
1. 新しいブロック定義「空白行を片付ける」を作る
2. インデックス変数を作り、1からスタート
3. リストの長さ分だけ繰り返す
4. もしリストのインデックス番目が空白なら、その項目を削除
5. 空白でなければ、インデックスを1増やす

これで進化した後にすぐリストを片付けることで、ゲームがスムーズに動くようになったよ!


今回は「進化」の機能を完成させたね!同じサイズのフルーツがぶつかると大きなフルーツに変わる、スイカゲームならではの楽しさが実現できたよ。次回は「音」を追加して、もっとゲームらしくしていこう!

スクラッチオン!

スクラッチゲーム攻略

スクラッチゲーム一覧

    • 厳選されたスクラッチ人気作品リストがレビュー付きで楽しめます
      世界中のヒットゲームをスクラッチで遊ぼう
      趣味に関するスクラッチ作品例
      勉強になるスクラッチ作品