Pythonで画を描こう~turtleで色を変えるには?~

2024年4月12日(金)は、8割ほどの出席率でした。実施したメニューは前回と同じです。タイピング練習とマウスの練習、そしてTurtle.pyでお絵描きです。

  • 18時00分~18時20分 タイピング練習
  • 18時20分~18時40分 マウス練習
  • 18時25分~19時50分 turtle.py
  • 19時50分~20時00分 あとかたづけ

タイピング練習

今回のタイピングの練習は、「寿司打」を使ってみました。

https://sushida.net

いつもより熱中して取り組むメンバーが多かったように思います。反対に、ベネッセの無料タイピングが良かったメンバーも少数ながらいました。

さすがだと思ったのは、寿司打の開発者です。寿司打には、思わず熱中してしまうゲーム性の高さがあります。メンバーが普段より楽しんでいるように感じました。

マウス練習~マインスイーパー~

マウス練習は、マインスイーパーを使います。

難易度低(初級)では、わたしとおなじくらいの記録をだすメンバーが出てきました。パズル要素の考え方もいくつか教えました。あとはマウスに慣れるだけ。無意識に手がタッチパッドにいかないくらいには、マウスに慣れてほしいと思います。

Turtleサンプルコードを改造しよう~色を設定する~

先週に引き続き、Turtle.pyに取り組みます。わたしが示したサンプルを、すべて試し終えたメンバーも出てきました。

サンプルコードを写経し終えたら、設定値として書かれている数値・文字などを変えてみます。今回は、「色を変えたい」という声が多かったので、色の設定に挑戦しました。

色名を指定する

turtle.pyは、画を描く部分でtkinterというモジュールを使っています。したがって、色の設定はtkinterの設定項目を引き継いでいます。

tkinterで使える色名の一覧は、下記URLにきれいにまとめられています。700以上の色定義が使えます

https://qiita.com/ArataKinjo/items/65f73092751f3eff0036

下の図のような色一覧を表示するプログラムを公開してくれているひともいます。

さて、これらを使ってコードに反映します。例えば、下のコードだと2行目の「red」「yellow」を、調べた色名に置き換えてみましょう。

from turtle import *
color('darkorange', 'limegreen')
begin_fill()
while True:
    forward(200)
    left(170)
    if abs(pos()) < 1:
        break
end_fill()
done()

もちろん、スペルを間違えるとプログラムは動きません。間違えずに入力してください。

RGBで色を指定する

色名を指定する方法を説明しているときに、メンバーから「色名を指定する方法以外の方法はありませんか?」と質問が出ました。あります。

プログラムを組むときに、ほかに方法がないか考える姿勢は超重要です。実現したいことは一つでも、それを実現する方法は複数あることがほとんどです。それぞれの方法に優劣はありません。場合によって使い分けましょう。そのためには、知っておかなければなりません。

色を指定する方法は、色名を指定するほか、光の三原色の割合で示す方法があります。

光の三原色は、R(Red)、G(Green)、B(Blue)です。コンピューターの世界で使われる色は、この3色の割合で表現できます。RGBカラーと呼ばれることが多いので、覚えておきましょう。

Turtle.pyでRGBを使う場合は、RGBをそれぞれ256階調であらわします。つまり、Redの量が100%のときに「255」、0%のときに「0」というように指定します。

さきほどのflower2.pyをRGBをつかって書きなおすと、下のコードになります。2、3行目が変更箇所です。

from turtle import *
colormode(255)
color((255, 140, 0), (50, 205, 50))
begin_fill()
while True:
    forward(200)
    left(170)
    if abs(pos()) < 1:
        break
end_fill()
done()

(255, 140, 0)というのは、Rが255(100%)、Gが140(54.7%)、Bが0(0%)という意味です。数字の並びは、必ずRGBです。

これにより、色名だと700色程度しか指定できなかったのに対して、256✕256✕256=16,777,216色の表現ができます。日本の伝統色とか、世界各国の伝統色も表現できます。

とはいっても、「数字だけを見て自分の望む色を得る」のは至難の業です。「自分の望む色を選んで、そのときのRGBを読む」ほうがかんたんです。そのために、Googleが使いやすいツールを用意していました下のURLから、Googleカラーピッカーのリンクに飛んでください。

https://koto-ictclub.net/link#tool-color

上の図のように、マウスドラッグで色を選択します。そのとき、左下のRGBの値を読みます。「HEX」「CMYK」「HSV」「HSL」はRGBとおなじようにコンピューターで色を表現するほかの方法です。プログラムで使う場面になったときに、あらためて解説します。

下は、Turtle.pyの色を変更しようと四苦八苦しているようです。

そして、下の動画は中学生のメンバーが色変えとコードの改造を完成させたプログラムの実行結果です。

今回でTurtle.pyは、いったん終了します。次回からは、マインスイーパーを使うのではなく、作ろうと予定しています。