- スターター作品
- なし
- 今回の完成サンプル
- なし
さぁ、スクラッチでナニ作る!?
ANDで2つの比較演算子を繋ぐだけで「◯から◯の間」という範囲判定が完結する設計が効いている。Scratchには専用の範囲チェックブロックが存在しないが、「-100より大きい」かつ「100より小さい」という2本の不等号をANDで結ぶだけで境界込みの判定が正確に作れる。この構造はPythonやJavaScriptでも形がまったく同じで、ここで覚えておくと後の言語学習で即座に使えるパターンになる。どう組むのか、作り方を見ていこう。
動画で見てみよう
[talk]チャンネル登録して応援よろしく!チャンネル登録する[/talk]チュートリアルの元になった作品
[prj-embed prj="1308533258" mini="1" title="プレイしておこう" prj-title="" prj-author=""]今回の[prj-link prj="1308533258" title="" author=""]スクラッチを作る参考作品[/prj-link]にさせていただきました、ありがとう![/prj-embed]今回の目標
スターター作品をリミックスしよう
このチュートリアルにはスターター作品があります。使わなくても大丈夫だけど、最低限の素材などが用意されてるので便利です。
スターター作品をダウンロード
#1左から右へ移動
[talk class="m-l-n"]旗をクリックすると、スプライトが画面の左端から右端まで5秒かけてスーッと動くよ。この動きがあるから、次のステップで「x座標が◯から◯の間に入った瞬間」を目で確認できるんだ。[/talk]準備
スプライト「ビトウィーン」を開く
| スプライトについて |
|---|
| x座標が-100から100の間にあるかを判定し、範囲内なら色の効果をランダムに変化させるデモ用スプライト |
| どんな役割か |
| スプライトが左から右へ5秒かけて動くよ!x座標が-100から100の間に入ったとき、色の効果がランダムに変化するのが見えるよ。「◯から◯の間なら」という条件をANDと2つの比較演算子で作る方法を視覚的に確認できるよ! |
実装
まず画像効果をリセットしてから、座標(-300, 0)にワープさせる。そこから( ) 秒でx座標を ( ) に、y座標を ( ) に変えるで5秒かけて(300, 0)まで滑らかに移動するよ。-300から300まで横一直線に動く感じだね。
#2ANDで範囲判定
[talk class="m-l-n"]ここからが本題。x座標が-100から100の間にあるときだけ色が変わる仕組みを作るよ。Scratchには「◯から◯の間なら」っていうブロックがないから、ANDで2つの不等号を組み合わせないと片側しかチェックできず、範囲外でも反応しちゃうんだよ。[/talk]ずっとループの中で、( ) かつ ( )を使って2つの不等号を組み合わせるだけ。「-100 < x座標」かつ「x座標 < 100」、この両方が成り立てば-100から100の間にいるってことだよね。条件に当てはまったら、色の効果を1〜10のランダムな値で変化させるよ。
ちなみにこの判定だと、x座標がぴったり-100やぴったり100のときは範囲外扱いになるよ。「<(より小さい)」を使ってるから、境界の値は含まれないってこと。
[talk]「◯から◯の間」をANDと2つの不等号で表現するテクニック、これってプログラミングの世界ではめちゃくちゃ定番のパターンなんだ。PythonでもJavaScriptでも、考え方はまったく同じ。Scratchでこの感覚をつかんでおけば、将来テキストベースの言語に進んだときもスムーズに理解できるよ。[/talk]
まとめ
ANDと比較演算子を2本組み合わせるだけで、こんなにスッキリ範囲判定が作れるんだね。Scratchには「◯から◯の間」ブロックがないけど、この小技を覚えたらもう困らないよ。PythonやJavaScriptでもまったく同じ書き方をするから、将来テキストコーディングを始めたときにもバッチリ使えるよ!