next up previous
Next: A..2 レポート課題8B Up: A..1.2 タートルグラフィックスで描く方法 Previous: A..1.2.1 TURTLESTAR1.BAS

A..1.2.2 TURTLESTAR3.BAS

上のプログラムに PAINT を一つ加えると塗り潰しできますが、 MAT PLOT AREA を使って塗るにはどうしたら良いか、 少し工夫をしてみましょう。

亀に記憶力を持たせて、 星形の道を辿ってから、通過地点の座標を答えさせるという手もあります。 しかし高機能の亀はらしくないので、 今どこにいるかを尋ねる imadoko(x,y) というサブルーチンを作って、 それを使って描くようにしたのが次のプログラムです。


REM TURTLESTAR3.BAS --- タートルグラフィックスで星を描く
OPTION ANGLE DEGREES
REM right(),left(),walk(),jump() 
REM 初期化
SUB init
   LET direction=0
   LET xp=0
   LET yp=0
END SUB
REM 右に曲がる
SUB right(t)
   LET direction=direction-t
END SUB
REM 左に曲がる
SUB left(t)
   LET direction=direction+t
END SUB
REM s歩ジャンプする
SUB jump(s)
   LET  xp=xp+s*COS(direction)
   LET  yp=yp+s*SIN(direction)
   PLOT LINES: xp,yp
END SUB
REM s歩進む
SUB walk(s)
   PLOT LINES: xp,yp;
   CALL jump(s)
END SUB
REM 現在位置を答える
SUB imadoko(x,y)
   LET x=xp
   LET y=yp
END SUB
REM ----------- start ------------
LET  L=100
SET WINDOW -2*L,2*L,-2*L,2*L
CALL init
DIM x(10),y(10)
LET n=1
FOR i=1 TO 5
   CALL walk(L)
   CALL imadoko(x(n),y(n))
   LET n=n+1
   CALL right(144)
   CALL walk(L)
   CALL imadoko(x(n),y(n))
   LET n=n+1
   CALL left(72)
NEXT i
SET AREA COLOR "red"
MAT PLOT AREA : x,y
END

図 8: タートルグラフィックスで星を描く
\includegraphics[width=10cm]{kadai6b/TURTLESTAR3.eps}


next up previous
Next: A..2 レポート課題8B Up: A..1.2 タートルグラフィックスで描く方法 Previous: A..1.2.1 TURTLESTAR1.BAS
桂田 祐史
2013-07-10