たく思い、以下のように書いてみました。
文字表示中やクリック待ち中にwaitの数をカウントし、そのカウントの数を用いて先にdefineで
どのような表示を行うか定めておく、という方法です。
以下サンプル。
screen 0,640,480
buffer 1,640,480*3 pos 0,0:color 255,50,50:boxf 0,0,640,480 pos 0,480:color 50,50,255:boxf 0,480,640,480*2 pos 0,480*2:color 0,0,0:boxf 0,480*2,640,480*3:color 50,50,50:circle 0,480*2,300,480*2+300,1 #define RB pos 0,0:gmode 0:if (count\200=0)|(count\200=1)|(count\200=2):gcopy 1,0,480,640,480:else:gcopy 1,0,0,640,480 #define light if (count\40=0)|(count\40=1)|(count\40=2):pos 0,0:gmode 5,,,150+rnd(105):gcopy 1,0,480*2,640,480 #module //画像表示のフラグが立っている物をチェック、redraw 0のまま描画 #deffunc check if r_b@=1:RB@ if raito@=1:light@ return //文字表示命令 #deffunc tx str p1 message=p1 gsel 0 color 255,255,255 left=0 repeat strlen(message)/2 redraw 0 repeat spd@ stick click if click!0:break redraw 0 check//ここで描画 pos 60,350:mes strmid(message,0,left*2) redraw 1 wait 2 count+ loop if click!0:break pos 60,350:mes strmid(message,0,left*2) left+ redraw 1 loop stick click while(click==0) stick click redraw 0 check//ここで描画 pos 60,350 mes message redraw 1 wait 2 count+ wend return #global spd=3 r_b=1 raito=1 tx "あいうえおかきくけこさしすせそなにぬねの" tx "はひふへほまみむめもやいゆえよらりるれろ" raito=0 tx "わおん"
このようなことになりました。背景が赤と青に変わるのが目パチ風、gmode5で円を加算して
いるのが画面効果風、のつもりです。画像(効果)を重ねる順番は、「check」命令で「if ?=1:画面表示」
としているものを、奥に置きたい順に書くことで指定できます。
で、問題はこの「check」なのです。この↑方式だと、毎回すべての画面表示のフラグをチェックしなければ
ならなくなり(この例だと二つしか画面表示パターンが出ていませんが、実際ゲームを作るとなったらとんでも
なく多くなってしまいます)、スマートではないなあ…と悩んでいます。
一々全部をチェックするのではなくて、呼び出した?指定した?画像表示パターンだけを表示してくれる
ようになればいいのですが、どうにもここから先に進めず。
何か、よりよい方法は無いものでしょうか…。