●すでに学んだように DRAW は circle と disk、SHIFT や SCALE と組み合わせて好きなところに好きな大きさで円を描くことができます。さらに DRAW は円以外にも自分で定義した図形を円と同様に移動・拡大して表示する機能があります。
●これはなかなか強力な機能です。一つ分のプログラムだけを書いておき、それを条件を変えて呼び出すことでたくさんの図を書くことができます。
●まず、前回のプログラムを見てください。
SET WINDOW -250,250,-250,250 SET AREA CO... てんとう DRAW disk ...... むしをいっぴき DRAW disk .... 表示する部分 END
●このテントウムシをたくさん描くようにプログラムを変更してテントウムシを描く部分を独立させます。
SET WINDOW -250,250,-250,250 END EXTERNAL PICTURE tentou SET AREA CO... てんとう DRAW disk ...... むしをいっぴき DRAW disk .... 表示する部分 END PICTURE
●次に、この絵を定義する部分(EXTERNAL PICTURE)を呼び出すために、その使用を宣言する部分と、呼び出す部分を書き加えます。
DECLARE EXTERNAL PICTURE tentou SET WINDOW -250,250,-250,250 DRAW tentou END EXTERNAL PICTURE tentou SET AREA CO... てんとう DRAW disk ...... むしをいっぴき DRAW disk .... 表示する部分 END PICTURE
●これで元と同じように絵が描けるはずです。
●これに DRAW disk の時のように SCALE や SHIFT を適用することができるのです。
DRAW tentou WITH SCALE(r)*SHIFT(x,y)
●つぎにこれを何回も描いてみます。DRAW tentou の部分を次のように変えます。
FOR y=-200 TO 200 STEP 80 FOR x=-200 TO 200 STEP 80 DRAW tentou WITH SHIFT(x,y) NEXT x NEXT Y
●つぎにランダム関数を使って、回転させます。ROTATE(角度)を使います。角度に度数を使うためにOPTION ANGLE DEGREESを宣言します
RANDOMIZE OPTION ANGLE DEGREES FOR y=-200 TO 200 STEP 80 FOR x=-200 TO 200 STEP 80 DRAW tentou WITH ROTATE(RND*360+1)*SHIFT(x,y) NEXT x NEXT Y
●やはりランダム関数を使って、色を変えてみましょう。tentou に (col) をつけて、色情報を外から指示できるようにします。このようなものを引数といいましたね。絵の定義はサブルーチンに似ています。
RANDOMIZE OPTION ANGLE DEGREES FOR y=-200 TO 200 STEP 80 FOR x=-200 TO 200 STEP 80 COL=RND*256+1 DRAW tentou(col) WITH ROTATE(RND*360+1)*SHIFT(x,y) NEXT x NEXT Y
●tentouの最初も変えます。(DECLARE の部分はかえません)ここでは c を使って col の値を受けましたが、同じく col にしてもかまいません。EXTERNAL 部分では同じ変数名であっても別のものとして扱われます。呼び出すときに ( ) の中に書かれたものがここを窓口にして渡されるのです。
EXTERNAL PICTURE tentou(c)
●EXTERNAL PICTURE tentou(c) 〜 END PICTURE のあいだで、色を変えたいところに c を使っていけばよいのです。たとえば、
SET AREA COLOR c
●頭や模様も c にしてしまうと見えなくなりますから、体の部分だけにしておきます。
●上記のプログラムを作りなさい。テントウムシの数や並べ方、色使いなどは自由でよい。