ChatGTPでプログラミング学習ー01

tutleGraphics を使ってみる

1. 円を描く

ChatGPTを使って、最初に何をやろうと思いますか?
僕は円を描こうと思いました。四角でもいいですよ。最初からもっと複雑な絵を描こうと思う人もいるかもしれませんね。
とにかく、円を描くお願いをしました。
プログラミング言語は一般的に薦められている感じがしたPythonにしました。

pythonではモジュールと言われるライブラリが使われます

そして、次のようなプログラムを作ってくれました

import turtle

# ウィンドウの初期設定
window = turtle.Screen()
window.bgcolor("white")
window.title("円を描く")

# turtleの設定
pen = turtle.Turtle()
pen.color("blue")
pen.speed(0)
pen.penup()

# 円を描く
pen.goto(0, -100)
pen.pendown()
pen.circle(100)

# 終了処理
turtle.done()

これが基本的なpythonでturtleモジュールを使って円を描くプログラムです。penというスプライト(turtle)を使って、(0,-100)の位置に行き、pen.circle(100)で 円を描きます。最後に終了処理のおまじないも忘れないようにお願いします。
Scratchと英語に少し慣れている皆さんは大体理解できるのではないでしょうか。
この結果を次に示します。

きれいな青色の円が描けました・・・矢印はカメでしょうね

コードを生成した後の説明として次のことが書かれています

これでばっちりですね。pythonを知らなくてもturtleモジュールを知らなくても初体験でしっかりとした円を描くことができました。
ステージの大きさも、円の大きさも円の色も適当に見計らって作ってくれたようですね。

参考1
youtubeにこのことを挙げておきました

参考2

エディターは Mu-Editorを使いました。初心者には使いやすいエデイターです

2. 円を動かしてみる

次のステップとして、二つの円を動かしてみました。

一応、指示を理解してくれたようです

これに対して次のcodeを作ってくれました。

code-前半部
code-後半部

次の説明が付きます。

クラスをぼんやりと理解してください

このプログラムでは、前と違ってcircle1,circle2というオブジェクトが作られます。また、circleを動かす関数が作られます。さらにWhile trueというループを使ってますね。Scratchの「ずーと」という機能ですね。
ここまで、Scratchに慣れていれば容易に理解できることかと思います。
1秒かかって目的地に行くというつもりでしたが、Scratchの1秒待つに相当する time.sleep(1) を使っているので、ちょっと思ったものと違います。あれこれといじったのですが、やはり、turtleはturtleと思った方がいいでしょう。また、別なモジュールを使ってやった方がいいかと思います。

結果の動画を次に示します。https://drive.google.com/file/d/14UYXA3wyTStyGzncRmHgT_I-mrIZHxLI/view?usp=share_link

3. 星をランダムに配置する

最初の例で典型的にペンを使った円を描きました。次の例ではオブジェクトとしての円を用いました。今度はChatGPTと対話をしながら夜空に星をちりばめてみましょう。
まずは次のお願いから始まります。

最初のお願いです

意気揚々と始まりました。次のCodeを生成しました。

生成Code
大雑把にCodeを理解できるでしょうか

ここでエラーが出ました。star.shape('star')が間違いのようです。タートルスターというのがありません。タートルスターというのが理解できなかったようです。

方針変換です

タートルスターというのを自分で描いてみることにしました。

Code-前半部
Code-後半部

for i in range(15):
………………………….
というのが出てきています。Scratchの15回くりかえすに対応します。その下に書いてあるのは条件付き文ですね。
これも変な絵が描かれておかしいことになりました。本来、おかしなとこをもっと詰めるべきかもしれまっせんが、次を急ぎました。

5角形の星でやることにしました

5角形の星を10個ランダムに配置を指示
code-前半部
code-後半部
説明
実施結果

とりあえずは星がランダムに10個配置されました。
次は色を決めます。少しずつのちがいを比べてみてください

黄色にしてくださいとお願いです
星形の描画の部分を取り出しました
star.color('red','yellow')になっています
塗りつぶしにも触れています
カメというかペンの形が邪魔なので取ってもらいたかったのですが
星の描画の部のCode
消えませんでした。うまく指示できてないのかもしれません

もう一つ、お願いしました。

背景色の変更をお願いしました
背景色設定の部分です

最終形として次のようなcodeを示してくれました。

code-前半部
code-後半部

このcodeで星が大きすぎたので、つぎの手直しをしました。
num_of_stars = 20
star.forward(40)
実施結果は次の通りです。

実行結果ーオブジェクトとすればまた変わったかも

今回、Code作成に当たって、指示を小さくすることによってCodeが読みやすくなり最終的なCodeが作りやすくなったかと思う。
仕様という意味で整理することも必要だと思うことを頭に入れながら、次に進みたいと思う。

4.まとめ

turtle graphicsの基本的な例題を3つ行ってみた。基本的な枠組みと記述方法は理解できたかと思う。
turtle graphicsの位置づけについて、ChatGPTは次のように述べている。

いくつかのプログラムを作って、次のモジュールを勉強しよう。

次はtkinter を扱います







この記事が気に入ったらサポートをしてみませんか?