
表示にアクションをつけてみよう - その3 -
表示にアクションをつけてみよう - その3 -
とうとうアクションシリーズは最後です。 「湧き出し」、「ランダム」について書いていきます。 これらも非表示エリアが絡んできますので難しいですが、がんばりましょう。 256X64dotの表示モジュールを使用した場合について例にあげます。
湧き出し表示をさせてみよう
まずは、湧き出しです。「macro操師」"ヘルプ"のSpringを見てください。
プログラム11
Sub Start()
Cursor 0 , 0
Cls
SetFont 16x32
KanjiOn
Cursor 0 , 2 '・・・①
Print "今から湧き出すよ"
Sleep 3000 / 14
Cursor 256 , 0 '・・・②
Print "湧き出し"
Cursor 350 , 4 '・・・③
Print "アクション"
Spring 0 , 5 , 256 * 8 '・・・④
End Sub
湧き出しとは、表示エリアに書いておいた表示の上から、別の表示を徐々に上書きしていくことです。 プログラム11なら、"今から湧き出すよ"という表示の上から、"湧き出しアクション"という表示が湧き出してきます。
プログラムの仕組み
11-①でカーソルを一番左の上から17dot目(3行目)にあわせて"今から湧き出すよ"と表示させます。
11-②、11-③ではカーソルが非表示エリアにありますね。
上図のように"湧き出し"と"アクション"という文字が、それぞれ非表示エリアの左上と、左から94dot、上から32dotに隠れています。 そして、11-④の命令によって、湧き出すように非表示エリアのメッセージが現れてくるのです。
Spring direction , speed , address
directionで湧き出す方向を定義します。 0なら左→右、1なら右→左、2なら中央→左右、3なら左右→中央、です。 speedで湧き出してくるスピードを定義します。 およそspeed x 14 x 256 / 16msecとなります。 directionとspeedの定義方法は、カーテンとまったく同じですよね。 addressで湧き出させたい表示がある場所を指定します。 湧き出しさせる表示は、元の表示と同じdot数であると決まっています。 従って、湧き出させる表示の一番初めの場所を指定すればよいのです。 表示メモリのアドレスは、上から下、左から右の順で増えていきます。
例えば、256X64dotの表示モジュールの表示メモリアドレスは
のようになります。 そうすると、非表示エリアに書き込んだ"湧き出しアクション"という文字を湧き出したい場合、addressを
256 x 8 = 2048 (あるいは、&h800)
と定義すればよいということになります。
また、Springではdirectionとspeedを省略できます。 省略すると、directionは2、speedは1となります。addressは省略できません。
※Springでスピードを定義する場合、256X16dot、256X64dot、512X32dotの表示モジュールで14となっている数値は、384X32dotの場合は約13、256X128dotの場合は約16になります。)
ランダム表示をさせてみよう
さて、やっとラストのランダムです。「macro操師」"ヘルプ"のRandomを見てください。
プログラム12
Sub Start()
Cursor 0 , 0 '・・・①
Cls '・・・②
SetFont 16x32
KanjiOn
Cursor 32 , 2 '・・・③
Print "ランダム表示"
Sleep 3000 / 14
Cursor 256 , 0 '・・・④
Print "おつかれさまです"
Cursor 288 , 4 '・・・⑤
Print "アクション終了"
Random 2 , &h800 '・・・⑥
End Sub
湧き出しが理解できたら、ランダムは簡単です。 表示エリアに書き込んだ表示に、別の表示をランダムに上書きします。
プログラムの仕組み
12-③は表示エリア、12-④、12-⑤は非表示エリアにカーソルがあります。 そして、表示エリアには"ランダム表示"、非表示エリアには"おつかれさまです アクション終了"と書き込みました。
12-⑥が、ランダム表示させる命令です。
Random speed , address
speedではランダム表示させるスピードを設定します。 ランダム表示は8段階で完全に表示されるのですが、その1段階のスピードはおよそspeed x 56msecです。 addressの設定方法は湧き出しと同じで、ランダム表示させたい画面が始まる場所を指定します。 &h800(または2048)とすることで、左上から(2048 / 8 =) 256dotずれた位置、つまり非表示エリアの始まりの位置を定義することができます。
Randomで省略できる設定は、speedです。 省略すると、1と設定した場合と同じになります。
ところで、12-①でカーソルを左上にもってくるのには理由があります。 12-④、12-⑤で非表示エリアにカーソルを移動しましたね。 そのため、12-①を書いておかないと、12-②で画面をクリアしても非表示エリアしかクリアされないのです。 12-①でカーソルを表示エリアに戻すことによって、表示エリアをクリアすることができます。 (このとき、カーソルは左上にないといけない、ということはありません。表示エリア内ならばどこでもよいです。)
※Randomでスピードを定義する場合、256X16dot、256X64dot、512X32dotの表示モジュールで56となっている数値は、384X32dotの場合は約52、256X128dotの場合は約64になります。)