Pythonのturtleグラフィックスでペンギンを描いてみよう（自分でコードを書いてみた編）

# はじめに

 前回の記事で、ペンギンの絵を描く構成要素を考察しました。
 今回は、実際の構成要素をコードに落とし込んで、いよいよ絵を描いていきます。

:::note info
ちなみに、ChatGPTに聞いてみたパターン（＋修正したコード）の記事も書いていますので、ご覧いただけると幸いです！
:::

* ChatGPT版　修正前

![penguin.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/974182/71dbbc07-ef8b-e82b-a89e-deb9eca26371.gif)


* ChatGPT版　修正後
![penguin_GPT.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/974182/9e46155d-41a9-4b9a-225b-567faff5c20a.gif)


https://qiita.com/awonohata/items/8abcd7732c8572f86f6d

https://qiita.com/awonohata/items/f2c489d2e22824dfc99b

# Pythonのturtleグラフィックスでペンギンを描いてみよう（自分でコードを書いてみた編）

:::note info
　ChatGPTが出してきたコードは、基本的に色で塗りつぶされた丸を用いた手法だったので、今回のコードは基本的に線画だけで表現する方法を目指します。
:::

## 実際のコード
:::note warn
泥臭いコードすぎて長くなったので折りたたんでいます。
もっと綺麗に書きたいです！
:::

<details><summary>ペンギンコード</summary>

~~~Python
from turtle import *

hideturtle() # 矢印なし

# draw face
circle(50)

# draw face2 left

penup()
home()
setpos(0,60)
pendown()

right(270)
circle(24,180)

# draw face2 right

penup()
home()
setpos(48,60)
pendown()

right(270)
circle(24,180)

# draw left eye

penup()
home()
setpos(-20, 60)
pendown()

fillcolor('black')
begin_fill()
circle(5)
end_fill()

# draw right eye

penup()
home()
setpos(30,60)
pendown()

right(270)
circle(8,180)

# draw beak(up)

penup()
home()
setpos(0,60)
pendown()
pencolor('orange')

right(60)
forward(20)

right(120)
forward(20)

right(120)
forward(20)

penup()

# drae beak(down)

home()
setpos(0,25)

pendown()

left(60)
forward(20)

left(120)
forward(20)

left(120)
forward(20)

# draw Belly

penup()
home()
setpos(0,-90)
pendown()

pencolor('black')
circle(50)

penup()

# draw Belly2

home()
setpos(0,-90)
pendown()

pencolor('gray')
circle(25)

penup()

# draw left leg

home()
setpos(-20,-90)
pendown()

pencolor('orange')
circle(10)

penup()


# draw right leg

home()
setpos(20,-90)
pendown()

pencolor('orange')
circle(10)

penup()

# draw left arm

home()
setpos(-50,-20)

pencolor('black')
pendown()
circle(20)
penup()

# draw right arm

home()
setpos(50,-20)

pendown()
circle(20)
penup()

# star1

penup()
goto(100, 50)

pencolor('orange')
pendown()

right(90)
forward(20)

right(144)
forward(20)

right(144)
forward(20)

right(144)
forward(20)

right(144)
forward(20)

penup()

# star2

penup()
goto(110, 70)

pencolor('orange')
pendown()

right(90)
forward(20)

right(144)
forward(20)

right(144)
forward(20)

right(144)
forward(20)

right(144)
forward(20)

penup()

mainloop()
~~~

</details>

## 出力イメージ

![penguin wink.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/974182/c6959475-ee5b-659d-ce72-187993c4d51a.gif)

:::note info
**【一番難しかったところ】**
ウィンクと顔の模様の表現が一番難しかったです。ちなみに、半円で表現しました。

半円は、`circle(100,180)`　（半径100の半円）のようにすることで描けます😊
:::


# まとめ

　シンプルな線だけどペンギンっぽく見えるかも！？
 
　本当はピースさせたかったので、もっと上手く書けるようになりたいです！

## 参考リンク

https://qiita.com/Geochelone/items/4c618105885abd5b27ef

https://www.techlifediary.com/how-to-design-doraemon-in-python/

https://trap.jp/post/607/

https://tokkunchu.blogspot.com/2018/06/draw-heart-shape-using-turtle-matplotlib.html

http://doc.pv.land.to/library/turtle.html

https://3pysci.com/python-turtle-6/

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13252368343