弊社のオフィスには7匹のネコがおり、その為かネコ好き社員が多く在籍している変わった会社となっております。斯く言う私もネコ好きなのですが、同じくらい亀も好きで、家にはクサガメとホシガメ(リクガメ)を飼っております。
今回はネコとカメをテーマにタートルグラフィックスでネコを描いてみます!
タートルグラフィックスとは
画面上に表示されているカメに命令を与えて動きの指示を出します。カメが移動をすると軌跡が線となって描画されます。簡単な命令を組み合わせることで複雑な図形の描画ができるため、プログラミング学習の現場で使用されているそうです。
WindowsではPythonをインストールすればタートルグラフィクスが標準で使えます。
まずはカメを動かしてみる
まずはカメを前進させてみます。タートルグラフィックスでは描画エリアの中央が(0 , 0)となっており、カメは0度(東)を向いています。この状態でforward(前進)の命令を与えてみます。
# coding: UTF-8
import turtle
wn = turtle.Screen()
tur = turtle.Turtle()
tur.shape("turtle")
# カメを100前進させる
tur.forward(100)
wn.exitonclick()
カメの向きを変える
カメの向きを変える場合はsetheadingで指定します。引数は角度になりますが、少し癖があるので注意が必要です。【東(0度)、北(90)、西(180)、南(270)】
向きを変更して五芒星の描画を行います。
# coding: UTF-8
import turtle
wn = turtle.Screen()
tur = turtle.Turtle()
tur.shape("turtle")
for i in range(5):
# カメの向きを変える
tur.setheading(i * 216)
tur.forward(100)
wn.exitonclick()
ネコを描画してみる
タートルグラフィックスでは上記で説明した命令以外にもたくさん用意されております(参考https://docs.python.jp/3/library/turtle.html#turtle.forward)
では実際にいろいろな命令を使ってネコを描画してみたいと思います。
# coding: UTF-8
import turtle
wn = turtle.Screen()
tur = turtle.Turtle()
tur.pensize(3)
tur.shape("turtle")
# まるかいてちょん
def maru_chon(kame, i):
kame.penup()
kame.goto(50 * i, 100)
kame.down()
kame.circle(50)
kame.penup()
kame.goto(30 * i, 140)
kame.dot(20)
# お豆に芽が出てて―
def omame(kame):
kame.penup()
kame.goto(0, 80)
kame.down()
kame.circle(20)
kame.goto(0, 50)
# お空に三日月のぼってた
def osora_mikaduki(kame):
kame.penup()
kame.goto(0, 50)
kame.down()
kame.goto(80, 50)
kame.setheading(90)
kame.circle(80, -180)
kame.setheading(90)
kame.goto(0, 50)
# 植木鉢1
def uekibachi_1(kame):
kame.penup()
kame.goto(-100, 140)
kame.down()
kame.setheading(210)
kame.circle(100, 120)
kame.setheading(90)
kame.setx(100)
kame.setheading(30)
kame.circle(100, 120)
# 植木鉢2
def uekibachi_2(kame):
kame.penup()
kame.goto(0, -70)
kame.setheading(0)
kame.circle(170, 50)
kame.down()
kame.circle(170, 260)
# ひげを付けたら
def hige(kame, i):
kame.penup()
kame.goto(90 * i, 80)
kame.down()
kame.goto(130 * i, 90)
kame.penup()
kame.goto(90 * i, 60)
kame.down()
kame.goto(130 * i, 60)
kame.penup()
kame.goto(90 * i, 40)
kame.down()
kame.goto(130 * i, 30)
maru_chon(tur, -1)
maru_chon(tur, 1)
omame(tur)
osora_mikaduki(tur)
uekibachi_1(tur)
uekibachi_2(tur)
hige(tur, -1)
hige(tur, 1)
tur.hideturtle()
wn.exitonclick()
最後に
いかがでしょうか。とてもかわいいネコが書けたと思います。
タートルグラフィックは気軽に線画などが描画できるため、気分転換などにオリジナルの数式で幾何学模様を作ってみるのも楽しいかもしれませんね。