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

今回は、スクラッチのプログラミングで簡単な迷路ゲームを作ってみます。

目次

1. 矢印キーでスクラッチキャットを動かす

スプライトを上下左右に移動

まずは、Scratchのマスコットであるスクラッチキャット(ネコのスプライト)を矢印キーを使って自由に動かすプログラムを作っていきます。

スプライトの動かす方法として、ブロックパレット動きの中にある10歩動かすブロックを使ったのを覚えていますか?

動かす方法は、10歩動かすブロック以外にも色々な方法があり、今回は、動きの中にあるx座標を10ずつ変えるy座標を10ずつ変えるを使っていきます。

まずは、動作の確認をしましょう。この2つのブロックをくっつけずにそれぞれ離れてスクリプトエリアへ置いてクリックしてみてください。

x座標を10ずつ変えるをクリックすると右に10ずつ移動し、y座標を10ずつ変えるをクリックすると上に10ずつ移動します。

次にx座標を「-10」、y座標を「-10」に変更してどう動くか確認してみましょう。

クリックしてみると左に10ずつ、下に10ずつ移動したのが分かります。数値をマイナスにした場合は、このように逆の方向に進みます

今回は、この2つのブロックを作って上下左右に移動するプログラムを作っていきます。

もし矢印キーが押されたときには動かすブロックを実行する

動かすブロックが決まりましたので、次は矢印キーを押したときに動かすための条件を作っていきます。条件としては、「もし矢印キーが押されたときには動かすブロックを実行する」となります。

「もし◆なら■する」といった条件を設ける場合は、制御の中にあるもし◆ならを使います。

まず最初に、もし◆ならをスクリプトエリアに配置しましょう。現段階では条件式の中身が空っぽです。この中に「矢印キーが押されたとき」の条件を入れていきます。

「矢印キーが押されたとき」を条件としたい場合は、調べるの中にあるスペースキーが押されたを使います。

先ほど配置したもし◆なら条件式スペースキーが押されたを入れてみましょう。

この状態では、「もしスペースキーが押されたとき」となってしまいますので、「スペース」のすぐ右にある▼をクリックして「右向き矢印」を選択してください。これで、「もし右向き矢印キーが押されたとき」のプログラミングが完成しました。

右向き矢印キーを押したときに右へ移動させるので、x座標を10ずつ変えるをこの中に入れます。

この状態で一度スクリプトをクリックして右向き矢印キーを押してみましょう。

何も反応しませんよね。

プログラムは上から順に処理されていきますので、スクリプトをクリックしたときにもし◆ならのブロックが処理されます。

しかし、この処理がされるときに右向き矢印キーは押されていないため、x座標を10ずつ変えるが処理されずにプログラムが終了してしまったというわけです。

もし矢印キーが押されたときには動かすブロックを実行する2

ちゃんと右向き矢印キーを押したときに処理させるにはもし◆ならを常に繰り返しチェックする必要があります。

「繰り返し」については、「スクラッチを触ってみよう(4.繰り返す)」でも一度使ったことがあるずっとを使ってみましょう。

制御の中にあるずっとを先ほど作ったスクリプトの一番外側に設置して、クリックしてみてください。

これで中にあるスクリプトが繰り返されます。この状態で右向き矢印キーを押すとスクラッチキャットが右へ移動します。

もし矢印キーが押されたときには動かすブロックを実行する3

右向き矢印キーを押したときのプログラミングが完成したら、次は左向き矢印キーを押したときに左へ10歩移動するプログラムを作ってみましょう。

基本的には先ほど作ったスクリプトと同じ内容になるので、コピーして作っていきます。

コピーしたい範囲の一番上にあるもし◆ならにマウスカーソルを置きます。マウスカーソルを置いた状態で右クリックをすると「複製」「削除」「コメントを追加」「ヘルプ」という項目がでてきますので、「複製」をクリックします。

「複製」をクリックすると同じスクリプトが現れますので、もし◆ならの一番下に配置します。後は、左向き矢印キーを押したときに左へ10歩移動するプログラムに変更すればいいので、スペースキーが押されたの「右向き矢印」を「左向き矢印」に、x座標を10ずつ変えるの「10」を「-10」に変更してプログラミング完成となります。これで、「右向き矢印キー」「左向き矢印キー」を押して移動するか確認しましょう。

