最終更新日 2025年4月23日 by toytune
スクラッチはアメリカの大学、MIT(マサチューセッツ工科大学)メディアラボで開発されたビジュアルプログラミング言語です。
はじめに
ここまで作ったゲームに、さらにゲームらしい要素を加えていきます。今回は2つの新しい機能を追加します。
- ネコが蝶に触れるとスコアが加算される
- スコアが増えると蝶のスピードが上がり、ゲームの難易度が上がる
このあたりから、少し処理が複雑になってきます。でも大丈夫。ゲームらしい動きを実現するには、「変数」と「メッセージ」を使うのがポイントです。
「変数」と聞くと難しそうに感じるかもしれませんが、簡単に言えば「データを入れる箱」のようなもの。スコアやスピードなど、数値を一時的に保存しておくのに使います。
この記事では、「変数」と「メッセージ」の基本的な使い方を、実際のゲームづくりを通してわかりやすく紹介していきます。ぜひチャレンジしてみてください!
「変数」については、こちらの記事も是非参照してください。
▼ 今回作成するプログラム(の旗をクリックして動作を確認することができます)
スコア表示を追加しよう:変数の使い方
まずは、ネコが蝶に触れるたびにスコアが1点ずつ加算されるしくみを作っていきます。
「変数」というデータを入れる箱を利用し、スコアが加算(足し算)される処理を追加していきたいと思います。
「変数」を使うには、左側のコードのリストにある「変数」のところクリックします。
ここでは新たに「変数」を作りたいと思いますので、「変数を作る」をクリックします。

クリックすると、「変数」の設定をするモーダルが表示されます。
新しい変数名のところは、どのような変数名でも大丈夫です。今回、わかりやすい名前で「スコア」というものに変更します。
その下に2つのラジオボタンがありますが、ここではそのままで大丈夫です。もし変更してしまったら「すべてのスプライト用」にチェックが入っているようにします。
できたら、右下の「保存」をクリックします。

これまで作成してきたコードブロックを見直しておきます。
まず最初に「ネコ」の「スプライト」のブロックのButterfly 2(蝶)の「スプライト」に触れた場合の処理にコードを追加していきます。

「〜を0にする」をドラッグし、「が押されたとき」の下に挿入します。
挿入できたら、変数名となる部分をクリックして「スコア」に変更します。値の部分は「0」に変更してください。図のように「スコアを0にする」になっていれば大丈夫です。

同じく左側の「変数」のところから、「〜を〜ずつ変える」をドラッグし、「捕まえた!と1秒言う」のすぐ下に挿入します。
挿入できたら、変数名のところをクリックし「スコア」を選択します。値の部分を「1」に変更します。図のように「スコアを1ずつ変える」になっていれば大丈夫です。
これで、「蝶」のスプライトに触れるたびにスコアが「1」ずつ加算(足し算)されるプログラムができました。

これで、ネコが蝶に触れるたびにスコアが1点加算されるようになります。
実際に動かしてみて、画面左上にスコアが表示され、触れるたびに数字が増えるか確認してみましょう。
をクリックしスタートします。ネコの「スプライト」をジャンプさせてButterfly 2(蝶)の「スプライト」に触れてみます。ステージの左上に表示されたスコアが、触れるたびに1点ずつ加算されていくのが確認できるかと思います。

蝶のスピードを上げて難易度をアップしよう:メッセージの使い方
次は、「ネコが蝶に触れたとき」に蝶のスピードを上げていく機能を追加します。ここでは「メッセージ」というしくみを使います。
メッセージは、スプライト同士で情報をやり取りするための便利な方法です。
ここでは、ネコの「スプライト」がButterfly 2(蝶)の「スプライト」に触れたタイミングで、「メッセージ」を送り、Butterfly 2(蝶)の「スプライト」のスピードを徐々に上げていくことで、ゲームの難易度を変化させていこうと思います。
今回は、「ネコ」の「スプライト」から「メッセージ」を送るようにしたと思うので、左側の「イベント」から「メッセージ1を受け取ったとき」をドラッグし、「スコアを1ずつ変える」のすぐ下に挿入します。
挿入ができたら、「メッセージ1」のところをクリックし、「新しいメッセージ」を選択します。

選択するとモーダル画面が表示され、新しい「メッセージ」の名を設定します。
ここでは「捕まった」という名前を入力しています。他にわかりやすい名前であれば何でも構いません。入力できたら、「保存」をクリックします。

