スポンサーリンク

コンピュータは並べられた命令(スクラッチではブロック)を上から順番に実行していきます。このままではプログラムの流れは常に一本道になってしまいますが、「条件分岐」や「繰り返し」といった機能を使うことで、特定の条件になったときだけプログラムの流れを変えることができるようになります。

ここではスクラッチでプログラムの流れを変更するブロックの使い方を見ていきます。

 

スクラッチの繰り返し処理

繰り返し処理とはプログラムの一部分を何度も実行する処理のことです。ここではネコを表示する位置を+1だけ増加させる処理を繰り返し行うプログラムを作成します。

座標について

コンピュータの中では画面上での位置を縦横の直線の交差によって作られる格子状の区分けによって表現します。横方向の位置はx軸、縦方向の位置はy軸の目盛りによって表すことができ、画面上の特定の点をx軸とy軸の組み合わせで指定することができます。このような位置を表す数値の組み合わせのことを「座標」といいます。

座標

画面上の座標 

今回はネコを表示する座標の内、x軸方向の数値だけを+1ずつ増加させることで、画面上のネコを少しずつ画面右側へ移動させるプログラムを作成します。

ネコのx座標を入れる変数を作成する

ネコのx座標をプログラムで動かすために、x座標の数値を記憶しておく変数が必要になります。スクリプトタブの「データ」の中にある「変数を作る」ボタンで「x座標」という名前の変数を作成します。

 

まずプログラムの開始地点を作ります。

 

プログラムの開始直後に「x座標」の変数の中身を0に初期化しておきます。

 

x座標を+1ずつ増加させる

次にこの「x座標」の変数を+1するために「演算」の中にある「〇+〇」のブロックを取り出します。

 

「〇+〇」ブロックの〇の箇所に「x座標」の変数をはめ込みます。

 

続いて「(x座標)+〇」ブロックの〇の箇所に1を入力します。(数値を入力するときは半角数字で入力します。)

 

上のブロックで現在の「x座標」に+1した数値を作ることができました。しかし、この段階ではまだ「x座標」の変数の中身は変更されていません。変数の中身は代入の操作をしてはじめて変更されます。

変数の代入操作のブロックはスクリプトタブの「変数」の中のありますので、「(x座標)を□にする」のブロックを取り出します。

 

「(x座標)を□にする」のブロックの□の箇所に「(x座標)+1」のブロックをはめ込みます。

 

上で作成した「(x座標)を(x座標+1)にする」のブロックで「x座標」の変数の値が+1された値へ変更されます。

次は変更された「x座標」の位置にネコのスプライトを移動させるブロックを作成します。スクリプトタブの「動き」の中にある「x座標を〇にする」というブロックを取り出します。

 

「x座標を〇にする」というブロックの〇の箇所に「x座標」の変数をはめ込みます。

 

「(x座標)を(x座標+1)にする」のブロックで変数の数値が+1だけ増加した後、「x座標を(x座標)にする」のブロックを実行することによって、ネコの位置が新しい座標の位置に更新されます。

 

繰り返し処理を作成する

「(x座標)を(x座標+1)にする」のブロックは1回実行されただけでは座標を+1しか前に進めませんが、この操作を何度も繰り返すことでネコがゆっくり前に進むように見えます。

スクラッチで繰り返しの処理を行うブロックはいくつかありますが、今回は使い道が広い「< >まで繰り返す」のブロックを使いたいと思います。

スクリプトタブの「制御」の中にある「< >まで繰り返す」のブロックを取り出します。

 

「(x座標)を(x座標+1)にする」と「x座標を(x座標)にする」のブロックを「< >まで繰り返す」のブロックの中に入れます。

 

「< >まで繰り返す」ブロックの中に入れた処理は特定の条件が満たされるまで何度も繰り返されるようになります。

