2016-05-04 1 views
-2

非常に単純な「ツリー」を再帰的に描画するコードを記述しています。それは一連の関数といくつかの "set up"行ですが、もっと大きなプログラムに統合したいので、これをクラスの下に置いてツリーを描画したいと思います。このPythonタートルのコードをどのように小さくしてクラスにするのですか?

私の質問は、Pythonの初心者ですが、どうすればいいですか?私は__init__self.()について読んでいますが、私のコードは非常にあいまいで、どこにでもあり、きちんとクラスに変換するのに十分なコンパクトではありません。

最初にコードの行を減らして関数に収まるようにする方法はありますか?

import turtle as t 
import random 
def arbre(branche,t): 
    if branche > 5: 
     t.forward(branche) 
     t.right(20) 
     arbre(branche-15,t) 
     t.left(40) 
     arbre(branche-15,t) 
     t.right(20) 
     t.backward(branche) 
def main(): 

    t.up() 
    t.down() 
    t.color("green") 
    arbre(90,t) 

for k in range(0,17): 
    t.left(10) 
    main() 

t.right(80) 
t.backward(50) 
t.penup() 
t.forward(25) 
t.pendown() 
t.right(60) 
for k in range(0,11): 
    t.left(10) 
    main() 
+1

あなたはクラスが実際に何であるか誤解しているようです。このコードは実際にはクラスとしては意味がありません。また、関数やクラスに入れることができるコードの量に制限はありません。 – user2357112

+0

これは、クラスの目的に応じて異なります。オブジェクトやメソッドにはどのようなものがありますか?どの部分がパラメータ化されていますか?この「メイン」メソッドはクラスの一部ですか?初期化には何がありますか?呼び出し元プログラムはどの部分を処理しますか? – Prune

答えて

0

あなたは関係なく、あなたのコードの長さを、あなたのクラスを記述することができますが、このようなコードを減らすことができます

import turtle as t 
t.tracer(2,1) # pour accelerer le dessin 
def arbre(branche,t): 
    if branche > 5: 
     t.forward(branche) 
     t.right(20) 
     arbre(branche-15,t) 
     t.left(40) 
     arbre(branche-15,t) 
     t.right(20) 
     t.backward(branche) 

def main(n): 
    for k in range(n): 
     t.left(10) 
     arbre(90,t) 

t.color("green") 
main(17) 

t.right(80) 
t.backward(50) 
t.penup() 
t.forward(25) 
t.pendown() 
t.right(60) 

main(10)