- トップページ
- 書庫
- Context Free for beginners
- シェイプを指定した個数だけ描く

シェイプをたくさん描く方法は、大雑把に2通りあります。 ひとつは、描く個数を指定する方法、もうひとつは再帰呼び出しによって描き続ける方法です。 まずは、描く個数を指定する方法を見てみましょう。
startshape Dango rule Dango{ 5 * { x 1 } CIRCLE {} }

円を描くCIRCLEの前に、“5 * { x 1 }”という命令を書きました。 これは“x軸方向に1個分移動して描画”を5回繰り返すという意味です。 描画されるシェイプの情報がこれに続き、円が5個並んで描かれました。
*の直後の中カッコに書かれた内容の変更をくわえながら、その後ろに記述された内容のシェイプを*の前の個数分繰り返すときにこう記述します。
繰り返しに伴う変更は、位置だけでなく回転や変形・色などで可能です。
startshape Dango rule Dango{ 5 * { x 1 s 1 0.8 r -10 } CIRCLE {} }

この例では、繰り返しのたびにx軸方向に1個分移動、y軸を0.8倍に縮小、時計回りに10度回転しています。
繰り返しのネスト(入れ子)も可能です。
startshape Dango rule Dango{ 36 * { y 1 r 10 } { 5 * { x 1 } CIRCLE {} } }

5個並びの円を、y軸方向に1個分移動&10度回転させながら36回描画しました。 10度×36でちょうど1周しますから、このような模様になります。
できるようになった(はずの)こと- 個数を指定して、属性を変更しながらシェイプを描画できる