迷路ゲームのプログラミングその2

前回の「矢印キーでスクラッチキャットを動かす」では、スクラッチキャット(ネコのスプライト)を矢印キーを使って自由に動かすプログラミングをしました。今回は、迷路ゲームのゴールを作ってスクラッチキャットがゴールに触れたら「ゴール」と言うプログラムを作りましょう。

目次

2. ゴールを作る

迷路と言えば、入口から出口に出るまでのゲームですが、今回は出口として「リンゴ」のスプライトまでたどり着けたらゴールという設定にします。

スクラッチキャットがリンゴに触れたときに「ゴール!」と言う

まず、ステージにリンゴを置くために、スクラッチで用意されているスプライトの中からリンゴを選んでいきましょう。

スプライトリストにあるスプライトをライブラリーから選択をクリックするとスプライトが格納されている「スプライトライブラリー」が表示されます。

この中の「Apple」を選択して、ダブルクリック(マウスの左ボタンを2回連続クリック)するか右下にある「OK」をクリックしてください。するとステージにリンゴのスプライトが現れました。スプライトリストにもリンゴが追加されているのが分かります。

リンゴが追加されるとスクリプトエリアにあったブロックがすべて消えてしまいました。これは消えたのではなく、リンゴのスクリプトエリアになります。

試しにスプライトリストにあるスクラッチキャットをクリックしてみてください。すると先ほどまでプログラミングしたブロックが現れます。このようにスクリプトエリアは1つ1つスプライトごとに独立して設けられています

今どのスプライトに対してプログラミングをしているか確認するには、スプライトリストで選択されているスプライトで確認できます。他の方法として、スクリプトエリアの右上に半透明のスプライトが表示されていますので、こちらでも確認ができます。

複雑なプログラミングをしていくとスプライトを間違えてプログラミングしていることもありますので、現在どのスプライトに対してプログラミングしているのかしっかり確認した上で、作業しましょう。

話を戻すとリンゴを置いたら次は、ゴールの条件をプログラミングしていきます。ゴールは「リンゴまでたどり着く」でしたので、「スクラッチキャットがリンゴに触れたとき」がゴールの条件になります。

それともう1つリンゴに触れたときにゴールとはっきり分かるように、スクラッチキャットに「ゴール!」を言わせるプログラムも一緒にプログラミングしていきましょう。

スクラッチキャットがリンゴに触れたときに「ゴール!」と言う2

「スクラッチキャットがリンゴに触れたとき」ですが、「もし~したとき」というのは、どういう風にプログラミングすればいいか、もう知っていますよね?

スクラッチキャットを矢印キーを使って自由に動かすのに利用したもし◆ならを使います。

もし端に着いたら、跳ね返るの下にもし◆ならを置きましょう。

次に条件式の中に何を入れるかですが、「リンゴのスプライトに触れたとき」が条件になりますので、調べるの中にあるマウスのポインターに触れたを入れます。

今の状態では、「マウスのポインターに触れたとき」になっていますが、▼をクリックすると一番下に「Apple」とあります。

「Apple」はリンゴのスプライトの名前です。スプライトリストのリンゴを見てみるとすぐ下に「Apple」と書かれています。スプライトの名前を変更する場合は、iマークをクリックして、テキストボックスの中の「Apple」を変更することで名前を変えることができます。

今回は「Apple」のまま利用しますので、▼をクリックして「Apple」に変更しましょう。これで、「もしリンゴのスプライトに触れたとき」の条件が完成しました。

次にリンゴに触れたときにスクラッチキャットが「ゴール!」と言うプログラムをつくっていきます。

何かを話させたい場合は、見た目の中にあるHello!と言うを使います。

まずは、もし◆ならの中にHello!と言うを入れましょう。そして、文字を「Hello!」から「ゴール!」に変更したらプログラミング完成です。これでリンゴに触れたらスクラッチキャットが「ゴール!」と言うか確認してみましょう。

確認してみると確かにリンゴに触ったときに「ゴール!」と言いますが、その後もしゃべったままで自由に動かせます。これは、ずっとの中で処理されていますので、プログラムを止めることができず、「ゴール!」と言った後も処理し続けているからです。

スクラッチキャットがリンゴに触れたときに「ゴール!」と言う3

ということは、リンゴに触れたときに「ゴール!」と言うのと一緒にプログラムを止める必要があります。スクラッチには、プログラムを止めるブロックとして制御の中にあるすべてを止めるが用意されています。

試しにHello!と言うの下にすべてを止めるを入れてどのように動作するか確認してみましょう。

リンゴに触れてみると矢印キーを押しても何も動かなくなりましが、「ゴール!」と言いません。厳密に言えば、「ゴール!」といった後にすべてのプログラムを止めており、処理スピードが速いため見えないだけですが、このプログラムでは、リンゴに触れたときにスクラッチキャットが「ゴール!」と言うプログラムを実現できないことになります。

元々ずっとは矢印キーの動作確認で利用したものなので、このブロックを絶対使わないければいけないということではありません。

今回のリンゴに触れたときにスクラッチキャットが「ゴール!」と言うプログラムに合わないのであれば最適なブロックに変えてみましょう。

スクラッチキャットがリンゴに触れたときに「ゴール!」と言う4

繰り返しが必要なのは矢印キーで動かすプログラムなので、リンゴに触れるまでは繰り返しを行い、リンゴに触れた後は繰り返しから抜け出すようにプログラミングしていけば、うまくいきそうですね。

そのような条件を満たしている間繰り返す場合は、制御の中にある◆まで繰り返すを使います。

まずは、◆まで繰り返すを独立してスクリプトエリアに置きましょう。

「リンゴに触れたとき」まで繰り返すので、条件式の中にはマウスのポインターに触れたを入れて「Apple」に変更します。

そして、◆まで繰り返すの中に矢印キーで動かすスクリプトをすべて入れます。

いらなくなったらブロックはドラッグ&ドロップしてブロックパレットに持っていくと削除できますので、いらないブロックは削除しましょう。

次に、◆まで繰り返すの下にはブロックを繋げることができますので、その下に先ほどスクリプトエリアに置いたHello!と言うを繋げます。

これで、リンゴに触れたときまで矢印キーでスクラッチキャットを動かして、「ゴール!」と言うプログラムが完成しました。希望通りに動作するか試してみましょう。

リンゴに触れたら「ゴール!」と言って矢印キーを押しても反応しなくなったのが確認できたかと思います。ここまででゴールまでのプログラミングが完成しました。次は迷路のステージを作っていきます。

スクラッチプログラミング入門

スクラッチプログラミング入門

Scratchは、MITメディアラボが開発した子ども向けビジュアルプログラミング言語です。
スクラッチプログラミング入門では、スクラッチの基本的な使い方から複雑なプログラムの作り方まで子供たちが楽しく学ぶための教育サイトです。

TOP