十六歩目 文字効果
〜RPG風〜
文字を ただ表示しては面白くないので
下からだんだん文字が上がってきて
真中で止まって 段々(だんだん) 色が変わって消えてゆく
ということをしたいと思います
mozix=10:moziy=300:iro=255:tyuusi=0 ;変数の最初の数字 screen 0,300,300 ;ウインドウの大きさをせってい repeat ;繰り返し redraw 2 ;ここから下は表示しない color:boxf ;黒でウインドウ塗りつぶし color iro,iro,iro ;iro の色で指定 pos mozix,moziy ;の位置で print "ある日・・・" ;表示(redraw 2 のせいで表示できない) pos mozix,moziy+20 ;の位置で print "僕は・・・" ;表示 pos mozix,moziy+40 ;の位置で print "宝くじにあたった" ;表示 if tyuusi=0:moziy=moziy-10 ;tyuusiが0だったら moziyから10を引く if moziy<100:tyuusi=1:iro=iro-10 ;moziyが100より小さくなったらiro ;から10を引く if iro<0:stop ;iro が0より小さくなったら止まる redraw 1 ;今までのものを一気に表示する wait 5 ;待つ loop ;repeat へ戻る |
なかなかだろ ここにredraw という新しい命令がある
今まで繰り返しを使ったプログラムで なんかprintなんかで出ている文字がチカチカすることあったよね
そんなときに使うのが redraw だ redraw には
redraw 1 と redraw 2 というのがある
redraw 2 という命令を入れるとどんなことをしても
ウインドウには表示されないのである・・・んー難しい 実験してみよう
redraw 2 print "がっはっはっは" stop |
とやってみよう・・・なにも出てこないはずだ
でも print "がっはっはっは" が実行されてないわけではない
ではどこへ行ったかというと コンピューターにメモリーされているのである
例えるなら 絵を書くとき 頭の中で考えるだけで 実際書いていない って感じだ
そして redraw 2 で考えさしておいて 一気に後で表示させれば
チカチカしないのである そもそもチカチカする原因は
color :boxf である でもこの命令をなくしたら
さっきの文字が移動するやつで言うと
文字が通った後にも文字が残ってしまうのだこんな風に
通った後が掃除(そうじ)されないのでそのまま残るのである
redraw を使わないでやるrepeatは
順番に
color :boxf で真っ黒になったウインドウの画像と
その次にprint などで表示されるものとが交互に出て
消えて出て消えて出てを繰り返すからぱちぱちする
いっくら高速とは言え 一瞬でも 真っ暗や真っ白になるわけだから
チカチカする
でも redraw を使うと
順番に print
などで表示される文字、画像、ボタン
次に さっきの画像がちょっと動いた画像
と 真っ黒に消えることなく変化させれるのである
でも redraw 2 で考えるだけではなく
一気に考えたものを出す redraw 1 というものも必要である
では一回使ってみよう
redraw 2 color 0,255,0 print "ヤッホー—" redraw 1 stop |
まあ redraw
を使うのは repeat
のときぐらいしか使わんだろう
まあ チカチカ防止用の命令だからな
〜チカチカテスト〜
まあ論より証拠 やってみよう
ぱちぱちする
repeat color 255,255,255:boxf color 0,0,0 pos 0,0 print cnt wait 1 loop |
ぱちぱちしない
repeat redraw 2 color 255,255,255:boxf color 0,0,0 pos 0,0 print cnt redraw 1 wait 1 loop |
絶対これはやってみて
まとめ〜〜〜〜〜 redraw ・・・2だと表示しなくなり 1だと一気に表示する redraw 2 〜redraw 1 |