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

5-2 変数を使ってスプライトと話す

では、変数を使ってスプライトと話す、簡単なプログラムを作ってみましょう。

ステップ1

  1. ブラウザでスクラッチの画面を開き[作る]をクリックして、新しいプロジェクトを作成します。
  2. プロジェクト名を「スプライトと話す」にします。
  3. [スプライトライブラリ]からAbbyをプロジェクトに読み込みます。

ステップ2

アビーが質問し、ユーザーがそれに答えられるようにします。

  1. [スプライトライブラリ]でAbbyを選択し、Abbyのコードエリアを開いて、[イベント]->[緑のボタンが押されたとき]コードブロックをドラッグ&ドロップします。
  2. [調べる]->[(あなたの名前は何ですか?)と聞いて待つ]コードブロックをドラッグして、(1)に吸着させます。
  3. [緑の旗]ボタンをクリックしてプログラムを実行します。

プログラムを実行すると、アビーの右に吹き出しが現れ「あなたの名前は何ですか?」と表示されます。これは、ドラッグした[(あなたの名前は何ですか?)と聞いて待つ]コードブロックの( )内の文字です。( )内に文字を入力することで、アビーに質問させることができます。

そして、アビーはユーザーが答えるのを待ちます。これはスクリプトの周囲が黄色の枠線で囲まれていることで分かります。プログラムは実行中で、下の枠内(テキスト入力ボックス)に答えが入力されるのを待っているのです。

赤丸の[停止]ボタンをクリックしてブログラムを終了します。[調べる]の[(あなたの名前は何ですか?)と聞いて待つ]の下に( 答 )というブロックがあるのが分かりますでしょうか? ( 答 )の左にあるボックスをクリックします。すると、ステージの左上に[ 答 [ ]]というブロックが現れます。

この ( 答 )というのは、ユーザーからの回答を入れておく変数です。丸い形のブロックは、これが変数だということを表しています。

ではもう一度、テストしてみましょう。

  1. [緑の旗]ボタンをクリックして、プログラムを実行します。
  2. 下に現れるテキスト入力ボックスに名前の文字を入力し、Enterキーを押すか、右のチェックマークボタンをクリックします。
  3. すると、ステージ左上の[ 答 [ XXXX]]に、入力した文字が表示されます。これは、入力した文字がプログラムの中に入った、ということです。
  4. また左のコードブロックの ( 答 )をクリックすると、吹き出しの形で入力した名前が表示されます。

ここでは、”末広淳”という名前を入力しているので、ステージ左上に[ 答 [ 末広淳 ]]と、左のコードブロックの ( 答 )の吹き出しに[末広淳]と表示されます。

これは、下図のように考えることができます。

テキストボックスに入力した文字は、Enterキーかチェックマークボタンをクリックすることで、スクラッチのプログラムの中に取り込まれ、答えという名前の変数の値になります。変数の答えの中には、この文字が保持されるので、プログラムでは後から変数を使って、この文字をいつでも取り出すことができます。

変数の値は何度でも変えることができます。

左上の変数名と値の表示は、プログラムを作成しているときの値の確認に利用できます。表示する必要がないときには、左のコードブロックのチェックマークボタンをクリックしてチェックを外すと、消えます。

ステップ3

では、アビーが反応するよう、プログラムを作っていきましょう。
ユーザーからの回答が、答えという名前の変数に入っているので、それを使用します。変数名は同じですが、変数に入る値(ユーザーからの回答)は別のものでも入れることができるので、アビーの反応はその回答によって変えることができます。

  1. [見た目]->[(こんにちは!)と(2)秒言う]コードブロックを、[(あなたの名前は何ですか?)と聞いて待つ]コードブロックに吸着させます。
  2. [調べる]->[答え]コードブロックをドラッグして、>[(こんにちは!)と(2)秒言う]の(こんにちは!)にドロップします。
  3. (こんにちは!)の部分はクリックして別の文字に変えることができます(長丸の円は、中の文字が置換できることを表しています)。変数の答えは、値が文字の変数なので、(こんにちは!)の部分に置き換えることができます。すると、プログラムを実行するその時々で、変数の答えに入れられた異なる文字を利用することができます。

  4. プログラムを実行します。アビーが名前を聞いてくるので、名前を入力してEnterキーを押すかチェックマークボタンをクリックします。
  5. アビーの吹き出しに、入力した名前が表示され、2秒たつと消えます。

アビーは名前を聞いてきますが、入力するのは名前でなくても構いません。テキスト入力ボックスに入力したものは自動的に文字列になるので、エラーは起きません。

  1. [(答え)と(2)秒言う]コードブロックを右クリックして複製します。
  2. 複製した方の(答え)をドラッグして外に出し、左のコードブロックの上でドロップして捨てます。
  3. 残った[(こんにちは!)と(2)秒言う]の(こんにちは!)をクリックして、文字を「すごくいい名前ね」に変更します。
  4. [(すごくいい名前ね)と(2)秒言う]を、[(答え)と(2)秒言う]に吸着させます。
  5. プログラムを実行して、結果を確認します。

上のスクリプトの働きを見ていきます。実は、下記のような説明は多くの参考書では、面積を多くとるためか、ここまで詳しく説明されていません。1つ1つのコードブロックの働きをしっかり理解しておくことは非常に重要なので、今後もこのように、1つ1つのコードブロックをしっかり意識して働きを確認してください。

まず、スタートのきっかけとなる[緑の旗ボタンが押されたとき]イベントブロックがあります。これは、ステージ左上にある[緑の旗]ボタンのクリックを監視し、クリックされたと判断したら、下につづくコードブロックを実行します。

下には[(あなたの名前は何ですか?)と聞いて待つ]コードブロックがあるので、プログラムは、テキスト入力ブロックを表示して、ユーザーが文字を入力するのを待ちます。

ユーザーは入力ボックスに名前を入力し、終わったらEnterキーを押すか右のチェックマークボタンをクリックします。すると、プログラムの中にユーザーが入力した文字が取り込まれ、答えという名前の変数に入れられます。

答え変数に文字の値が入れられると、コードブロックの実行は次の行に移り、[(答え)と(2)秒言う]が実行されます。変数の(答え)には今、ユーザーが入力した文字が入っているので、プログラムはこの文字の値(たとえば末広淳)を調べ、変数(答え)に置き換えます。このときコードブロックは[末広淳と(2)秒言う]になっているので、吹き出しには”末広淳”という文字が2秒表示し、2秒たったら消えます。

そして最後、コードブロックの実行は[(すごくいい名前ね)と(2)秒言う]に移ります。このコードブロックは、上の[(答え)と(2)秒言う]と同じで、変数(答え)の値を2秒表示するか、”すごくいい名前ね”という決まった文字を2秒表示するかが違うだけです。

今回のプログラムのコードはこのリンクからダウンロードできます

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です