画面端で反射しながら動くスプライト

説明

スプライトが移動します。その際、画面端に到達すると反射し移動を続けます。

Studioで試す

以下のリンクから Jasmine Tea でこのサンプルプログラムを Studio 画面で開いて実際に試すことができます。プログラムを実行したいときは、エディターの右下にある青色の「実行」ボタンを押してください。

Studio で開く

プログラム

// 画面端で反射しながら動くスプライト
cls
sprite 0,28
x=20
y=30
dx=1
dy=1
do
  x=x+dx
  y=y+dy
  if ((x<1) or (x>606)) then
    dx=-dx
  end if
  if ((y<1) or (y>367)) then
    dy=-dy
  end if
  show 0,(x,y)
loop

解説

3行目で0番目のスプライトに表示するスプライト番号を割り当てます。

4行目でスプライトのX座標を変数xに入れます。

5行目でスプライトのY座標を変数yに入れます。

6行目はスプライトのX方向(横方向)の1回の移動量です。

7行目はスプライトのY方向(縦方向)の1回の移動量です。

無限に繰り返すため8行目でdoを指定します。これによりloopまでの9〜17行目までを繰り返し実行します。

9行目でx座標に移動量を加算します。10行目はy座標に移動量を加算します。

11行目はスプライトが左右どちらかの画面端を超えたかどうかを調べています。どちらかの条件を満たした場合に処理させるにはorを使います。orは論理和で2つの条件のうち片方が条件を満たせば真(-1)となります。条件を満たした場合は12行目が処理されます。

12行目では横方向の移動量の符号を反転させます。これによりスプライトの移動方向が反対になります。

14行目から16行目は縦方向の移動処理になります。基本的な仕組みは11〜13行目と同じです。

17行目でスプライトを指定した座標に表示しています。