この繰り返しのループから出る条件は「< >まで繰り返す」ブロックの中の< >の箇所に条件式の形で入力します。ここではループから出る条件を「x座標が200を超えたとき」という条件にしたいと思います。

スポンサーリンク

スクラッチで条件式を作るにはスクリプトタブの「演算」の中にあるブロックを使います。ここでは「□<□」のブロックを使って「x座標が200を超えたとき」という条件式を作りたいと思います。

 

「□<□」のブロックの右側の□に「x座標」の変数をはめ込みます。

 

続いて「□<(x座標)」のブロックの左側の□に200と入力します。(数値の入力は半角数字で行います。)

 

これで「(x座標)が200を超えたとき」という意味を持つ条件式を作ることができました。この条件式を「< >まで繰り返す」ブロックの中の< >の箇所にはめ込みます。

 

これでx座標が200を超えるまで+1ずつ増加させていくプログラムができました。

x座標が200を超えてプログラムがこのループを抜けたとき、処理の流れは「< >まで繰り返す」ブロックの下側に接続されているブロックの方へ移ります。ここではx座標が200を超えた後に行う処理として、ネコに「ゴール!」としゃべらせてみたいと思います。

スプライトに何かセリフを言わせるにはスクリプトタブの「見た目」の中にある「□□と言う」というブロックを使います。このブロックを取り出して、□□の部分を「ゴール!」というセリフに書き換えます。

 

上で作成した「(ゴール!)と言う」のブロックを「< >まで繰り返す」ブロックの下側につなげます。

 

上で作成したブロックのかたまりを「(x座標)を0にする」のブロックの下側につなげます。

 

実行結果を確認する

これでネコがx座標の0から200の位置になるまで移動し、最後に「ゴール!」としゃべるプログラムができました。緑の旗のアイコンをクリックしてプログラムがスタートすると、画面中央にいたネコが右方向に移動していって最後に「ゴール!」と言うのが確認できると思います。

 

ネコの移動するスピードは「(x座標)+〇」ブロックの〇の部分に入力されている数値の大きさによって変わります。「(x座標)+1」であれば1回ループする毎に+1ずつ移動します。「(x座標)+2」であれば1回ループする毎に+2ずつ移動します。数値を大きくすればその分ネコの移動スピードが変わるので試してみてください。

 

条件分岐処理を追加する

ここまで作成したプログラムではネコは勝手に前に進んでいきました。このプログラムを少し改良して、キーボードの右向き矢印(→)キーを押したときだけネコが前に進むようにしたいと思います。

まず、今のプログラムの中で「< >まで繰り返す」ブロックの中に入っているx座標を+1にする処理を一度外側へ取り出します。

 

取り出した部分の処理を「右向き矢印(→)キーが押されているかどうか」という条件によって、「実行するかしないか」の分岐処理を行います。スクラッチで条件分岐を行うブロックはスクリプトタブの「制御」グループの中にあります。ここでは最も基本的な「もし< >なら」のブロックを使ってプログラムを作りたいと思います。

 

上で取り出した処理を「もし< >なら」のブロックの中に入れます。

 

続いてキーボードの右向き矢印キーが押されたことを検出するため、スクリプトタブの「調べる」グループの中にある「□□キーが押された」というブロックを取り出します。

 

「□□キーが押された」ブロックの□□の右側にある下向き三角マークを押すと、どのキーで検出を行うか選択できるメニューが表示されますので「右向き矢印」を選択します。

 

上で作成した「<右向き矢印>キーが押された」ブロックを「もし< >なら」ブロックの< >の箇所にはめ込みます。

 

これで右向き矢印キーが押されているときだけx座標が+1増加するという条件分岐処理のブロックを作ることができました。このブロックを再び「< >まで繰り返す」のブロックの中に入れます。

 

これでネコが右向き矢印キーを押したときだけ前に進むようになりました。x座標が200の位置まで移動するとネコが「ゴール!」と言ってプログラムが終了します。

 

スポンサーリンク