ブロック崩しを作ろう

 

メイクコード アーケード を使ったゲーム作り第6弾です。
過去に学習した所は、説明を省くことがあります。
分からないことがあれば前のページを再読しましょう。

 

これから作るゲーム

ビデオゲームはここから始まったと言っても過言ではない
「ブロック崩し」を作りたいと思います。

見た目やルールがシンプルで
初心者向けの教材としてよく使われています。
画面下のバーを左右に動かし、飛んでくるボールを打ち返すゲームです。

ブロック崩し

ボールは1つのみ、バーで打ち返せなければゲームオーバーになります。
すべてのブロックを消すとゲームクリアです。

実は…
ブロック崩しは真面目に作ろうとすると難易度が上がります。
中級者から上級者向けの課題ですね。
なのでここでは、細かいことを気にせずに簡易バージョンを作っていきます。

 

プレイヤーを作ろう

新しくプロジェクトを作成します。
プロジェクトの名前を入力して 作成 ボタンをクリックします。

プロジェクト名を入力して作成を押す

 

初めにプレイヤーであるバー(棒)を作っていきます。
スプライト の中の黄色で指定したブロックをドラッグします。

スプライトを1つ用意する

最初だけ の中に配置します。

 

絵を用意します。

スプライトの絵を用意する

 

絵はギャラリーから選ぶのではなく、自作したいと思います。
まずは絵のサイズを変更します。
スプライトエディタの左下にある 16 16 と書かれた部分の右のみを 6 に変更します。
これは左が幅で右が高さです。

スプライトをサイズを変更する

これで幅 16 高さ 6 のスプライトができました。

 

次は色を塗ります。
まずは白色をクリックし、塗りつぶしツールをクリック、そして、編集エリアをクリックします。

スプライトに色を塗る

 

色が塗れたら、画面右下の 完了 をクリックします

完了を押してエディタを終了する

 

シミュレーターを見てください。
中央にバー(白い四角)が表示されます。

シミュレーターにバーが表示される

シミュレーターに画面が出ないとき(読み込み中のグルグルが止まらないとき)リセットしてみてください。 それでも表示されないときは、一度プロジェクトを抜けてホームに戻って再度プロジェクトに入ってください。

 

プレイヤーを操作しよう

プレイヤーとなるバーを操作できるようにします。
まず、表示する位置を変更します。
スプライトの座標を変更するためのブロックを用意します。

スプライトの座標を変更する

最初だけ の中に配置します。

 

座標を画面下の中央に指定します。
x座標を 80 y座標を 104 にします。

座標を画面下に指定する

 

コントローラーmySpriteをボタンで動かす をドラッグします。
最初だけ の中に配置しましょう。

スプライトをボタンで動かすブロック

 

左右のみの操作にするため、パラメータを指定します。
速度vxを 100 速度vyを 0 にします。
これでもう左右のみ動かせます。シミュレーターで試してみましょう。

動きを左右のみに限定する

 

このままでは画面外へ出てしまうので制限します。

動きを左右のみに限定する

 

最初だけ の中に配置します。

動きを左右のみに限定する

 

ボールを表示しよう

ボールを表示するため、スプライト表示用のブロックを追加してください。
変数名が mySprite2 では分かりにくいので変更します。

スプライト追加のブロックを用意する

 

変数名を ball にします。

変数名をballに変更する

 

さて、今後のためにスプライトのタイプを新しく作ります。
Player タイプの所をクリックして 新しいkindを追加 をクリックします。

スプライトのタイプを新しく作る

 

新規タイプとして ball を入力します。
これでタイプを新規に1つ作ったことになります。

新規タイプballを作成する

 

下図のように変数名 ball そして ball タイプになりましたか?
次はボールの絵を用意します。

ボールの絵を用意する

 

スプライトエディタの画面の左下でサイズを変更します。
4 高さ 4 に変更しましょう。

スプライトのサイズを4x4にする

 

色は白を選び、ペンのツールをクリックします。
そして下図のように色を塗りましょう。

絵を十字のように塗る

 

シミュレーターを見るとボールのスプライトは次のように見えます。

ボールの絵をシミュレーターで確認する

これでバーとボールができました。
スプライトのサイズを変更した理由は、当たり判定のためです。
当たり判定は描かれた絵ではなく、スプライトの形(サイズ)で行われるからです。
デフォルトならば 16x16 の四角形で当たりを判定します。
今回、バーは 16x6 の長方形、ボールは 4x4 の四角形で行われます。

 

ボールを動かそう

ボールに速度を指定して動かします。
スプライトmySpriteの速度をvx50 vy50にする をドラッグします。

スプライトの速度を変更する

 

最初だけ の中に入れましょう。
変数名は ball に変更します。

変数ballの速度を指定する

 

これでボールは動き出しますが、画面外へ出てしまいますね。
画面の端で跳ね返るように指定します。
スプライトset mySprite bounce on wall をドラッグします。

画面の端で跳ね返るようにする

 

最初だけ の中に入れます。
変数名は ball に変更します。
これでボールは画面の端で跳ね返るようになります。

画面の端で跳ね返るか確認する

 

バーでボールを打ち返そう

プレイヤーが操作するバーとボールに当たり判定を入れます。
この判定を使い、バーでボールを打ち返すようにします。

スプライト カテゴリから当たり判定のブロックを用意しましょう。
そして下図のように otherSprite を ball タイプに変更します。

バーとボールの当たり判定用ブロックを用意する

 

バーとボールが当たったとき打ち返す仕組みを作っていきます。
今課題のもっとも重要なポイントです。

そもそも、ボールを打ち返すとは何なのでしょうか?
スプライトは y の値が増えるほど下に、減る(小さくなる)ほど上にいきます。
速度 vy を指定するとき、プラス値なら下に移動しマイナス値なら上に移動します。

ボールが上下するときのyの値

 

つまり、速度 vy の符号を反転させるだけで打ち返した動作になります。

速度vyの符号を反転させて打ち返す

今回、速度 vx は変更しません。
バーへの当て方によってボールの向きを変えられるブロック崩しもありますが、プログラムが難しくなるので次の機会にします。

 

スプライトmySpriteのxを0にする をドラッグします。

mySpriteのxを0にするを使う

 

当たり判定の中に入れます。

当たり判定の中に入れる

 

変数を otherSprite に、x を vy(速度 y)に変更します。

otherSpriteのvyに変更する

 

計算 カテゴリから引き算のブロックをドラッグします。

引き算のブロックを用意する

 

下図のように入れてください。

引き算のブロックを入れる

 

スプライトのパラメータを取得するブロックを使います。
スプライトmySpriteのx をドラッグします。

スプライトのx値を取得するブロック

 

引き算ブロックの右側に入れます。

引き算ブロックの右側に入れる

 

計算に使うスプライトをボール otherSprite にします。
値を vy(速度 y) に変更しましょう。

計算に使うスプライトをボールにする

これでボールの vy の値に 0 - vy を入れる動作になります。
つまり vy の符号を反転させるのです。
実際に打ち返せるかシミュレーターでプレイしてみてください。

 

長くなったので次回に続きます。

 

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. ミニダンジョン(完)