はじめに
前回の記事で、ペンギンの絵を描く構成要素を考察しました。
今回は、実際の構成要素をコードに落とし込んで、いよいよ絵を描いていきます。
ちなみに、ChatGPTに聞いてみたパターン(+修正したコード)の記事も書いていますので、ご覧いただけると幸いです!
- ChatGPT版 修正前
Pythonのturtleグラフィックスでペンギンを描いてみよう(自分でコードを書いてみた編)
ChatGPTが出してきたコードは、基本的に色で塗りつぶされた丸を用いた手法だったので、今回のコードは基本的に線画だけで表現する方法を目指します。
実際のコード
泥臭いコードすぎて長くなったので折りたたんでいます。
もっと綺麗に書きたいです!
ペンギンコード
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()
出力イメージ
【一番難しかったところ】
ウィンクと顔の模様の表現が一番難しかったです。ちなみに、半円で表現しました。
半円は、circle(100,180)
(半径100の半円)のようにすることで描けます😊
まとめ
シンプルな線だけどペンギンっぽく見えるかも!?
本当はピースさせたかったので、もっと上手く書けるようになりたいです!
参考リンク