物の燃え方  作品例:物の燃え方.mwx

集気びんの中で燃えるろうそくのシミュレーションを作ろう
物の燃え方.zipのダウンロード
 でシミュレーションが開始します。

 
 <考え方>

学習をふりかえる

・ろうそくを燃やすと空気中の酸素の一部が使われて減り、二酸化炭素ができる。

・空気中の植物にものを燃やすはたらきがあり、酸素や窒素にはものを燃やすはたらきはない。



  窒素(ちっそ)は変化しないで、
酸素が減り、二酸化炭素が増える。

これらの実験結果から、プログラムを考える。
 
・燃える前の空気を 窒素:酸素:二酸化炭素 → 24 : 6 : 1 と考えてみる。 
・酸素のカメがろうそくの炎にぶつかると、二酸化炭素のカメになるようにする。
・酸素の割合が小さくなると、ろうそくの炎が消えて、プログラムが終了する。 
 
<プログラミング> 物の燃え方のもとを 左クリックしてはじめましょう。 

1.手順にプログラミング 
(1)手順を開き の数を決めるプログラミングをします。
   setN2 24 setO2 6 setCO2 1
(2) O2kame(who) がFLAME にふれたことを判定(はんてい)する if 文条件判定(じょうけんはんてい)) のプログラミングをします。
   if touching? who "FLAME [OX pos who]
英語 日本語
to GO
setN2 24
setO2 6
setCO2 1
FLAME、 setshape 1 clickon
talkto [N2kame O2kame CO2kame] MODEL
end
to OXID
if touching? who "FLAME [OX pos who]
end
to OX :XY :KAME
ask "CO2kame 「CHANGE :XY :KAME」
end
手順は GO
N2は 24
O2は 6
CO2は 1

FLAME、 形は 1 クリックオン
カメは 「N2kame O2kame CO2kame」 MODEL
終わり
手順は OXID
もし ぶつかったか 今のカメ "FLAME OX 位置 今のカメ
終わり
手順は OX :XY :KAME
たのむ "CO2kame 「CHANGE :XY :KAME」
終わり
 

2.シミュレーションで考えよう
(1)シミュレーションがはじまります。
(2)setN2 setO2 setCO2 の数を変えて、どんなことがわかるか、考えてみよう。
  (a)酸素が多いと長く燃えるのだろうか → setN2 = 0  setO2 = 30  setCO2 = 1 
  (b)二酸化炭素が火を消すのだろうか → 酸素と二酸化炭素を同じ量にする→ setN2 = 0  setO2 = 30  setCO2 = 30 
※メモリーの関係で、数を大きくしすぎて、作られるカメの数が多くなると、正しくプログラムが実行できなくなります。
  setN2 setO2 setCO2 の合計が 75 ぐらいまでにしましょう。




発展1
色の中のプログラムを見てみよう。
 
(1)  窒素、酸素、二酸化炭素が対流するように、グレイの中にプログラミングします。
   
英語 日本語
setheading 0 向きは 0
(2)  窒素、酸素、二酸化炭素が集気ビンから出ないように、そらいろの中にプログラミングします。
   
英語 日本語
towards "FLAME right (random 41) - 20 forward 10 方向  "FLAME  右へ ( 乱数 41 )  -  20  前へ  10

発展2
カメの中のプログラムを見てみよう。
 
(1)  
 
英語 日本語
setPC O2 / (O2 + CO2 + N2)
ifelse PC > 0.16 [setsh 2 wait 5 setsh 1][setsh 3 wait 5 stopall]
PCは O2 ÷ (O2 + CO2 + N2)
もしどちらかを PC > 0.16 「形は 2 待つ 5 形は 1」 「形は 3 待つ 5 みんなとまる」
(2) 
 
