1 タートルグラフィクスの基本命令 1 図形描画の基本 プログラム !pip install ColabTurtlePlus #Claboratory用タートルグラフィックスモジュールの読み込み from ColabTurtlePlus.Turtle import * #最初の2行は1つのノートブックで最初に1回実行すればよい clearscreen() #表示画面の初期化 800×600 背景白 ペン黒 位置原点 方向右 shape("turtle2") #タートルの形状を設定する for _ in range(3): #以下の命令を3回繰り返す(変数は使わないので設定してない) forward(100) #100前進する left(120) #右に120度回転する 2 色々な図形の描画 プログラム !pip install ColabTurtlePlus #Claboratory用タートルグラフィックスモジュールの読み込み from ColabTurtlePlus.Turtle import * #最初の2行は1つのノートブックで最初に1回実行すればよい clearscreen() #表示画面の初期化 800×600 背景白 ペン黒 位置原点 方向右 shape("turtle") #タートルの形状を設定する 初期値は亀 pensize(3) #ペンの太さを設定する  speed(7) #描画速度を設定する 1〜10 penup();backward(200);pendown() #ペンを上げて200後退してペンを下す(;を使って1行にしています) color("red", "blue") #線を赤色、塗りを青色にする for _ in range(3): #以下の命令を3回繰り返す(3角形を描きます) forward(100) #100前進する left(120) #左に120度回転する penup();forward(150);pendown() #ペンを上げて200前進してペンを下す(;を使って1行にしています) begin_fill() #以下の図形を塗る color("blue", "Yellow") #線を青色、塗りを黄色にする for _ in range(3): #以下の命令を3回繰り返す(塗った3角形を描きます) forward(100) #100前進する right(120) #右に120度回転する end_fill() #ここまでの図形を塗る penup();forward(200);pendown() #ペンを上げて200前進してペンを下す(;を使って1行にしています) begin_fill() #以下の図形を塗る color("blue", "LimeGreen") #線を青色、塗をライムグリーンにする circle(-50) #タートルの右側に半径50の円を描く(塗った円を描きます) circle(50,180) #タートルの左側に半径50、180度の円弧を描く(塗った半円を描きます) end_fill() #ここまでの図形を塗る 2 タートルグラフィクスで正多角形を描こう 1 正多角形の描画 プログラム !pip install ColabTurtlePlus #Claboratory用タートルグラフィックスモジュールの読み込み from ColabTurtlePlus.Turtle import * #最初の2行は1つのノートブックで最初に1回実行すればよい clearscreen() #表示画面の初期化 800×600 背景白 ペン黒 位置原点 方向右 speed(8) #描画速度8 shape("turtle2") #タートル形状亀2 face(90) #初期状態の向きを上方向にする bgcolor("white") #背景白色 color("grey") #描画色灰色 pensize(3) #ペン太さ3 for _ in range(3): #以下の命令を3回繰り返す(変数は使わないので設定してない) forward(100) #100前進する left(120) #右に120度回転する 2 図形の繰り返し描画 プログラム !pip install ColabTurtlePlus #Claboratory用タートルグラフィックスモジュールの読み込み from ColabTurtlePlus.Turtle import * #最初の2行は1つのノートブックで最初に1回実行すればよい clearscreen() #描画エリアの初期化 speed(8) #描画速度の指定 shape("turtle2") #タートル形 face(90) #初期状態の向きを上方向にする bgcolor("white") #背景白色 color("black") #描画色灰色 pensize(3) #ペン太さ3 bgcolor("white") #背景色の指定 color("orange") #線の色指定 for j in range(6): #60°ずつ回転した正六角形の描画を6回繰り返す for i in range(6): #線の描画を6回繰り返して正六角形を描く forward(100) #100進む left(60) # 左に60°回転 left(60) #描画開始の方向を60°回転 3 伝統的な連続文様を描いてみよう(市松文様) 2 市松文様のプログラムを実行してみましょう。 プログラム ### 市松模様 ### !pip install ColabTurtlePlus #Claboratory用タートルグラフィックスモジュールの読み込み from ColabTurtlePlus.Turtle import * #最初の2行は、1つのノートブックで最初に1回実行すればよい #単位文様(正方形)の関数 def 正方形(a): #関数の定義 引数aは一片の長さ@ begin_fill() #塗のはじめ for _ in range(4): #4回繰り返し forward(a) #距離a前進 left(90) #90°左回転 end_fill() #ここまでの図形を塗る #初期設定 clearscreen() #ペン位置:中央 向き:左 speed(10) #速度10 最高速はspeed(0) 最後にdone() shape("turtle2") #ペン形状 bgcolor("black") #背景黒色 color("green") #柄色みどり pensize(3) #ペン太さ3 開始X座標=-400 #初期ペンX座標-400 開始Y座標=200 #初期ペンY座標 200 辺長さ=100 #一辺の長さ 100 列数=5 #文様列数 (緑正方形 黒正方形)×5  行数=6 #文様行数 6 pu();goto(開始X座標,開始Y座標);pd()#初期座標へ移動 #単位文様を繰り返し描画 for j in range(行数): #行の繰り返し for i in range(列数): #列の繰り返し 正方形(辺長さ) #正方形の描画 pu();fd(辺長さ*2);pd()#ペンアップ;次の描画開始位置へ辺の2倍水平移動;ペンダウンA #次の行への移動 pu() #ペンアップ setx(開始X座標) #開始X座標へ移動B rt(90) #下へ向く fd(辺長さ) #下へa垂直移動C lt(90) #左へ向く fd(辺長さ*((j+1)%2)) #jが0,2,4‥偶数のときa水平移動D pd() #ペンダウン #done() #speed(0)の時#を取ってdone()にする 4 伝統的な連続文様を描いてみよう(鱗文様) 2 鱗文様のプログラムを実行してみましょう。 ### 鱗模様 ### !pip install ColabTurtlePlus #Claboratory用タートルグラフィックスモジュールの読み込み from ColabTurtlePlus.Turtle import * #最初の2行は、1つのノートブックで最初に1回実行すればよい #単位文様(三角形)の関数 def 三角形(a): #関数の定義 引数aは一片の長さ@ begin_fill() #塗のはじめ for _ in range(ア): #ア回繰り返し forward(a) #距離a前進 left(イ) #イ°左回転 end_fill() #ここまでの図形を塗る #初期設定 clearscreen() #ペン位置:中央 向き:左 speed(10) #速度10 最高速はspeed(0) 最後にdone() shape("turtle2") #ペン形状 bgcolor("yellow") #背景黄色 color("white") #柄白色 pensize(3) #ペン太さ3 開始X座標=-400 #初期ペンX座標-400 開始Y座標=200 #初期ペンY座標 200 辺長さ=100 #一辺の長さ 100 列数=10 #文様列数 (正三角形)×10 行数=8 #文様行数 6 pu();goto(開始X座標,開始Y座標);pd() #初期座標へ移動 #単位文様を繰り返し描画 for j in range(行数): #行の繰り返し for i in range(列数): #列の繰り返し 三角形(辺長さ) #正三角形の描画 pu();fd(辺長さ);pd() #ペンアップ;次の描画開始位置へ一辺長さ水平移動;ペンダウンA pu() #ペンアップ setx(開始X座標) #開始X座標へ移動B rt(ウ) #ウ°右斜め下へ向く fd(辺長さ) #斜め下へa移動C lt(エ) #エ°左回転して左を向く bk(辺長さ/2*((j)%2)) #jが1,3,5‥奇数のときa/2水平にバック移動D pd() #ペンダウン #done() #speed(0)の時#を取ってdone()にする 5 伝統的な連続文様を描いてみよう(毘沙門亀甲文様) 2 毘沙門亀甲文様のプログラムを実行してみましょう。 プログラム ### 毘沙門亀甲文様 ### !pip install ColabTurtlePlus #Claboratory用タートルグラフィックスモジュールの読み込み from ColabTurtlePlus.Turtle import * #最初の2行は、1つのノートブックで最初に1回実行すればよい #単位文様(立方体)の関数 def 立方体(a): #関数の定義 引数aは一片の長さ for _ in range(3): #部品の描画3回繰り返し fd(a) #一辺直進@ lt(60) #60°左回転 fd(a) #一辺直進A lt(120) #120°左回転 fd(a) #一辺直進B ア #180°回転 fd(a) #一辺直進C lt(120) #120°左回転 #初期設定 clearscreen() #ペン位置:中央 向き:左 speed(10) #速度10 最高速はspeed(0) 最後にdone() face(30) #亀の向き30° shape("turtle2") #ペン形状 bgcolor("orange") #背景オレンジ色 color("green") #柄緑色 pensize(3) #ペン太さ3 開始X座標=-400 #初期ペンX座標-400 開始Y座標=200 #初期ペンY座標 200 辺長さ=60 #一辺の長さ 60 列数=8 #文様列数 8 行数=4 #文様行数 2×4 pu();goto(開始X座標,開始Y座標);pd() #初期座標へ移動 #単位文様を繰り返し描画 for j in range(行数): #行の繰り返し for i in range(列数): #列の繰り返し(奇数行) 立方体(辺長さ) #立方体の描画 pu();fd(辺長さ);rt(60);fd(辺長さ);lt(60);pd() #次へ移動D pu() #ペンアップ setx(開始X座標) #開始X座標へ移動E rt(イ) #下を向く fd(辺長さ) #一辺分直進F lt(ウ) #ウ°斜め方向 fd(辺長さ) #一辺分直進G lt(60) #60°斜め上方向 pd() #ペンダウン 2行目開始点 for i in range(列数): #列の繰り返し(偶数行) 立方体(辺長さ) #立方体の描画 pu();fd(辺長さ);rt(60);fd(辺長さ);lt(60);pd() #次へ移動D pu() #ペンアップ rt(60) #60°斜め下方向 fd(辺長さ*3) #3つ分の辺の長さ直進H lt(エ) #エ°回転して左を向くI setx(開始X座標) #開始X座標へ移動J pd() #ペンダウン 3行目開始点 #done() #speed(0)の時#を取ってdone()にする 6 伝統的な連続文様を描いてみよう(麻の葉文様) 2 麻の葉文様のプログラムを実行してみましょう。 プログラム ### 麻の葉文様 ### !pip install ColabTurtlePlus #Claboratory用タートルグラフィックスモジュールの読み込み from ColabTurtlePlus.Turtle import * #最初の2行は、1つのノートブックで最初に1回実行すればよい import math #数学ライブラリのインポート(三角関数を使うため) pi = math.pi #πを変数piに入れる #単位文様(麻葉)の関数 def 麻葉(a): #関数の定義 引数aは一片の長さ b=(a/2)/math.cos(pi/6) #小さい三角形の辺の長さb=一片の長さ/2×COS(π/6) for _ in range(3): #部品の描画3回繰り返し fd(a) #一辺直進@ ア #150°左回転 fd(b) #短辺直進A イ #180°左回転 fd(b) #短辺直進B lt(150) #150°左回転 #初期設定 clearscreen() #ペン位置:中央 向き:左 speed(10) #速度10 最高速はspeed(0) 最後にdone() shape("turtle2") #ペン形状 bgcolor("red") #背景赤色 color("white") #柄白色 pensize(2) #ペン太さ2 開始X座標=-500 #初期ペンX座標-500 開始Y座標=300 #初期ペンY座標 200 辺長さ=100 #一辺の長さ 100 列数=10 #文様列数 10 行数=10 #文様行数 2×10 pu();goto(開始X座標,開始Y座標);pd() #初期座標へ移動 #単位文様を繰り返し描画 for j in range(行数): #行の繰り返し for i in range(列数): #列の繰り返し ウ #ペンの方向0°(右向き)C 麻葉(辺長さ) #上向き麻葉の描画 pu();fd(辺長さ);pd() #次の始点へ移動D face(60) #ペン方向60°(1時方向)E 麻葉(辺長さ) #下向き麻葉の描画 face(0) #ペン方向0°(右向き)F pu() #ペンアップ setx(開始X座標) #開始X座標へ移動G pd() #ペンダウン 2行目開始点 for i in range(列数): #列の繰り返し face(-60) #ペン方向-60°(5時方向)H 麻葉(辺長さ) #下向き麻葉の描画 face(0) #ペンの方向0°(右向き)I pu();fd(辺長さ);pd() #次の始点へ移動J face(-120) #ペン方向-120°(7時方向)K 麻葉(辺長さ) #上向き麻葉の描画 face(0) #ペンの方向0°(右向き)L pu() #ペンアップ face(-60) #ペン方向-60°(5時方向)M fd(辺長さ*2) #辺の長さ×2直進N face(0) #ペンの方向0°(右向き)O setx(開始X座標) #開始X座標へ移動P pd() #ペンダウン 3行目開始点 #done() #speed(0)の時#を取ってdone()にする 7 伝統的な連続文様を描いてみよう(青海波文様) 2 青海波文様のプログラムを実行してみましょう。 ### 青海波文様 ### !pip install ColabTurtlePlus #Claboratory用タートルグラフィックスモジュールの読み込み from ColabTurtlePlus.Turtle import * #最初の2行は、1つのノートブックで最初に1回実行すればよい #単位文様(波)の関数 def 波(a): #関数の定義 引数aは波の半径 begin_fill() #塗りの開始 color("white","white") #線と塗りの色は白色 circle(a) #半径aの円を描く end_fill() #塗終わり  白い塗円が描ける@ color("LightBlue") #線の色をライトブルーにする pensize(int(a/6)) #ペンサイズを半径の6分の1にする circle(a) #ライトブルーの円を描くA ア #上を向く pu();fd(0.3*a);pd() #半径×0.3 円の中心に進む イ #右を向くB circle(a*0.7) #半径×0.7 で2番目の円を描くC ア #上を向く pu();fd(0.3*a);pd() #半径×0.3 円の中心に進む イ #右を向くD circle(a*0.4) #半径×0.4 で3番目の円を描くE ウ #下を向く pu();fd(a*0.6);pd() #半径×0.6 円の外側に進む イ #右を向く #初期設定 clearscreen() #ペン位置:中央 向き:左 speed(10) #速度10 最高速はspeed(0) 最後にdone() shape("turtle2") #ペン形状 bgcolor("gray") #背景ア灰色 color("white") #柄白色 pensize(10) #ペン太さ10 開始X座標=-400 #初期ペンX座標-400 開始Y座標=250 #初期ペンY座標 250 半径=60 #半径60 列数=7 #文様列数 7 行数=22 #文様行数 22 pu();goto(開始X座標,開始Y座標);pd() #初期座標へ移動 #単位文様を繰り返し描画 for j in range(行数): #行の繰り返し for i in range(列数): #列の繰り返し face(0) #右向を向く 波(半径) #波の描画 pu();fd(半径*2.2);pd() #半径×2.2右に進むF setx(開始X座標) #開始X座標へ戻るG face(-90) #下を向くH fd(半径/2) #半径/2 進むI face(0) #右を向くJ fd(半径*1.1*((j+1)%2)) #Jが0,2,4・・・の時(j+1)%2の値が1になり、半径×1.1右に進むK pd() #ペンダウン #done() #speed(0)の時#を取ってdone()にする