本日のScratchテーマは「ブロック崩し」を作ってみるよ
ゴールデンウィーク臨時会を開催。募集期間が短かったけれど、ニンジャ2名が参加してくれました。スクラッチのプログラミングで知っていると便利な機能に空間座標があります。マイナスの座標は中学校で学ぶのですが、今日は思い切ってX座標、Y座標を使ってみる事にしました。「ところで座標って知ってたりしますか」という質問してみたところ、スクラッチの本を読んで少しやったことあるとの事なので、学校で教わる前に体験として知っておくのもアリなのかなと思いました。
![Scratchプログラミングワークショップ](https://coderdojoome.github.io/report/img/practice3/d0502-a.png)
スクラッチ完成品はこちら
「ブロック」を並べます
X座標はヨコの位置だよ。真ん中がゼロ”0”、右側に進むと1,2,3,4と増えていきます。真ん中から左側に進むとマイナス1、マイナス2、マイナス3と変わっていきます。
Y座標はタテの位置だよ。真ん中がゼロ”0”、上に進むと1,2,3。真ん中から下に進むとマイナス1、マイナス2、マイナス3。
![Scratch X座標とY座標](https://coderdojoome.github.io/report/img/practice3/d0502-b.png)
「スタートの旗」を押して最初にやることは、ステージ画面の左上に1つめのブロックを置くコトです。
X座標は[-200]、Y座標は[120]にしてみます。
![Scratch 最初のブロックを置きます](https://coderdojoome.github.io/report/img/practice3/d0502-d.png)
「クローン」って知っているかな、スプライトをコピーする機能です。「クローンを作る」「クローンされたとき」「クローンを削除する」の3つを使います。
![Scratch クローン](https://coderdojoome.github.io/report/img/practice3/d0502-e.png)
1つめのブロックのクローンを作ります。次にX座標を右側に変えます。これを7回繰り返してみましょう。ブロックが重なったりする場合は、移動する数字を大きくしたり小さくしてみましょう。
![Scratch ブロックを横に並べる](https://coderdojoome.github.io/report/img/practice3/d0502-c.png)
「ボール」を作ります
スプライトの名前は「ボール」に変えると後で便利。ステージ画面の真ん中(X座標=0, Y座標=0)が最初の位置。そしてボールの向きを下、少し斜めに向けて、ずーっと10歩動かします。画面端に着いたら跳ね返るようにします。
![Scratch ボールを動かす](https://coderdojoome.github.io/report/img/practice3/d0502-f.png)
動作を試そう。旗を押してスタート。
![Scratch ボールを動かす](https://coderdojoome.github.io/report/img/practice3/d0502-g.png)
「ラケット」を作ります
スプライトの名前を「ラケット」に変えます。キーボードの矢印「みぎ」が押されたら、90度(右)に動かします。左はその反対ね。
![Scratch ラケットを動かす](https://coderdojoome.github.io/report/img/practice3/d0502-h.png)
動作を試そう。旗を押してスタート。
![Scratch ラケットを動かす](https://coderdojoome.github.io/report/img/practice3/d0502-i.png)
「ボール」を打ち返そう
「ボール」が「ラケット」に当たったら跳ね返るので、「ボール」のプログラムを改造します。ボールが、もしラケットに触れたら向きを反対にします。ここは下図のままコードを組み立ててください。
![Scratch ボールをラケットで打ち返す](https://coderdojoome.github.io/report/img/practice3/d0502-j.png)
動作を試そう。旗を押してスタート。
![Scratch ボールをラケットで打ち返す](https://coderdojoome.github.io/report/img/practice3/d0502-k.png)
ここまでの完成形
次は何をしたらいいかな?
![Scratch ブロック崩し](https://coderdojoome.github.io/report/img/practice3/d0501-n.gif)
「ブロック」が「ボール」に当たったら「ブロック」を消すように改造してみよう。「ブロック」が消えるので「ブロック」のプログラムを改造します。
![Scratch ボールに触れたらブロックを消す](https://coderdojoome.github.io/report/img/practice3/d0502-o.png)
動作を試そう。旗を押してスタート。
![Scratch ボールに触れたらブロックを消す](https://coderdojoome.github.io/report/img/practice3/d0502-p.png)
「ブロック」をタテにも並べてみよう。これで「ブロック崩し」ゲームは完成。もっと改造するアイディアがひらめくまで少し遊んでみよう。何が足りないかな?
![Scratch ブロック崩し](https://coderdojoome.github.io/report/img/practice3/d0502-q.png)
改造のアイディア
音を鳴らそう。ブロックを消した時の音。ラケットで打ち返した時の音。得点を数えて表示するのもいいね。全てのブロックを消したらステージクリア。また新しく並べなおす。ゲームオーバーを作るか。ラケットで打ち返せなかった時に失敗だね。
「得点」を追加する
「ブロック」のプログラムを改造するね。旗が押されたときの初期設定。
「ブロック」を並べるイベントの開始は、旗じゃなくて「ステージクリア」のメッセージを受け取った時にしよう
「得点」変数と「残りブロック」変数を追加してみた。
![Scratch ブロック崩し](https://coderdojoome.github.io/report/img/practice3/d0502-r.png)
続けて「ラケット」のプログラムを改造するよ。
旗が押されたときの初期設定だ。得点をゼロにして、残りブロックをブロックの数に合わせる。
もし「残りブロック」変数がゼロ(0)になったらステージクリアだよ。
![Scratch ブロック崩し](https://coderdojoome.github.io/report/img/practice3/d0502-s.png)
「ゲームオーバー」を追加する
「地面」と「ゲームオーバー」のスプライトを追加したよ。
「ボール」のプログラムに、「ボール」がもし「地面」に触れたら「ゲームオーバー」メッセージを送る。
![Scratch ブロック崩し](https://coderdojoome.github.io/report/img/practice3/d0502-t.png)
「ゲームオーバー」のプログラムには、「ゲームオーバー」メッセージを受け取ったら表示する。
![Scratch ブロック崩し](https://coderdojoome.github.io/report/img/practice3/d0502-u.png)
「ブロック崩し」ゲームでした
あとは自分でいろいろと改造してみてねー。
![Scratch ブロック崩し](https://coderdojoome.github.io/report/img/practice3/d0501-m.gif)
ばいばーい
![CoderDojo青梅 ばいばーい](https://coderdojoome.github.io/report/img/practice3/d0502-v.png)
Copyr