viscuit-save

 【スクラッチ】オンラインテキストのページ

児童向け、小学生から始めるプログラミング言語として、スクラッチ(Scratch)は最適です。
たくさん用意されているキャラクターや背景を使っていろんな種類のオリジナル作品を作ろう!
スクラッチは計算が得意なプログラミング言語です。楽しみながら賢くなれるなんて理想的です。
プログラミングの力がつくと、算数や理科をはじめいろんな教科の応用力も身に付くのも嬉しいね!

ここはどんなページ? 

Scratch

狙った方向にボールを投げる

向きを決める矢印の回し方、回転の中心はどこ?

◇◆ 目的 ◆◇
方向を決めて、その方向にボールを投げるプログラムを作ります。
(向き)クローンに関するブロックの使い方を実践で学ぼう。


番号イメージ内容
Xs-11
Cool shooter(クールシューター)vol.1

方向を決めてからその方向に投げよう
習得:スプライトの向きを別のスプライトに渡す方法と、
回転の中心の仕組みを実践で学ぶ

準備をしよう ~キャラと背景~

まずは登場キャラと背景を出しておこう

準備(じゅんび)

風船委は追加コスチュームとして弾けた絵を描いておこう 登場キャラはこれらの4種類 『スプライトの追加』でこれら4つ出しておこう。

風船には4つ目のコスチュームを自分で描いて追加します。(追加の仕方は後で解説)
矢印はスプライトの中心を矢印の後方にするため絵を選択して右にずらしておきます。これは追って説明します。

chain

登場キャラはこれらの4種類

背景は『Metro』を選んでみました。

風船が上がりそうな場所であり、ストリートバスケとかやってそうな雰囲気がちょうどいいと思います。
もちろん、他に好みのものがあればそっちでもいいよ。


作りたいプログラムをイメージしよう

どんなプログラムか、動画で見てみよう

作るものをイメージするから、カタチになる

実際は自分の頭で想像して、それをプログラムに変換するんだ。難しい?テキストに載ってないことをするときには、キミもすでにやっているんじゃないかな?



ポイント を かいせつ

役割を押さえておこう
  動作の流れの順に考えるのがポイント 

ボールを投げる人

Jamai ボールを投げる人

彼は見た目が変わるだけで特に何もしていないのだ

  ①最初はボールを持って構えた姿にしておく。
  ②ボールを投げたら、投げた姿に変える
  ③ボールが消えたら、ボールを持って構える姿に変える    この人の役割はこれだけだね。


ボールを投げる向きを指定

Arrow 方法を決める矢印

この矢印の向きがボールを投げる向きになる。

  ①↑キーで反時計回りに回す
  ②↓キーで時計回りに回す。回す角度は5度くらいにしておこう。
  ③スペースキーが押されたら自身の向きをボールの向きとして渡す。
  ④そしたらボールを投げる合図を出す(トリガー)
   ★なお、Jamaiの手に持ったボールの位置を中心に回すようにする工夫が必要


投げられるボール

Ball まっすぐ飛んでいくボール

投げる合図を受け取ったら登場⇒最初は隠しておく

  ①投げる向きを決める(矢印の向きを自身の向きにする)
  ②その方向に移動
  ③画面の端に着いたらボールは消える
  ④風船に当たったらボールは消える


クローンを作る風船

Balloon 揺れながら上がる風船

左右に往復しながら上昇、途中でクローン生成
  動きのパターン 
①画面の真ん中くらいの高さ(Y=0)からスタート
②左右に往復(Xは-50~200)
③1往復したら少し上昇。上(Y=150)まで行ったら終了

  クローン発生の仕組み 
④クローン発生は基本片道で1回。また、風船が消えたらクローン許可
⑤クローンしたときの風船の色はランダムとする

  ボールに当たったとき 
⑥ボールが当たるたびに次の色に変わる
⑦最後の色(ムラサキ)に当たったら弾ける(弾けるコスチュームを追加)
⑧ボールが当たるたびにスコアアップ。はじけたときは高得点。
⑨弾けたときのエフェクトとして回しながら小さくする


プログラミングしてみよう

日本語をプログラム(ブロック)に変換する

プログラムの流れに沿って作っていこう
  一気に作らず、動作の流れの順に作っていくのがポイント 

  最初は旗を押してスタート 

ボールを投げる人

投げる人(Jamai)を選択


chain
投げる人(Jamai)のコード その1 ~旗が押されたとき~


初期設定 ①最初はボールを持って構えた姿にしておく。
旗が押されたときコスチュームを(Jamai-a)にする


    今はここまでしか作れないので、次のスプライトのプログラミングをします。 


chain

次のスプライト(キャラクタ)を選択します

ボールを投げる向きを指定
矢印(Arrow1)を選択


chain

矢印(Arrow1)のコード その1 ~旗が押されたとき~

初期設定 ★初期設定で90度に向ける

①↑キーで反時計回りに回す
制御ブロックの もし を用意して、
(上向き矢印)キーが押されたらを条件に、
成立した時に反時計回りに(5)度回すとする。

