スプライトの移動判定
やること
この教材 では、Jasmine Tea のプログラムでスプライトが移動中か停止しているかを判定する方法を学びます。これにより、スプライトの状態を確認しながら動きを制御することができます。
ステップ1
エディターに以下のプログラムを入力してみましょう。
show 0,(160,120)
direction 0,3
speed 0,10
distance 0,100
move 0
do
if moving(0) then
print "スプライトは移動中です。"
else
print "スプライトは停止しています。"
exit do
end if
loop
print "移動が終了しました!"
ステップ2
エディターの右下にある「▶実行」ボタンを押すと、入力したプログラムが実行されます。このプログラムは無限ループになるため、一定時間後に「止める」ボタンを押してプログラムを停止してください。その後、画面の右上にある「ドキュメント」タブを押して、ここに戻ってきてください。
では、「▶実行」ボタンを押してください。
ステップ3
実行画面に以下のように表示されたら成功です。
スプライト0が動いている間は「スプライトは移動中です。」と表示され、停止すると「スプライトは停止しています。」と表示されます。最終的に「移動が終了しました!」と表示されます。
ステップ4
実行したプログラムを解説します。
使っている命令の簡単な紹介
-
show
はスプライトを画面に表示する命令です。 -
direction
はスプライトの動く方向を設定する命令です。 -
speed
はスプライトの速さを設定する命令です。 -
distance
はスプライトが動く距離を設定する命令です。 -
move
は指定したスプライトを動かす命令です。 -
moving
はスプライトが移動中かどうかを判定する命令です。 -
exit do
はdo-loop
のループを終了する命令です。
プログラムで行われていること
-
show 0,(160,120)v
でスプライト0を画面の座標(160,120)に表示します。 -
direction 0,3
でスプライト0の動く方向を右(3)に設定します。 -
speed 0,10
でスプライト0の速さを10に設定します。 -
distance 0,100
でスプライト0の移動距離を100に設定します。 -
move 0
でスプライト0を動かします。 -
do-loop
の中で、moving(0)
を使いスプライト0が移動中かを判定します。 - スプライトが移動中の場合は「スプライトは移動中です。」と表示されます。
- 移動が停止すると「スプライトは停止しています。」と表示され、ループを終了します。
- 最終的に「移動が終了しました!」と表示されます。
学ぶべきこと
- スプライトの移動状態を判定する方法。
- 移動状態に応じた処理をプログラムに組み込む方法。
- ループを使った継続的な 判定の方法。
チャレンジ
-
distance
の値を変更して、スプライトの移動距離を調整してみましょう。 -
speed
の値を変更して、スプライトの速さを変えて移動判定のタイミングを確認してみましょう。 - 複数のスプライトを動かして、それぞれの移動状態を判定するプログラムを作成してみましょう。