道路の上を車が走る

説明

レースの直進コースを車が走るだけのプログラムです。カーソルキーの左右、もしくは画面の左右をタップすることで、車を左右に動かすことができます。

Studioで試す

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

Studio で開く

プログラム

// 道路の上を車が走る
cls
paint (0,0),12
n=0
for i=0 to 399 step 100
  n=n+1
  if n%2=1 then
    box (0,i)-(639,i+99),20,20
    box (200,i)-(230,i+99),2,2
    box (221,i)-(419,i+99),8,8
    box (410,i)-(430,i+99),2,2
  else
    box (200,i)-(230,i+99),7,7
    box (221,i)-(419,i+99),8,8
    box (410,i)-(430,i+99),7,7
    box (315,i)-(325,i+99),28,28
  end if
next
sprite 0,53
x=304
show 0,(x,360)
do
  roll (0,0)-(639,399),0,4,-1
  k$=inkey$()
  tap tx,ty
  if k$="ArrowLeft" or (0<=tx and tx<=199) then
    x=max(224,x-8)
  else if k$="ArrowRight" or 315<=tx then
    x=min(376,x+8)
  end if
  show 0,(x,360)
loop

解説

2行目で画面を消去しています。3行目で背景の緑色で画面全体を塗りつぶしています。

4行目で変数nに0を入れています。この変数は道路背景2パターンを交互に描く際にに使用します。

5行目から18行目までが道路を描く処理です。画面全体に描くのでforの繰り返しは縦方向のピクセルの数400となっています。そして、道路1つ分のブロックを100ピクセルとしています。400で割り切れる数値であれば50でも構いません。サイズを小さくすると細かい道路のパターンになります。

6行目で変数nに1を足しています。これは以後の処理でnの値が奇数か偶数かによって道路の表示パターンを変えるためです。ここで1を足さないと同じ道路のパターンが描かれてしまいます。

7行目で変数nが奇数かどうかを判別しています。2で割ったあまりが1なら奇数です。奇数だった場合は8〜11行目の処理が実行されます。box命令を使って道路のパターンを描きます。

13行目から16行目は変数nが偶数だった場合の処理です。16行目はセンターラインの描画処理です。

20行目で車の横方向の位置を記憶しておくx変数に画面の中央付近の座標値を代入しています。

19行目で表示する車のスプライトを設定しています。21行目で設定したスプライトを表示しています。

22〜32行目は無限にスクロールさせる処理です。rollの最後のパラメーターに-1を指定すると背景を繰り返しリング状にスクロールしてくれます。

24行目と25行目では、キーが押されたかどうか、あるいは画面をタップされたかどうかを取得しています。

26行目から31行目にて押されたキーあるいはタップされた画面の位置から左右のどちらに移動すべきかを判断して、車の横方向の表示位置を8ドットずつ移動させています。