②↓キーで時計回りに回す
制御ブロックの もし を用意して、
(下向き矢印)キーが押されたらを条件に、
成立した時に時計回りに(5)度回すとする。



矢印(Arrow1)のコード その2 ~スペースキーが押されたとき~


  ★ 変数(投げた)(投げる方向)を作っておこう。

初期設定
スペースキーが押されたら[スペース]キーが押されたとき
自身の向きをボールの向きとして渡す。
けどその前に、ボールを投げていないときの判断をしよう。

制御ブロックの もし を用意して、
(投げた)=(0)を条件に、
成立した時、(投げた)を(1)にするし、
(投げる方向)を(向き)にする

④そしたらボールを投げる合図を出す(トリガー)として、
(投げる)を送るブロックを使おう。

(投げる)を送るってどこにあるの?

これは、イベントカテゴリにあるメッセージを送るブロックです。

メッセージを送る1  新しいメッセージ名:に「投げる」と入力して[OK]をクリックしよう



 ★ なお、Jamaiの手に持ったボールの位置を中心に回すようにする工夫が必要という事なので、
   矢印のコスチュームタブをクリックして絵をちょっといじろう。

 『コスチューム』タブをクリックして、絵の編集をしよう スプライトを回す中心
動かすのはコスチューム1だけでいいよ。

スクラッチの中心マーク ←これがスプライトの中心のマークで、青い+は絵の中心だよ。

スプライトを回すときの中心
絵の中心とスプライトの中心が重なっているね。
だから、そこを回転の中心としてしまうんだ。

スプライトの回転の中心
中心を矢印の左側にしておけば、
弧を描くように回転させられるよ。



矢印のプログラムはこれで全部だよ   


chain

次のスプライト(キャラクタ)を選択します

投げられるボール
ボール(Ball)を選択


chain

ボール(Ball)のコード その1 ~旗が押されたとき~

初期設定 投げる合図を受け取ったら登場⇒最初は隠しておく
★初期設定で隠すと、(投げた)を(0)にするとしておく。



ボール(Ball)のコード その2 ~投げるを受け取ったとき~


  矢印(Arrow1)は、スペースキーが押されたときにメッセージ(投げた)を送るので、
  これを受け取ったときの動作をプログラミングする。

投げるを受け取った後の動作
★出てくる位置を決める。
X座標を(-200)、Y座標を(-110)にする
★ボールを登場させる⇒表示する

①投げる向きを決める(矢印の向きを自身の向きにする)
(投げる方向)度に向ける

②その方向に移動(15)歩動かす
制御ブロックの ずっと で挟んでおこう


③画面の端に着いたらボールは消える
 ⇒もし
  (X座標)>220(画面右端) または (Y座標)>180(画面上端) なら ボールを消す
 ⇒もし
  -210>(X座標) (画面左端) または -180>(Y座標) (画面下端) なら ボールを消す



  ブロック定義ボールを消すを用意しておこう。
ブロック定義の作り方

ボール(Ball)のコード その3 ~定義[ボールを消す]~
ボールを消すの定義 定義『ボールを消す』の中身はこうしておこう。
ボールの姿を消す⇒隠す
投げ終えた⇒[投げた]を(0)にする
投げ終えた合図を送る⇒(投げる準備)を送る
ボールの制御はいったん終了⇒このスクリプトを止める

※『すべてを止める』の▼を押すと選べる



    今はここまでしか作れないので、次のスプライトのプログラミングをします。 

chain

次のスプライト(キャラクタ)を選択します

ボールを投げる人 もういちど
投げる人(Jamai)を選択


chain

投げる人(Jamai)のコード その2 ~投げる/投げる準備を受け取ったとき~

初期設定 ②ボールを投げたら、投げた姿に変える
(投げる)を受け取ったときコスチュームを(Jamai-d)にする

初期設定 ③ボールが消えたら、ボールを持って構える姿に変える
(投げる準備)を受け取ったときコスチュームを(Jamai-a)にする



投げる人(Jamai)のプログラムはこれで全部だよ   


chain

次のスプライト(キャラクタ)を選択します

クローンを作る風船
風船(Balloon)を選択


chain
 準備しておこう 


  ★ 変数(スコア)(クローンする)を作っておこう。

ブロック定義
  ブロック定義クローンを作るを用意しておこう。

風船(Balloon)のコード その1 ~旗が押されたとき~

旗が押されたとき


  動きのパターン 
①画面の真ん中くらいの高さ(Y=0)からスタートx座標を(100)、y座標を(0)にする

②左右に往復(Xは-50~200)
(②-A)右に動かす命令
  〉まで繰り返すを用意し、 条件を (x座標)>200 とする。
  右に移動x座標を(5)ずつ変える
(②-B)左に動かす命令
  〉まで繰り返すを用意し、 条件を (x座標)<-50 とする。
  左に移動x座標を(-5)ずつ変える

③1往復したら少し上昇。上(Y=150)まで行ったら終了
 1往復したら(2-A),(2-B)の動きが終わった後のタイミング
 少し上昇y座標を(5)ずつ変える