英語 日本語
to MODEL
dotimes[i 150][carefully [remove word "O2kame :i][]]
MK 1 O2
end
to MK :N :M
dotimes [i :M]
[
newturtle word "O2kame :i + :N
set word "O2kame :i + :N "rule 
[forever [left -20 + random 41 fd 1 OXID]]
loadshape "O2 1
setshape 1
setx -100 + random 200
sety -100 + random 200
towards "FLAME back 25 left 180
st clickon
]
end
手順は MODEL
それぞれの数字をやる「i 150」「注意してやる「無くす ワード ”O2kame :i」「」
MK 1 O2
終わり
手順は MK :N :M
それぞれの数字をやる「i :M」

新しいカメ ワード ”O2kame :i + :N
設定する ワード ”O2kame :i + :N ”めいれい
「無限に 「左へ -20 + 乱数 41 前へ 1 OXID」」
形を読み込む ”O2 1
形は 1
横の位置は -100 + 乱数 200
縦の位置は -100 + 乱数 200
向きは ”FLAME 後ろへ 25 左へ 180
出てくる クリックオン

終わり
(3)  
 
英語 日本語
to MODEL
dotimes[i 150][carefully [remove word "N2kame :i][]]
MK 1 N2
end
to MK :N :M
dotimes [i :M]
[
carefully[newturtle word "N2kame :i + :N][]
set word "N2kame :i + :N "rule 
[forever [left -20 + random 41 fd 1]]
loadshape "N2 1
setshape 1
setx -100 + random 200
sety -100 + random 200
towards "FLAME back 25 left 180
st clickon
]
end
手順は MODEL
それぞれの数字をやる「i 150」「注意してやる「無くす ワード ”N2kame :i」「」
MK 1 O2
終わり
手順は MK :N :M
それぞれの数字をやる「i :M」

新しいカメ ワード ”N2kame :i + :N
設定する ワード ”N2kame :i + :N ”めいれい
「無限に 「左へ -20 + 乱数 41 前へ 1」」
形を読み込む ”N2 1
形は 1
横の位置は -100 + 乱数 200
縦の位置は -100 + 乱数 200
向きは ”FLAME 後ろへ 25 左へ 180
出てくる クリックオン

終わり
 
 
(4)
 
英語 日本語
to MODEL
dotimes[i 150][carefully [remove word "CO2kame :i][]]
MK2 1 CO2
end
to CHANGE :XY :KAME
MK3 CO2 1
end
to MK3 :N :M
dotimes [i :M]
[
carefully[newturtle word "CO2kame :i + :N + 1
set word "CO2kame :i + :N + 1 "rule 
[forever [left -20 + random 41 fd 1]]
loadshape "CO2 1
setshape 1
setpos :XY
setO2 O2 - 1
setCO2 CO2 + 1
st clickon
]
[]
]
remove :KAME
end
to MK2 :N :M
dotimes [i :M]
[
newturtle word "CO2kame :i + :N
set word "CO2kame :i + :N "rule 
[forever [left -20 + random 41 fd 1]]
loadshape "CO2 1
setshape 1
setx -100 + random 200
sety -100 + random 200
towards "FLAME back 25 left 180
st clickon
]
end
手順は MODEL
それぞれの数字をやる「i 150」「注意してやる「無くす ワード ”CO2kame :i」「」
MK 1 O2
終わり
手順は CHANGE :XY :KAME
MK3 CO2 1
終わり
手順は MK3 :N :M
それぞれの数字をやる「i :M」

注意してやる「新しいカメ ワード ”CO200kame :i + :N + 1
設定する ワード ”CO2kame :i + :N + 1 ”めいれい
「無限に 「左へ -20 + 乱数 41 前へ 1」」
形を読み込む ”CO2 1
形は 1
位置は :XY
O2は O2 - 1
CO2は CO2 + 1
出てくる クリックオン

「」

無くす :KAME
終わり
手順は NK2 :N :M
それぞれの数字をやる「i :M」

新しいカメ ワード ”CO2kame :i + :N
設定する ワード ”CO2kame :i + :N ”めいれい
「無限に 「左へ -20 + 乱数 41 前へ 1」」
形を読み込む ”CO2 1
形は 1
横の位置は -100 + 乱数 200
縦の位置は -100 + 乱数 200
向きは ”FLAME 後ろへ 25 左へ 180
出てくる クリックオン

終わり