もし矢印キーが押されたときには動かすブロックを実行する4

「右」「左」に動かすプログラムは完成しましたが、ずっと「右向き矢印キー」を押していくとスクラッチキャットがステージから見切れてしまいます。

見切れないようにするためには、ステージの端で動きを止める必要がありますが、今回は動きの中にあるもし端に着いたら、跳ね返るを使います。

このブロックはスプライトがステージの端に着いたときにそのまま進むのではなく、スプライトの向きを跳ね返すことができるブロックです。

ずっとの中の一番下に置いてどのような動きをするのか確認してみましょう。

スクラッチキャットがステージの端に着いたら、そのままいくら矢印キーを押しても見切れず止まります。また、スプライトの向きも左向きからから右向きへ、右向きからから左向きへと変わりますが、それと同時の上下反転してしまっています。

これはスクラッチキャットの回転方法が初期設定で「自由回転」に設定されているからです。スプライトの回転方法を設定する場合は、動きの中にある回転方法を左右のみにするを使ってプログラミングもできますが、今回はスプライトリストから設定していきます。

もし矢印キーが押されたときには動かすブロックを実行する5

スプライトリストにあるスクラッチキャットのiマークをクリックしてください。

するとスプライトの位置情報や向き、回転の種類、表示状態などの設定を確認をすることができます。

現在、回転の種類が回転種類:自由に回転に設定されていますが、こちらは「自由に回転する」設定となっています。

上下回転しないようにするには回転種類:左右のみをクリックして回転は「左右のみ」の設定にしましょう。

これで回転の設定は完了しました。「右向き矢印キー」「左向き矢印キー」を押して上下回転しないかを確認しましょう。

ちなみに回転種類:回転しないを選択すると一切「回転しない」設定となります。

もし矢印キーが押されたときには動かすブロックを実行する6

左右移動のプログラミングが完成したら、次は上下移動のプログラムを作っていきます。こちらはy座標を10ずつ変えるに入れ替えて「上向き矢印」「下向き矢印」に変更すればいいだけなので、簡単ですね。

上下移動のプログラミングが完成したらどの向きにも移動できるか確認しましょう。

これで、スクラッチキャットが矢印キーで上下左右に自由に動くプログラムができましたが、左向き矢印キーを押す際に後ろ向きで移動する場合があります。

もし端に着いたら、跳ね返るは端に着いたときに向きを変えるブロックなので、端に着く前に左へ移動しても向きは変わりません。

矢印キーの向きに応じてスクラッチキャットの向きも変わるようにプログラミングしてみましょう。

もし矢印キーが押されたときには動かすブロックを実行する7

スプライトの向きを設定する場合は、動きの中にある90度に向けるを使います。「90」度というのは、丁度右側を向いている状態で、これを左側にするには反対向きになるので、「-90」度に設定すれば、左側を向きます。

また、▼をクリックすると「(90)右」「(-90)左」「(0)上」「(180)下」の項目が現れるので、こちらから選択しても大丈夫です。

それでは、90度に向けるを使って右向き矢印キーが押されたときには「90」度に、左向き矢印キーが押されたときには「-90」度に向くようプログラミングしてください。

これで、常に右向き矢印キーが押されたときは右向き、左向き矢印キーが押されたときは左向きになります。

ここまでで、スクラッチキャットの移動プログラムが完成しましたが、矢印キーが押されたときの動作として別の方法でも同じような動作をプログラミングすることができます。

矢印キーで動くプログラム事例

こちらのプログラミングは1つの例ですが、イベントの中にあるスペースキーが押されたときを使っています。

こちらでも先ほど作ったプログラムと同様の動きをします。このようにプログラミングというのは、同じ動作でも1つの方法だけでなく色々な方法で作ることができます。

他にも同じ動作のプログラムを作ることができますので、どんな風にブロックを組み合わせれば簡単に作れるか一度考えて見ましょう。

スクラッチキャットの移動プログラムは完成しましたので、次は迷路のゴールを作ります。

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

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

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

TOP