光の進み方  作品例:光の進み方.mwx

2匹のカメが光線となって、板ガラスとプリズムに進みむと曲がります。
<学習内容>
・カメごとの状態変数の考え方
・手順を構造的にメインとサブで考える
・色判定
 でカメが光として進み、

 板ガラスとプリズムで曲がります。
<考え方>
・ 光には粒子としての性質があり、真空の中では直進し、密度の高い物質の中を進むときは、進む速さが遅くなります。
・ かめ1とかめ2を光の粒子として考え、色番号の大きいところを進むときは、進み方が遅くなるようにプログラミングします。
・ 光にある波の性質があります。波とは、波を作る粒子が互いに影響し合って動きが伝わることだと考えてみました。
・ かめ1とかめ2を光の粒子として、かめ1がかめ2の回りを回り、かめ2がかめ1の回りを回るという、互いに影響し合うプログラムを考えます。
<プログラミング> 光の進み方のもとを 左クリックしてはじめましょう。 


1.メインとサブに分けて手順を作ります。
(1) メインの手順を書きます。
 英語 日本語
to GO
talkto [kame1 kame2]
forever [L R]
end
手順は GO
カメは「kame1 kame2」
無限に「L R」
終わり 
・メインから呼ばれるサブのプログラムは、カメの中に書かれています。
 
(2)メインからよばる サブの手順を書きます。
 kame1 kame2
to L
kame1,
towards "kame2
left 90
forward 20 / colorunder
back 2 pd
forward 0 pu
forward 2
end
to new
everyone [setQ pos]
clean
end
to R
kame2,
towards "kame1
right 90
forward 20 / colorunder
back 2 pd
forward 0 pu
forward 2
end
to new
everyone [setQ pos]
clean
end
 
(3)カメの動きを止める白色の中にプログラミングします。
・カメが白色に乗ると で、スタートした位置にもどって、プログラムが止まります。

 英語 日本語
everyone [setpos Q] stopall 全部「位置は Q」 みんなとまる

・ 状態変数に スタートしたときのカメの位置が保存されているので、setpos Q でスタートした位置にもどります。
・ ここで使われる Q 状態変数とよばれる変数で、カメごとに使われるのでローカル変数でもあります。
 コマンドセンター カメの中の名前は ”Q を実行して作ってあります。