ブロック崩しを作ろう 2

 

前回の ブロック崩しを作ろう のつづきです。

これまでゲームを作ってきて「まだ身についていないな」と感じたら、もう一度やり直してみてはいかがでしょうか。
プログラミング学習の本質は暗記ではありませんが、どんな機能があるのかを知っておくことは重要です。
知らなければ使うこともできませんし、調べることさえできないからです。
そのため、同じ課題に繰り返し取り組むことには、それなりの効果があります。

 

打ち返す仕組みを変更しよう

ボールをバーで打ち返しているとき、たまに謎の現象が起こることがあります。
下図のように、バーの中をボールが跳ね回ることがあるのです。

バーの中でボールが跳ね回る

 

これは、バーの側面にボールが当たったときに発生します。
ボールがバーに当たると、その向きは反転しますが、次のフレームでバーから出られないため、反転した符号がさらに反転してしまうのです。
対処法はいくつかありますが、今回はボールが常に上方向に打ち返されるように、絶対値を使って計算する方法で解決してみます。

計算0 の絶対値 をドラッグします。

0の絶対値を使う

 

下図のように、当たり判定の下に配置しましょう。

当たり判定の下に置く

 

otherSprite vy(y方向の速度) を絶対値の中に入れます。

otherSpriteのvyを絶対値の中に入れる

 

絶対値のブロックを戻します。

絶対値を戻す

 

絶対値にすることで計算の結果は必ずマイナスになります
つまりボールは常に上方向に打ち返されるようになります。

 

ブロックを表示しよう

最後にブロックを作成します。
分かりやすくするために、段階を踏んで作業を進めていきます。

まずは、 最初だけ の最後に新しいスプライトを用意しましょう。
準備ができたら、ブロックの絵を描いていきます。

最初だけの中に新しいスプライトを用意する

 

絵のサイズを幅 19 高さ 9 に変更します。

スプライトサイズを 19x9 にする

 

緑色を選択し、塗りつぶしツールで色を塗りましょう。
終わったら「完了」をクリックしてエディタを閉じます。

緑で塗りつぶす

 

変数名 mySprite2 を分かりやすい名前に変更します。

スプライトの名前を変更する

 

新しい変数名を block にします。

変数名をblockにする

 

下図のようになりましたか?

変数名をblockにする

 

シミュレーターでブロックを確認しましょう。

シミュレーターでブロックを確認する

 

スプライトの位置を変更します。
命令を組み込んだら、変数名を blockに、位置を x 0 y 20 に設定します。

シミュレーターでブロックを確認する

 

画面を確認するとブロックが半分だけ隠れて左上に表示されます。

ブロックは画面の左上に表示される

 

複数のブロックを表示しよう

ブロックを画面いっぱいに並べます。
ループ の中から、黄色で囲った繰り返しをドラッグします。

繰り返し処理を使う

 

変数 block のスプライトをループの中に入れます。
位置を指定するブロックも一緒に入れます。

スプライト処理をループの中に入れる

 

ループ処理を 最初だけ の中に戻します。

ループ処理を最初だけの中に戻す

 

下図のようになります。

スプライト処理をループの中に入れる

 

おっと、忘れていました。
変数 block のタイプを Enemy に変更します。

blockのタイプをenemyに変更

 

ブロックを並べるには、表示される座標を少しずつずらす必要があります。
そのための仕組みをこれから作っていきましょう。

計算 の中の 0 x 0 をドラッグします。

表示座標を計算する

 

x座標の枠に入れます。

x座標の中に計算式を入れる

 

変数 カウンター を先ほどの計算式に入れます。
すると計算式のブロックが外に押し出されてしまいました。

カウンターを計算式に入れる

 

違う手順で作業を進めます。
計算式のブロックは外に配置したままにして、カウンター を入れます。
そして カウンター x 0 を x座標の中に戻します。

カウンターの計算式をx座標に入れる

 

変数 カウンター に掛ける数値を 20 にします。
これでブロックは、x座標を 20 ずつずらして表示されます。
シミュレーターの画面を確認してみましょう。
ブロックの幅は 19 に設定しているため、下図のように少し隙間ができます。

カウンターに20をかける

 

画面いっぱいに並べるには繰り返しが足りません。
カウンターを 0 から 7 までに変更して、ブロックを8つ作ります。

8回繰り返す

 

なぜか、右側が少し空いてます。
画面サイズは幅 160 なので、幅 19 のブロック(計算では20を掛けている)を8つ並べたら幅いっぱいに表示されるはずです。

ブロックが左にずれている理由は、スプライトの基点が中心にあるためです。
ブロックの幅は 19 なので、その中心 10 の数だけ右にずらして表示すれば解決です。
+10 するように計算式を変更します。

計算の中から足し算を用意します。
足し算の中に カウンター x 20 を入れます。
最後に カウンター x 20 + 0 を x座標に戻します。

カウンターx20+0をx座標に入れる

 

足す数を 10 に変更します。完成した計算式は カウンター x 20 + 10 になります。
画面を確認してみましょう。
画面いっぱいにブロックが並びましたね。

x座標に+10する

 

ブロックの表示を3段にしよう

ブロックの表示を3段にします。
これまでの処理をコピーすれば簡単に作れます。
ループブロックを右クリックしてメニューを出し「複製する」を選びます。

ブロック表示のループを複製する

 

複製されたブロックは半透明になってます。
スプライト表示と位置指定のブロックだけドラッグして、コピー元のループの中に入れます。
残ったループブロックは捨てましょう。

複製したスプライト処理をループに入れる

 

コピーしたブロックの y座標を 32 に変更します。
画面を確認すると2段になっています。

複製したブロックのy座標を32にする

 

2段目のブロックの色を変更します。今度はオレンジ色で塗りましょう。
緑色で塗りつぶした方法と同じ手順で作業します。

2段目のブロックをオレンジ色にする

 

3段目を作ります。先ほどとは違う手順で作業します。
2段目のスプライト(オレンジのblock)を右クリックして複製しましょう。
続けて2段目のblockの位置指定も複製します。
それらを2段目の下に追加してください。

2段目のスプライト処理を複製する

 

下図のようになっていますか。
3段目の y座標を 44 に変更します。

複製したブロックのy座標を44にする

 

3段目の block は黄色に塗りつぶしましょう。
カラフルな画面になりました。

3段目のblockを黄色で塗る

 

次回の完結編に続きます。

 

MakeCode Arcade

  1. MakeCodeはいかが
  2. りんご狩りゲーム
  3. りんご狩りゲーム(完)
  4. ピザを避けてゲーム
  5. ピザを避けて 2
  6. ピザを避けて(完)
  7. アカウント登録
  8. ケーキ早食いゲーム
  9. ケーキ早食い 2
  10. ケーキ早食い(完)
  11. 危険ドライブ
  12. 危険ドライブ 2
  13. 危険ドライブ(完)
  14. 15秒シューティング
  15. 15秒Shooting 2
  16. 15秒Shooting(完)
  17. ブロック崩し
  18. ブロック崩し 2
  19. ブロック崩し(完)
  20. ヘビキングを撃て
  21. ヘビキング(完)
  22. ちょびっと迷路
  23. ちょびっと迷路 2
  24. ちょびっと迷路(完)
  25. でんでんジャンプ
  26. でんでんJump 2
  27. でんでんJump(完)
  28. ミニダンジョン
  29. ミニダンジョン 2
  30. ミニダンジョン 3
  31. ミニダンジョン 4
  32. ミニダンジョン(完)