next up previous
Next: この文書について... Up: 情報処理2 第7回 十進BASIC (3-2) Previous: A..2 MAT PLOT AREA

B. 課題6Bへの一つのヒント: タートルグラフィックス

一時期 (今となっては古い話です)、 プログラミングの入門用の言語として、 LOGO というものが 注目されたことがあります。 その特徴であるタートル・グラフィックスを利用すれば、 まだ座標系の概念を学んでいないような小学生にも簡単に図形を描く プログラムが作れるということで「ちょっと面白い」話でした。

タートル・グラフィックスとは、 キャンバスの中を亀 (タートル) が歩く軌跡として図形を描画するというものです。 亀に伝えられる指令として、 「進む(指定された歩数だけ)」,「戻る(指定された歩数だけ)」, 「右に曲がる (指定された角度だけ)」,「左に曲がる (指定された角度だけ)」, 「ペンを下ろす」, 「ペンをあげる」などがあります。

例えば、「$ 50$ 歩進み、$ 90^\circ$ 右に曲がる」を4回繰り返すことで 1辺の長さが $ 50$ 歩の正方形を描くことができます。


REM TURTLE.BAS --- 亀よ正方形と正三角形を描いておくれ
OPTION ANGLE DEGREES
REM right(),left(),walk(),jump() の定義
SUB right(t)
   LET direction=direction-t
END SUB
SUB left(t)
   LET direction=direction+t
END SUB
SUB walk(s)
   PLOT LINES: xp,yp;
   LET  xp=xp+s*COS(direction)
   LET  yp=yp+s*SIN(direction)
   PLOT LINES: xp,yp
END SUB
SUB jump(s)
   LET  xp=xp+s*COS(direction)
   LET  yp=yp+s*COS(direction)
   PLOT LINES: xp,yp
END SUB
REM ----------- start ------------
LET  L=100
SET WINDOW -1.1*L,1.1*L,-1.1*L,1.1*L
REM 亀の現在位置 (xp,yp), 方向 direction (x軸となす角)
LET  direction=0
LET  xp=0
LET  yp=0
FOR i=1 TO 4
   CALL walk(L)
   CALL right(90)
NEXT i
CALL right(10)
SET LINE COLOR "red"
FOR i=1 TO 3
   CALL walk(L/2)
   CALL right(120)
NEXT i
END

図 3: タートルグラフィックスで正方形と正三角形を描く
\includegraphics[width=6cm]{TURTLE/TURTLE.eps}

図 4: 星 (銀色に見えると良いけれど灰色ですね&ランダムに散らす)
\includegraphics[width=5cm]{TURTLE/silverstar.eps} \includegraphics[width=5cm]{TURTLE/kamehoshi2.eps}


next up previous
Next: この文書について... Up: 情報処理2 第7回 十進BASIC (3-2) Previous: A..2 MAT PLOT AREA
桂田 祐史
2013-05-29