十六歩目 文字効果

 

〜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

 

戻る コウザへ ホームへ 次へ