LoginSignup
2
0

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

Last updated at Posted at 2023-12-24

はじめに

 前回の記事で、ChatGPTにペンギンを描くコードを聞いてみたところ、やりたいことは分かるけど成立していない絵が出てきました。

ただ、要素自体は使えそうなものが多かったので、読み解いた結果を使って、コードを修正してペンギンを描こうと思います。

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

出力イメージ

 ちょっと顔とポーズがぎこちない感じはしますが、パッと見てペンギンっぽくなっているのではないでしょうか?
※おでこのところが少し苦し紛れではありますが。

penguin_GPT.gif

コード

 基本的な流れは以下の通りです。

  1. 顔の土台(黒)を描く
  2. 顔の土台(白)を描く
  3. 額の部分の模様を丸(黒)で表現する。
  4. 目を描く
  5. クチバシを描く
  6. 手を描く
  7. お腹の土台(黒)を描く
  8. お腹の模様(白)を描く
  9. 足を描く

ChatGPTのコードからの修正部分

 描画画面を見ていると分かりますが、ほとんど丸で構成されています。

  • 円の大きさの調整
  • 円の位置の調整
  • 要素の追加
import turtle
def draw_penguin():
    screen = turtle.Screen()
    screen.title("Turtle Penguin")
    # Creating a turtle object(pen)
    pen = turtle.Turtle()

    # Defining method to draw a colored circle with a dynamic radius
    def ring(col, rad):
        # Set the fill
        pen.fillcolor(col)

        # Start filling the color
        pen.begin_fill()

        # Draw a circle
        pen.circle(rad)

        # Ending the filling of the color
        pen.end_fill()

# Draw face

    # Draw face(black)
    pen.up()
    pen.setpos(0, 35)
    pen.down()
    ring('black', 45)

    # Draw face(white)
    pen.up()
    pen.setpos(0, 38)
    pen.down()
    ring('white', 35)

    # Draw face(black)
    pen.up()
    pen.setpos(0, 90)
    pen.down()
    ring('black', 15)
    
# Draw eye

    # Draw first eye
    pen.up()
    pen.setpos(-18, 75)
    pen.down
    ring('black', 8)

    # Draw second eye
    pen.up()
    pen.setpos(18, 75)
    pen.down()
    ring('black', 8)

    # Draw first eye(white)
    pen.up()
    pen.setpos(-18, 82)
    pen.down()
    ring('white', 2)

    # Draw second eye(white)
    pen.up()
    pen.setpos(18, 82)
    pen.down()
    ring('white', 2)

# Draw beak

    # Draw beak
    pen.up()
    pen.setpos(0, 55)
    pen.down()
    ring('orange', 8)

# Draw arms

    # Draw arms(black)
    pen.up()
    pen.setpos(-30, 10)
    pen.down()
    ring('black', 20)

    # Draw arms(black)
    pen.up()
    pen.setpos(30, 10)
    pen.down()
    ring('black', 20)

# Draw belly

    # Draw belly(black)
    pen.up()
    pen.setpos(0, -40)
    pen.down()
    ring('black', 40)

    # Draw belly(white)
    pen.up()
    pen.setpos(0, -40)
    pen.down()
    ring('white', 30)

# Draw feet

    # Draw feet
    pen.up()
    pen.setpos(-25, -40)
    pen.down()
    ring('orange', 10)

    pen.up()
    pen.setpos(25, -40)
    pen.down()
    ring('orange', 10)

    turtle.done()

draw_penguin()

まとめ

位置座標や大きさを調整しながら実行…また描画画面を見て修正・実行…を繰り返してかなり時間がかかりましたが、なんとか作成できました。ただ、ChatGPTがなければスタートラインすらも立てなかったような気がしています。

 そこで、

  • 一から自分で描くよりもChatGPTに聞いた方がいい時もある
  • ChatGPTの内容が間違っていても、それを下敷きにコードを修正することは可能
  • そのために、コードで何を表現しているのか読み解く知識・力が必要
  • 可読性を高めるために、コメントを有効活用することも重要
    と感じました。
2
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
2
0