1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【目指せ完走賞】hataのワクワクしたことまとめAdvent Calendar 2023

Day 12

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

Posted at

はじめに

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

ちなみに、ChatGPTに聞いてみたパターン(+修正したコード)の記事も書いていますので、ご覧いただけると幸いです!

  • ChatGPT版 修正前

penguin.gif

  • ChatGPT版 修正後
    penguin_GPT.gif

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()

出力イメージ

penguin wink.gif

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

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

まとめ

 シンプルな線だけどペンギンっぽく見えるかも!?

 本当はピースさせたかったので、もっと上手く書けるようになりたいです!

参考リンク

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?