提供:Japanese Scratch-Wiki
ここでは、ペンを使った正多角形の描きかたを説明する。
正三角形
まずは、正三角形を描く。正三角形の内角は60°であるから、曲がる角度は、180-60=120°であるとわかる。(図を参照)
一辺が100だとすると、 100歩動かす→120曲がる という動作を3回繰り返すことになるから、
@greenFlag が押されたとき::events hat (3) 回繰り返す (10) 歩動かす @turnLeft (120) 度回す end
となる。
正多角形
先ほどは正三角形に限定したが、ここでは任意の正多角形が書けるように改良する。
まず、正多角形の辺の数を変数にする。ここでは、名前を"辺の数"とする。また、一辺の長さを100とする。
そして、先ほどのブロックを改良していく。まず、どのくらいの角度曲がるのか考える。
ここで知っておいてほしいのは、任意の多角形の外角の和は360°になるということである。 つまり、辺の数が3だとすると、一回で曲がる角度は 360/3=120°であるということである。よって、曲がる角度は
((360) / (辺の数))
となる。
これを 辺の数 回繰り返すから、コードは以下のようになる。(正七角形を描く場合)
@greenFlag が押されたとき::event hat [辺の数 v] を (7) にする (辺の数) 回繰り返す (100) 歩動かす @turnLeft ((360) / (辺の数)) 度回す end
これにより、マジックナンバー(何の数だか分からない数)をなくすことができ、また 辺の数がいくつになっても一つの値を変更するだけでよくなった
定義にする
先ほど正多角形を描くプログラムを作ったので、これを少し変えて、ブロック定義にまとめる。こうすることで、もっと簡単にかけるようになる。なお、ここでは定義名を "一辺が(leng)の正(n)角形" とする。つまり、以下のようになる。
定義 一辺が(leng)の正(n)角形 ... // この部分はこれからつくっていく。
正多角形を描くプログラムはさっきつくったので、これに少し変更を加えればよい。具体的には、(辺の数)
を
(n::custom)
に変更して、辺の長さを(leng::custom)
として定義とする。
よって、次のようになる。
定義 一辺が (leng) の正 (n) 角形 (n) 回繰り返す (leng) 歩動かす @turnLeft ((360) / (n)) 度回す end
このようにすることで、ブロックの引数を変更するだけで正多角形を描くことができる。
これを実行すると、右のようになる。
@greenFlag が押されたとき 一辺が(100)の正(7)角形::custom