迷路ゲームのプログラミングその1
今回は、スクラッチのプログラミングで簡単な迷路ゲームを作ってみます。
1. 矢印キーでスクラッチキャットを動かす

まずは、Scratchのマスコットであるスクラッチキャット(ネコのスプライト)を矢印キーを使って自由に動かすプログラムを作っていきます。
スプライトの動かす方法として、ブロックパレットのの中にある
を使ったのを覚えていますか?
動かす方法は、以外にも色々な方法があり、今回は、
の中にある
と
を使っていきます。
まずは、動作の確認をしましょう。この2つのブロックをくっつけずにそれぞれ離れてスクリプトエリアへ置いてクリックしてみてください。
をクリックすると右に10ずつ移動し、
をクリックすると上に10ずつ移動します。
次にx座標を「-10」、y座標を「-10」に変更してどう動くか確認してみましょう。
クリックしてみると左に10ずつ、下に10ずつ移動したのが分かります。数値をマイナスにした場合は、このように逆の方向に進みます。
今回は、この2つのブロックを作って上下左右に移動するプログラムを作っていきます。

動かすブロックが決まりましたので、次は矢印キーを押したときに動かすための条件を作っていきます。条件としては、「もし矢印キーが押されたときには動かすブロックを実行する」となります。
「もし◆なら■する」といった条件を設ける場合は、の中にある
を使います。
まず最初に、をスクリプトエリアに配置しましょう。現段階では
の中身が空っぽです。この中に「矢印キーが押されたとき」の条件を入れていきます。
「矢印キーが押されたとき」を条件としたい場合は、の中にある
を使います。
先ほど配置したの
に
を入れてみましょう。
この状態では、「もしスペースキーが押されたとき」となってしまいますので、「スペース」のすぐ右にある▼をクリックして「右向き矢印」を選択してください。これで、「もし右向き矢印キーが押されたとき」のプログラミングが完成しました。
右向き矢印キーを押したときに右へ移動させるので、をこの中に入れます。
この状態で一度スクリプトをクリックして右向き矢印キーを押してみましょう。
何も反応しませんよね。
プログラムは上から順に処理されていきますので、スクリプトをクリックしたときにのブロックが処理されます。
しかし、この処理がされるときに右向き矢印キーは押されていないため、が処理されずにプログラムが終了してしまったというわけです。

ちゃんと右向き矢印キーを押したときに処理させるにはを常に繰り返しチェックする必要があります。
「繰り返し」については、「スクラッチを触ってみよう(4.繰り返す)」でも一度使ったことがあるを使ってみましょう。
の中にある
を先ほど作ったスクリプトの一番外側に設置して、クリックしてみてください。
これで中にあるスクリプトが繰り返されます。この状態で右向き矢印キーを押すとスクラッチキャットが右へ移動します。

右向き矢印キーを押したときのプログラミングが完成したら、次は左向き矢印キーを押したときに左へ10歩移動するプログラムを作ってみましょう。
基本的には先ほど作ったスクリプトと同じ内容になるので、コピーして作っていきます。
コピーしたい範囲の一番上にあるにマウスカーソルを置きます。マウスカーソルを置いた状態で右クリックをすると「複製」「削除」「コメントを追加」「ヘルプ」という項目がでてきますので、「複製」をクリックします。
「複製」をクリックすると同じスクリプトが現れますので、の一番下に配置します。後は、左向き矢印キーを押したときに左へ10歩移動するプログラムに変更すればいいので、
の「右向き矢印」を「左向き矢印」に、
の「10」を「-10」に変更してプログラミング完成となります。これで、「右向き矢印キー」「左向き矢印キー」を押して移動するか確認しましょう。

「右」「左」に動かすプログラムは完成しましたが、ずっと「右向き矢印キー」を押していくとスクラッチキャットがステージから見切れてしまいます。
見切れないようにするためには、ステージの端で動きを止める必要がありますが、今回はの中にある
を使います。
このブロックはスプライトがステージの端に着いたときにそのまま進むのではなく、スプライトの向きを跳ね返すことができるブロックです。
の中の一番下に置いてどのような動きをするのか確認してみましょう。
スクラッチキャットがステージの端に着いたら、そのままいくら矢印キーを押しても見切れず止まります。また、スプライトの向きも左向きからから右向きへ、右向きからから左向きへと変わりますが、それと同時の上下反転してしまっています。
これはスクラッチキャットの回転方法が初期設定で「自由回転」に設定されているからです。スプライトの回転方法を設定する場合は、の中にある
を使ってプログラミングもできますが、今回はスプライトリストから設定していきます。

スプライトリストにあるスクラッチキャットのをクリックしてください。
するとスプライトの位置情報や向き、回転の種類、表示状態などの設定を確認をすることができます。
現在、回転の種類がに設定されていますが、こちらは「自由に回転する」設定となっています。
上下回転しないようにするにはをクリックして回転は「左右のみ」の設定にしましょう。
これで回転の設定は完了しました。「右向き矢印キー」「左向き矢印キー」を押して上下回転しないかを確認しましょう。
ちなみにを選択すると一切「回転しない」設定となります。

左右移動のプログラミングが完成したら、次は上下移動のプログラムを作っていきます。こちらはに入れ替えて「上向き矢印」「下向き矢印」に変更すればいいだけなので、簡単ですね。
上下移動のプログラミングが完成したらどの向きにも移動できるか確認しましょう。
これで、スクラッチキャットが矢印キーで上下左右に自由に動くプログラムができましたが、左向き矢印キーを押す際に後ろ向きで移動する場合があります。
は端に着いたときに向きを変えるブロックなので、端に着く前に左へ移動しても向きは変わりません。
矢印キーの向きに応じてスクラッチキャットの向きも変わるようにプログラミングしてみましょう。

スプライトの向きを設定する場合は、の中にある
を使います。「90」度というのは、丁度右側を向いている状態で、これを左側にするには反対向きになるので、「-90」度に設定すれば、左側を向きます。
また、▼をクリックすると「(90)右」「(-90)左」「(0)上」「(180)下」の項目が現れるので、こちらから選択しても大丈夫です。
それでは、を使って右向き矢印キーが押されたときには「90」度に、左向き矢印キーが押されたときには「-90」度に向くようプログラミングしてください。
これで、常に右向き矢印キーが押されたときは右向き、左向き矢印キーが押されたときは左向きになります。
ここまでで、スクラッチキャットの移動プログラムが完成しましたが、矢印キーが押されたときの動作として別の方法でも同じような動作をプログラミングすることができます。

こちらのプログラミングは1つの例ですが、の中にある
を使っています。
こちらでも先ほど作ったプログラムと同様の動きをします。このようにプログラミングというのは、同じ動作でも1つの方法だけでなく色々な方法で作ることができます。
他にも同じ動作のプログラムを作ることができますので、どんな風にブロックを組み合わせれば簡単に作れるか一度考えて見ましょう。
スクラッチキャットの移動プログラムは完成しましたので、次は迷路のゴールを作ります。