(2)円を動かす

円板をずらして描いて動いたように見せる

このページの課題は maru02.bas として、マイドキュメントの basic フォルダに保存すること。( .bas は自動的につきます)

maru01.bas に付け加えてプログラムを完成し、maru02.basとして保存するのが楽だ。このためにはたとえば次のようにするとよい。

maru01.bas をダブルクリックすると編集状態になるので、メニューバーの「ファイル」から「名前を付けて保存」を選んで、名前をmaru02.bas として保存する。

K2エディタのようにデスクトップのショートカットにドラッグアンドドロップすると、プログラムが実行されて、編集できないことがあるので、気をつけよう。

htmlでやったように、マイドキュメントの basic フォルダの maru01.bas をコピーして名前を maru02.bas にしてもよいが、この場合は.bas は自動的につかないので注意すること。

位置を変数で表す

動かすためには位置を変数にしておく

maru02.bas

SET WINDOW 0,500,0,500
SET AREA COLOR 2

LET  x=50
LET  y=300
DRAW disk WITH SCALE(10)*SHIFT(x,y)

END

繰り返しの命令 do loop

横位置の最大が500なので500になるまで動かすプログラムにしてみる。

繰り返したい部分を DO と LOOP で囲む。囲んだ中は、囲んだ範囲がわかりやすいように字下げをする。この字下げはコンピュータにはなくてもいいが、人間がわかりやすいように入れるものである。

DO の後ろに WHILE x < 500 とあるがここの部分が500になるまでという指定である。

x = x + 1 で円の位置を少しずつ右に動かしているのである。

maru02.bas

SET WINDOW 0,500,0,500
SET AREA COLOR 2

LET  x=50
LET  y=300

DO WHILE x < 500
   DRAW disk WITH SCALE(10)*SHIFT(x,y)
   LET  x = x + 1
LOOP

END

LOOPまでいったらDOに戻る。WHILEの右に書かれた条件が成立しているなら、DO〜LOOP間をまた実行し、成立しないなら、LOOPの次の文に進む(DO〜LOOPをぬけるともいう)。

速すぎる

しかし、これでは動いたように見えない。動きが速すぎるのである。

下記のように、WAIT DELAY 0.01 をいれよう。0.01の部分は遅らせる秒数。あまり大きくすると待ってられなくなるので注意しよう。待ってられなくなったら中断ボタン(実行の隣の隣)で中断し、出てくるウインドウで[×中止]を選ぶ。

maru02.bas

SET WINDOW 0,500,0,500
SET AREA COLOR 2

LET  x=50
LET  y=300

DO WHILE x < 500
   DRAW disk WITH SCALE(10)*SHIFT(x,y)
   LET  x = x + 1
   WAIT DELAY 0.01
LOOP
END

0.01以下にしても0.01と同じなので、0.01でも遅くなりすぎる場合は WAIT DELAY を書くことをやめよう。

跡を残さない

線を引きずっていくのではなく、ボールが飛んでいったようにするには、一度円を消して、別なところに描き直すようにする。。

maru02.bas

SET WINDOW 0,500,0,500
SET AREA COLOR 2

LET  x=50
LET  y=300

DO WHILE x < 500
   SET AREA COLOR 0
   DRAW disk WITH SCALE(10)*SHIFT(x,y)
   LET  x = x + 1
   SET AREA COLOR 2
   DRAW disk WITH SCALE(10)*SHIFT(x,y)
   WAIT DELAY 0.01
LOOP
END


聖愛高等学校
http://www.seiai.ed.jp/