子供向けプログラミング言語Scratch-実行開始時の絵の位置を決める方法

このページでは、子供向けプログラミング言語 Scratch(スクラッチ)の[動き]グループの[x座標を○、y座標を○にする]ブロックの基本①を説明します。

すでにブログ記事子供向けプログラミング言語Scratch-絵を動かす方法実行の説明のところでお話ししたように、Scratchでは、複数回続けて実行するとき、前の実行が終了した状態が次の実行の始まりの状態になります。

そこで、エディター上で複数回続けて実行するとき、実行開始前にプログラミング以外の方法を使って毎回スプライトを適当な座標位置に置くには、次の2つの方法があります。

  1. スプライトステージ内の適当な位置にドラッグ&ドロップで位置付ける方法
  2. [動き]グループの[x座標を○、y座標を○にする]ブロックを使う方法

スプライトをステージ内の適当な位置にドラッグ&ドロップで位置付ける方法

位置付ける方法はタイトル通りで、適当な位置にドラッグ&ドロップして行います。
このとき、スプライトの位置を確認するために必要な次の3つの知識があれば、現在の座標を確認しながら、位置付けたい座標にマウスなどの操作で位置付けることができます。
ただし、マウスなどの操作で特定の数値の座標ぴったりに置くのは、かなり難しい操作になります。
普通のパソコンの画面に表示したエディターでスクリプトエリアを表示しているとき、そのステージの大きさではほとんどのケースで1座標が1ミリにもならないであろうことが、操作を難しくする理由です。

スプライトの位置を確認するために必要な3つの知識

ステージ上のマウスカーソルの座標の確認方法

エディターのステージ上のマウスカーソルの座標の確認は、ステージ右下に随時表示されている座標の数値を見て行います。

コスチュームの中心の確認方法

コスチュームの中心の確認方法の詳細は、こちらのブログ記事子供向けプログラミング言語Scratch-絵の中心の確認方法をご覧ください。

スプライトインフォペイン(Sprite info pane)

スプライトインフォペインスプライトリストの各スプライトサムネイル左上にある、白で「i」と書かれた背景が青い丸印をクリックして開く枠のことです。
スプライトインフォペインは、スプライトの属性のいくつかが表示されるところです。
また、プログラミング時に直接このペインにある属性の設定を変更することは、実行開始時のそれらの属性の状態を決めることになります。

コスチュームの中心のステージ上の座標の確認方法

  1. スプライトリストスプライトサムネイル左上にある、白で「i」と書かれた青い丸印をクリックしてスプライトインフォペイン(Sprite info pane)を開きます
  2. スプライトインフォペインの中を見ます
    そのスプライトの現在のコスチュームの中心の、「x:」の右横にx座標が、「y:」の右横にy座標が表示されています

[動き]グループの[x座標を○、y座標を○にする]ブロックを使う方法

[動き]グループの[x座標を○、y座標を○にする]ブロックは、文字通り、対応するスプライトの現在のコスチュームの中心を、ステージ上の特定の座標に位置付けるブロックです。
実行開始時に特定の座標に位置付けたいとき、プログラミングで実現するには、[イベント]グループの[緑の旗がクリックされたら]ブロックで始まるスクリプトの、[緑の旗がクリックされたら]ブロックの直後に[動き]グループの[x座標を○、y座標を○にする]ブロックを置いて、特定の座標に位置付けます。
今回このブログ記事では、[動き]グループの[x座標を○、y座標を○にする]ブロックを使った実行開始時の位置づけの、プログラミングを用いない方法を以下に紹介します。

[動き]グループの[x座標を○、y座標を○にする]ブロックを使った(プログラミング以外の方法で)実行開始時の絵の位置を決める方法

  1. 実行開始時の位置を決めたいスプライトを、スプライトリストで選択します
  2. 違うコスチュームにしたければ、コスチュームタブでコスチュームを選択し、再度スクリプトタブのブロックパレットを表示します
  3. [動き]グループの[x座標を○、y座標を○にする]ブロックブロックパレットにあるまま、○に実行開始時に置きたい位置の座標を入力します
  4. [x座標を○、y座標を○にする]ブロックをクリックします
  5. すると、ステージ内のスプライトの(コスチュームの中心の)位置がその座標に移動します

プログラミングにおいて、プログラムのはじめの部分で実行開始時の位置を決めることは、初期化と言われる処理の1つです。
プログラムの初めに初期化の処理を入れることは、プログラマーなら当たり前の知識であり、子供にもいつかは教えたい大切な知識です。
いつ初期化を子供に教えるかですが、エラーをほとんどまったくと言っていいほど表示しないなど子供の自由なチャレンジをおおらかに受け入れているScratchで子供にプログラミングを教えるときは、初期化は少し後に教えることをお勧めしたいと思います。
そのため、このブログ記事では、プログラム中で初期化をしない場合の実行開始時のスプライトの位置の設定方法を説明しました。

初期化を少し後に教えたほうが良いと思う理由は、2つあります。
1つは、子供が初期化を面倒なものと思わないようにするため、もう1つは、子供に初期化をとても役に立つうれしい機能だと実感してもらうためです。

前者について、例えば、子供に教えるとき、次のようなケースを想像してみてください。
もし、演習は後回しで、初期化のような話を最初にすると、子供にはあまり理解してもらえず、また、子供は早く実機を触りたくて深く内容を考えずに面倒な話として聞き流してしまう可能性が高いのではないでしょうか。
大人へのプログラミング講習では、必要事項を説明した後演習に入りますが、多分、私だけでなく皆さんも、子供向けの講習では特にはじめは説明を極力少なくし、必要な話も大半は後回しにして、早めに演習に入ることを検討されるのではないでしょうか。
演習に早く入るのは子供を飽きさせない講習を行うためで、また、少ない情報で演習していく中では次々に疑問が生まれるので、それに応える解説をして子供の理解度を深めるという流れを作ることもできます。

後者について、初期化を教えていなかった子供たちの、次の2つのケースから、私は後から教えることに手ごたえを感じました。
1つは、プログラム終了後スプライトステージをはみ出てしまって、ほとんど見えない状態になってしまい、次の実行のために真ん中に持ってきたいのにうまくドラッグできなかった子供のケース。
もう1つは、車のスプライトを20個くらい用意して一斉に動かすプログラムを作り、実行が終わると毎回次の実行のためにすべての車を元のスタート位置に戻すのに苦労していた子供のケース。
どちらのケースでも、しばらく、その様子を見守った後に初期化を教えたところ、子供は次の実行に移るのに手作業で面倒な初期化の作業をしなくてよくなったので非常に喜び、初期化の役割をすぐに正しく理解しました。

コメントを残す