第十回 『タートルグラフィック』について

プログラミング編

はじめに

マサト先生
マサト先生

やあ、こんにちは。今日は『タートルグラフィック』を用いてグラフを描いてみよう。

ヒロト
ヒロト

はい!よろしくお願いします。

マサト先生
マサト先生

タートルは『亀』を意味する英単語だ。命令に忠実に従う亀に、いろいろな動きの指示を出し、その通りに亀が動いたときに残る軌跡を用いて図形を描くのだ。

ヒロト
ヒロト

そんなこともできるのですね!とても楽しみです!

マサト先生
マサト先生

さっそくビットアローを準備して始めていこう。今回はfile21に書いていくから準備してくれ。はじめに『タートルグラフィック』を使うためには第1行目に『import turtle』を書く必要がある。

ヒロト
ヒロト

ランダム関数を使うときと同様ですね!

マサト先生
マサト先生

うむ、何はともあれ下の例を見てほしい。

具体例

マサト先生
マサト先生

1行目はタートルグラフィックを呼び出すための文だ。

3行目は『前に(forward)100進め』という命令文を表している。

そして、4行目は『左回りに(left)90度回れ』という命令文だ。さてここでヒロトに問題だ。この3行目と4行目をfor文を用いて4回繰り返すとき亀の動いた軌跡はどのような図形になるでしょうか?

ヒロト
ヒロト

ちょっと待ってくださいね!

うん、なるほど。はい、答えは『正方形』です。

マサト先生
マサト先生

答え合わせは自分で書いて、実行して確認してごらん。

ヒロト
ヒロト

はい!for文の回数を4回にすればいいので・・・

ヒロト
ヒロト

できました!ちゃんと正方形が描かれました!

階段

マサト先生
マサト先生

うむ、正解だ!これからもっと工夫を凝らしてより複雑な図形を描いてみよう。まずは手始めに『階段』を描いてみよう。段数はそうだな、5段にしておこうか。さあ、これは自分で考えてやってごらん。

ヒロト
ヒロト

階段か・・・ちょっとノートに書いてから考えてみます。

ヒロトノート
ヒロト
ヒロト

なるほど、同じ命令を5回繰り返せば良さそうだぞ!

新しくfile22を作成して書いていきます。

ヒロト
ヒロト

出来ました!しっかり、5段の階段が描かれました!

予想どおりの図形ができると気持ちいいですね。

\(\star\) 星形 \(\star\)

マサト先生
マサト先生

うむ、完璧だ!次はもう少し難しいものに挑戦してみよう。では、定番中の定番、『星形』を描いてみよう。

ヒロト
ヒロト

星形というと次の図形ですね!

ヒロトノート
ヒロト
ヒロト

うーん、これは難しそうだぞ。ちょっと待てよ、ここの角度 \(x\) が分かれば、これも5回同じことを繰返せばいいんじゃないかな?

ヒロトノート
ヒロト
ヒロト

よし、方針が立ったぞ!まず、角 \(x\) の大きさを求めます。

鍵となる角度

ヒロトノート

上図において、\(\triangle BDF\) の \(\angle BFD\) の外角を考えると \(\angle EFG =2a\)

\(\triangle ACG\) の \(\angle AGC\) の外角を考えると \(\angle EGF =2a\) となるので、

\(\triangle EFG\) において、

$$a+2a+2a=180^{\circ}$$

が成り立つ。これを解いて、\(a=36^{\circ}\)、したがって、\(x=180^{\circ}-36^{\circ}=144^{\circ}\) を得る。

ヒロト
ヒロト

よし、これで角度 \(x\) がわかったから後はfor文で5回繰り返せばいいはず・・・

ヒロト
ヒロト

できました!

『まっすぐ進んで右回りに \(144^{\circ}\) だけ回転』

を5回繰り返せば星形が書けることに気づきました。

マサト先生
マサト先生

うむ素晴らしく完璧だ!

この調子で練習問題をやって今回は終わりにしよう。

ヒロト
ヒロト

はい、頑張ります!

練習問題

問題 

以下の図をタートルグラフィックを用いて描いてみよう!
※新しくfile24、file25を作成してそれぞれに解答しよう!

(1)正五角形


(2)正六角形(ただし、下図のように正三角形を6枚張り合わせて描くこと)


解答

(1)

ヒロト
ヒロト

(1)は正五角形ですね。これは、星形のときのようにある一つの角度が分かれば解決しそうです!

ヒロト
ヒロト

できました!正五角形の一つの内角の大きさ \(108^{\circ}\) を求めるのが鍵でした。

マサト先生
マサト先生

うむ、星形ができたのだから特に問題ないようだな!その調子で(2)もやってみよう!

ヒロト
ヒロト

はい!(2)は正三角形を6枚並べて正六角形を描くのだから、for文を使ってエレガントに書きたいですね。さて、どうしようかな・・・


まあまあ長い格闘の末・・・


ヒロト
ヒロト

やったー!できました!

for文を2回使いました!3行目のfor文は回数を6回にして、その中で正三角形を作る文と、左回りに60度回るという文を書きました。4行目のfor文は正三角形を作るためのfor文です。

マサト先生
マサト先生

うむ、完璧だ!

少し難しかったと思うが、よく自力で頑張ったな!図形から、どのようなプログラムを描くのかイメージし、その通りに実行されたときは本当にうれしいものだ!ぜひ、いろいろ遊んでみて自分だけの美しい図形を見つけてほしい。では、今日はここまでにしよう。次回も楽しみにしててくれ。では、お疲れさん。

ヒロト
ヒロト

はい!とても楽しかったです。

今日もありがとうございました!

コメント

タイトルとURLをコピーしました