今回もまた「ずっと」ブロック。
今回は、中に「○秒待つ」を入れて検証します。前回はこちら。
◯秒待つ
プログラムの進行を指定した秒数だけ待つブロックです。
タイミングを測ったり、タイマーを作ったりと、Scratchのブロックの中でも使う場面の多いブロックです。
この「◯秒待つ」ブロックを入れると、変数の増え方はどのくらい変わるのかを検証してみます。
検証プログラム
原型は下になります。
左のスクリプト(ブロックのまとまり)は変数を増やすプログラム。今回は「◯秒待って、変数iを1増やす」という形になっています。
右のスクリプト(ブロックのまとまり)は、1秒経ったらプログラムを止めるものです。
これだと、検証のために何度もスタートボタンを押さなければならないので、
1秒ごとに変数iが増えた量計測して記録し、最後に記録の平均をボールちゃんに発表してもらうというプログラムにします。それが下です。
待ち時間を色々変えて検証!
まずは1秒から。
次。0.5秒
ここまでは、予想通り。
次、0.2秒
理論値は5回のはずだが、4回の時が多く、平均は約4回。プログラムが作動している分、変数入力が遅れているのか・・・?理由はわかりません。
次、0.1秒
平均約8回、ということで、sratchに0.1秒待たせながら作業させると、処理は8回くらいになるということです。0.1秒ごととは言っても、10回処理してくれるわけではないんですね。
さらに行ってみよう。0.05秒。
平均16回。理論値は20ですから、実際の処理回数は少なくなるようですね。
次、0.02。
平均31回。0.02秒待っている感じではなくなっています。
では、0.01秒では?
平均31回。もうこれ以上短い時間にしても、変わらなそうです。
「0(ゼロ)秒待つ」にしたらどうなるか?
では試しに、「0(ゼロ)秒待つ」で動かしたらどうなるか、検証してみます。
結果はこちら。
平均31回。「◯秒待つ」を入れるだけで、処理数が変わることがわかりました。
scratchのフレーム数
ここまでは「◯秒待つ」で検証しましたが、実験的に、別のブロック(「15度回す」ブロック)に置き換えてもう1回計測してみます。
そして、同じように検証した結果がこちら!
ここから分かることは何かというと、「scratchのフレーム数が32である」ということなんです。
フレーム数とは、1秒間に入る画像の数で、動画の細やかさなどでも出てくる言葉です。
例えば、映画のフィルムは1秒間に24コマ入っているそうです。最近YouTube動画だと1秒間に30コマ入っているのが多いかな?もっと細かいのだと1秒間に60コマ入っているのもあります。
ゲームの世界でも出てくる用語です。プログラムの1処理にかかる時間を1フレームとして、1秒に何フレーム入るかで、ゲームのキャラクターの動きなどの滑らかさに違いが出てきます。
ひと昔前までのゲームだと1秒間に30フレームだったんですけど、今のゲーム(例えばSwitch版スマブラなど)は1秒間に60フレームらしいです。
scratchは、1秒間に32回処理ができる仕組みになっているようです。ですから、Switchとまではいかなくても、そこそこスムーズな動きができるゲームが作れる、ということになりますね。
まとめ
「ずっと」ブロックについて色々調べたら、最後はscratchのフレーム数にまで話が進んでしまいました。
今回の実験は、とてもシンプルな処理しかしていませんので、もう少し複雑な処理を間に挟むと、1秒間あたりの処理数はさらに下がることが予想されます。
色々試しながら、Scratchを楽しんでみましょう!