画面がもどると、先ほど作成した「メッセージ」である「捕まった」になっていることがわかります。

今度は、先ほど設定した「メッセージ」を受け取る側の蝶のスプライトの方に受け取りの処理を追加していきます。
スプライトを切り替えたいので、ステージ下にあるスプライトのところから、「蝶」のスプライトをクリックします。ここでは「Butterfly 2」をクリックします。

「メッセージ」の受け取りは、別のプログラムにする必要があるので、左側の「イベント」からどこか空いてる場所に「メッセージ1を受け取ったとき」をドラッグし配置します。
ドラッグできたら、「メッセージ1」の部分をクリックし、「捕まった」を選択します。

次にButterfly 2(蝶)の「スプライト」にも「変数」を設定します。
また新たに「変数」を作成したいので、左側の「変数」から、「変数を作る」を再びクリックします。

「新しい変数」のモーダルが表示されるので、新しい変数名を「スピード」とします。ここの変数名もわかりやすい名前であれば何でも構いません。
次にこの「変数」はこのButterfly 2(蝶)の「スプライト」でしか使わないものなので、ラジオボタンは右側の「このスプライトのみ」にチェックします。
できたら最後に「OK」をクリックします。

「OK」をクリックすると、コード(コードブロック)の画面に戻ります。
ステージを確認すると、スピードが追加されています。

次に先ほど作成した「変数」を設定します。同じく左側の「変数」のところから「〜を〜ずつ変える」をドラッグで「捕まったを受け取ったとき」のすぐ下に挿入します。
挿入できたら、変数名をクリックで「スピード」を選択し、「〜ずつ変える」を「5ずつ変える」に変更します。図のように「スピードを5ずつ変える」になっていれば大丈夫です。

今度は、実際に「メッセージ」を受け取ったタイミングで、Butterfly 2(蝶)の「スプライト」が移動するスピードを「変数」にセットしたスピードになるようにします。また最初の「が押されたとき」のスピードの初期値を設定していきます。
まず最初のスピードとなる初期値を決めたいので、左側の「変数」から「〜を〜にする」をドラッグし、「が押されたとき」の下に挿入します。挿入できたら変数名をクリックし「スピード」を選択、値を「10」に変更します。図のように「スピードを10にする」になっていれば大丈夫です。

次に「変数」にセットされたスピードを変更します。現在「10歩動かす」のところに「変数」から「スピード」をドラッグし、「10」のところを変数の「スピード」に置き換えます。
これで、「ネコ」の「スプライト」から送くられた「メッセージ」をButterfly 2(蝶)の「スプライト」が受け取ったとき、Butterfly 2(蝶)の「スプライト」のスピードが5ずつ上がっていくようになりました。

これで、ネコが蝶に触れるたびに蝶のスピードが5ずつアップし、だんだん逃げるのが難しくなっていくようになります!

スピードの表示を隠す
ゲーム中にスピードの数値は表示しなくてOKなので、非表示にしておきましょう。
左側の「変数」のところから「変数〜を隠す」ドラッグで「が押されたとき」のすぐ下に挿入します。「〜」の部分を「スピード」に変更し、「変数スピードを隠す」に変更します。これで、プログラムが動くと最初にスピードの表示が非表示になります。

これで完成です!をクリックしスタート!
ネコが蝶に触れるたびにスコアが増え、蝶のスピードも上がっていくのがわかります。うまく動作しているか確認してみてください。

まとめ
- スコアやスピードのような「数値」は「変数」で管理する
- スプライト間のやりとりには「メッセージ」を使う
- メッセージを受け取ったときの処理は、別のブロックとして作る
- 変数は「〜を隠す」ブロックで非表示にできる
はじめは少し複雑に感じるかもしれませんが、「変数」や「メッセージ」を使えるようになると、ぐっとゲームらしくなります。もし途中でうまく動かなくなったら、「どんなときに、どう動かしたいのか?」を紙に書いて整理してみるとスムーズにいくかもしれません。
数値を変えたり、新しい変数を追加して、自分なりに難易度やスコアシステムをアレンジしてみるのも楽しいですよ!
次回は、スコアに終わりをつける「ゲームオーバー」の仕組みを追加していきます。お楽しみに!
次の記事:スクラッチでリストを使いセリフを出し分ける。敵のスプライトを追加する








