2023年1月17日火曜日

Pythonのタートルグラフィックス

Π角形からの続き

Pythonで同じようなタートルグラフィックスが使えないかと調べると,turtleという呼ばれるライブラリがあらかじめ用意されており,楽勝かと思われた。

お絵書きでPythonを学ぶというページにしたがって,コマンドラインで実行してみると,画像が出ない。どうやら,pythonからtcl-tkへのつなぎが必要らしい。brew install python-tk とごそごそやっていたらすぐ動くようになった。

落とし穴があった。インタラクティブな実行ではなく,プログラムファイルを作って一括処理を試みたときだ。見本のファイル名をturtle.pyとしたのがまずくて,循環参照のエラーが出てしまった。その原因がわからなくて踠いていたが,こういうときはエラーメッセージで検索するのが一番である。ファイル名をkame.pyとして事無きを得た。

次により大きな罠が控えていた。jupyter環境でpythonを実行させるほうが便利だろうと,kame.pyのコードをjupyter lab で実行させたところ,_tkinterが見つからないエラーで一歩も進めない。ネットの記事にはpyenvコマンドを駆使して,pythonを一回アンインストールしてからtcl-tkをインストールした上で,再度pythonをインストールすればよいとある。

その手順通りのままには進めずに四苦八苦したものの,指示通りにコマンドラインからtcl-tkを使ったライブラリが正しくインストールできたようには見えた(これは最初の段階と本質的には変わっていない)。それでもjupyterでは同じエラーが出てだめなのだ。どうやら,jupyterのpythonではturtleが使えないということになっているらしい(未確認)。

ProcessingのプログラムをPythonに移植したものを次に示す。

#!/opt/homebrew/bin/python3

# usage ./kame.py m n 

import turtle

import sys


m = float(sys.argv[1])

n = float(sys.argv[2])

r = 0

g = 0

b = 0

turtle.colormode(255)


turtle.begin_fill()

for i in range(255):

    r = (r+3) % 25

    g = (g+5) % 255

    b = (b+7) % 255

    turtle.pencolor(r,g,b)

    turtle.forward(200)

    turtle.left(360/m*n)

turtle.end_fill()


turtle.done()

pythonのトレーニングをしたと思うことにする。コマンドラインでm,nは入力しているが,簡単な有理数でないものを入れたい場合は,m=3.1415926 n=1 を代入すればよい。

図:pythonのΠ角形タートルグラフィックスの途中

0 件のコメント: