はじめに
前回の記事で、ChatGPTにペンギンを描くコードを聞いてみたところ、やりたいことは分かるけど成立していない絵が出てきました。
ただ、要素自体は使えそうなものが多かったので、読み解いた結果を使って、コードを修正してペンギンを描こうと思います。
Pythonのturtleグラフィックスでペンギンを描いてみよう(ChatGPTのコードを修正してみた編)
出力イメージ
ちょっと顔とポーズがぎこちない感じはしますが、パッと見てペンギンっぽくなっているのではないでしょうか?
※おでこのところが少し苦し紛れではありますが。
コード
基本的な流れは以下の通りです。
- 顔の土台(黒)を描く
- 顔の土台(白)を描く
- 額の部分の模様を丸(黒)で表現する。
- 目を描く
- クチバシを描く
- 手を描く
- お腹の土台(黒)を描く
- お腹の模様(白)を描く
- 足を描く
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の内容が間違っていても、それを下敷きにコードを修正することは可能
- そのために、コードで何を表現しているのか読み解く知識・力が必要
- 可読性を高めるために、コメントを有効活用することも重要
と感じました。