風船(Balloon)のコード その2 ~【定義】クローンを作る~

定義:クローンを作る
  クローン発生の仕組み 
④クローン発生は基本片道で1回。また、風船が消えたらクローン許可
 片道で1回 ⇒ クローンを作ってもよい条件は、(クローンする)=0のときだけ。
(自分自身のクローンを作る)のあと、[クローンする]を(1)にすることで、
[クローンする]を(0)にするまではクローンされないようになっている。

[クローンする]を(0)にするのは、『コードその1』で右端に着いた時と左端に着いた時に行っている。従って、片道1回というわけなのだ。

なお、もし((1)から(10)までの乱数)=(1)ならとしているのは、片道のどこでクローンされるか分からなくする仕掛けです。

『乱数』とは、この場合なら1~10の目のあるサイコロを振って出た目のことで、
つまり「何が出るか分からない数」を『乱数』と言います。


 風船が消えたらクローン許可⇒この下の『コードその3』でもし(Ball)に触れたならのあとで
風船が弾けたら[クローンする]を(0)にするので、クローンが許可される。

風船(Balloon)のコード その3 ~クローンされたとき~

旗が押されたとき
⑤クローンしたときの風船の色はランダムとする
コスチュームを(1)から(3)までの乱数にする
コスチュームの指定は番号でもできるので、このような使い方も可能だよ。

  ボールに当たったとき 
⑥ボールが当たるたびに次の色に変わる
 ボールが当たるたび⇒もし(Ball)に触れたなら
 次の色に変わる⇒次のコスチュームにする

⑦最後の色(ムラサキ)に当たったら弾ける(弾けるコスチュームを追加)
 ⇒コスチューム番号4に弾けたときの絵を追加してあるなら、コスチュームが順に変わっていけば弾けるよ

  風船が割れたときのコスチュームを追加しよう。

 コスチュームタブで、画面左下の『描く』をクリックすると新しく作れるよ。


⑧ボールが当たるたびにスコアアップ。はじけたときは高得点。
 ボールが当たるたびにスコアアップ⇒スコアを(10)ずつ変える
 弾けたときは高得点⇒スコアを(30)ずつ変える

⑨弾けたときのエフェクトとして回しながら小さくする
 弾けたとき ⇒ もしコスチュームの番号=4なら
 回しながら小さくする ⇒ (20)回繰り返すの中に、
  大きさを(-4)ずつ変える(15)度回すを入れる。
こうすることで回りながら小さくなるよ。

風船(Balloon)のプログラムはこれで全部だよ   


chain

次のスプライト(キャラクタ)を選択します

投げられるボール もういちど
ボール(Ball)を選択


chain

ボール(Ball)のコード その4 ~当たったを受け取ったとき~

当たったとき ④風船に当たったらボールは消える
風船がボールに当たったときに[当たった]を送ると言う
アクションを起こしています。
なので、
[当たった]を受け取ったときボールを消すとすればOK。
ボールを消すの定義はすでにしてあるので、それを使わせてもらえばいいね。


ボール(Ball)のプログラムはこれで全部だよ   


chain

できあがり!

これで完成。遊びながらバグ取りをしよう

あとは、思った通りに動いているか、テストプレイしながら確認しよう。
あえて『変なこと』をやってみるのも実は重要です。想定外の動きは、変なことをしたときに起こりがちですから。


  改造してみよう

 ・投げる速さは固定だけど、速くしたり遅くしたり、また入力できるようにしてみよう。
 ・ボールや風船は遠くに行くほど小さくなるようにしてみよう
 ・効果音を付けてみよう

  ワンポイントメモ

 今回のプログラムは方向を決めて投げるというものでした。
でも本当は向けた方向に投げてもいずれは落ちてしまいます

なぜでしょう?それは、重力があるからです。
なので、現実はななめ上に投げたボールは山なりの軌道を描いて地上に落ちますね。

じつは、こんなこともプログラミングで再現することができます。
物理の公式で、位置は早さと加速度と時間で計算ができるようになっています。
パソコンの得意分野ですね。
公式をスクラッチのブロックで組み上げて、そこに変数として速さと時間と加速度を代入すると、出来てしまうんですね!
時間は一定に増えていく変数もしくはタイマーが使えますし、加速度は重力加速度の9.8m/s^2を使えばいいです。
速さは最初の投げる速さで、最初に聞いて待つこともできます。
なげる方向が決まったら垂直方向と水平方向に分解して、x座標とy座標それぞれ計算すればできそうです。

パソコンの中も、わりと現実なんですよね。

bar

ページの先頭へ戻る ☆★☆ オンラインテキストへ戻る

問い合わせ

 質問などは

ポストの画像またはリンクをクリックするとメール送信画面になります。
内容があまりにひどい場合はスルーしますが、質問等ある人はこちらへどうぞ。
post←問い合わせはポストをクリック(タイトル記入済み)
メールアドレスを直接打ち込みたい人はコチラをコピーしてご利用ください。
mailto:o.kawajuku.pc@gmail.com


ページの先頭へ戻る