前提・実現したいこと
フラクタルの作図のために以下のHPのサンプルプログラムを勉強中です。
ttp://souzousha.iinaa.net/www/PythonFractalSample/sec01.txt
リスト1-4のプログラムが正常に稼働することを目標にしています。
発生している問題・エラーメッセージ
python歴3か月ぐらいの新人です。 以下のコードが引数が多すぎるとエラーが発生して止まってしまいます。 リスト1-3の37行目あたりがおかしいことまではわかりましたが、 何が悪いのか?どうすれば良いのかがサッパリ掴めなくて困っています。 ご助力頂けますと大変助かります。
該当のソースコード
python 3.6 windows pycharm
【リスト1-3】以下のプログラムをtkinterTurtle.pyとして保存します。 01 from tkinter import * 02 import math 03 # 04 # ■相対描画のためのRelativeDrawクラス定義 05 # 06 # 変数名 = RelativeDraw(canvas, startX, startY,scaleX, scaleY, 07 # lineWidth,color) 08 # 09 # canvas : キャンバス 10 # startX, startY : 表示開始位置 11 # scaleX, scaleY : 表示スケール(上下または左右を逆転するとき負) 12 # lineWidth : 描画する直線の太さ 13 # color : カラーを文字列で指定(例 : 'red', '#00FFFF') 14 # 15 class RelativeDraw: 16 #■ コンストラクタ 17 def __init__(self, canvas,startX, startY,scaleX, scaleY, 18 lineWidth, color): 19 self.canvas=canvas 20 self.X0=startX; self.Y0=startY 21 self.SX=scaleX; self.SY=scaleY 22 self.lineWidth=lineWidth 23 self.color=color 24 self.goto(0,0) 25 #■ XY座標設定 26 def goto(self,x,y): self.x=x; self.y=y 29 #■ スクリーン座標への変換 30 def screenX(self, X): return self.X0 + self.SX * X 32 def screenY(self, Y): return self.Y0 + self.SY * Y 33 class TurtleGraph(RelativeDraw): 34 #■ コンストラクタ 35 def __init__(self, canvas,startX, startY, 36 scaleX, scaleY, lineWidth,color): 37 super().__init__(self,canvas,startX, startY,scaleX, scaleY, 38 lineWidth,color) 39 self.setAng(0) 40 #■ 角度設定 41 def setAng(self,th): self.th=th 42 #■ 向きの変更(右回転は負の値で指定) 43 def turn(self,th): self.th=self.th+th 44 #■ 前に進む(後退は負の値で指定) 45 def forward(self,L): 46 TH=self.th*math.pi/180 47 X=self.x+L*math.cos(TH); Y=self.y+L*math.sin(TH) 49 self.canvas.create_line(self.screenX(self.x), 50 self.screenY(self.y), 51 self.screenX(X), self.screenY(Y), 52 width = self.lineWidth, fill = self.color) 53 self.x=X; self.y=Y 【リスト1-4】tkinterTurtle.pyを使ったコッホ曲線描画 01 from tkinter import * 02 from tkinterTurtle import * 03 #■コッホ曲線のクラス定義(turtleGraph, RelativeDrawクラスからの継承) 04 class Koch(TurtleGraph): 05 def curve(self,N,L): 06 if N<=0: self.forward(L) 07 else: 08 NN=N-1; LL=L/3 09 self.curve(NN,LL) 10 self.turn(60) ; self.curve(NN,LL) 11 self.turn(-120); self.curve(NN,LL) 12 self.turn(60) ; self.curve(NN,LL) 13 #■ tkinter,Canvas共通処理 14 def initTk(Title): 15 tk=Tk(); tk.title(Title) 16 return tk 17 def initCanvas(W,H): 18 canvas=Canvas(tk,width=W,height=H) 19 canvas.pack() 20 return canvas 21 #■ メイン処理 22 tk=initTk("Koch Curve used tkinter") 23 canvas=initCanvas(600,300) 24 koch=Koch(canvas, 50, 200, 1, -1, 2, 'blue') 25 koch.curve(5,420) 26 tk.mainloop()
試したこと
リスト1-3の37行目あたりがおかしいことまではデバッグをしてわかりましたが、
何が悪いのか?どうすれば良いのかがサッパリ掴めなくて困っています。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー