2016-05-04 10 views
-2

Ich schreibe ein Stück Code, der einen sehr einfachen "Baum" rekursiv zeichnet. Es ist eine Reihe von Funktionen zusammen mit ein paar "Setup" -Zeilen, aber ich möchte es in ein größeres Programm integrieren, also möchte ich dies unter eine Klasse stellen, um es dann zu benennen, um den Baum zu zeichnen.Wie mache ich diesen Python-Turtle-Code kleiner, so dass es eine Klasse wird?

Meine Frage ist, neu zu Python, wie mache ich es? Ich lese über __init__ und self.(), aber mein Code scheint sehr verschwommen zu sein, überall und nicht kompakt genug, um es ordentlich in eine Klasse zu verwandeln.

Wie sollte ich zuerst die Codezeilen reduzieren, damit alles in Funktionen passt?

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

Sie scheinen Missverständnis zu sein, was eine Klasse tatsächlich ist. Nichts von diesem Code macht als Klasse tatsächlich Sinn. Außerdem gibt es keine Begrenzung für den Code, den Sie in eine Funktion oder Klasse einfügen können. – user2357112

+0

Das hängt von Ihrem Zweck für die Klasse ab: Welche Objekte und Methoden hat es? Welche Teile sind parametriert? Ist diese "Haupt" -Methode Teil der Klasse? Was kommt mit der Initialisierung? Welche Teile macht das aufrufende Programm? – Prune

Antwort

0

können Sie Ihre Klasse schreiben, unabhängig Länge Code, aber Sie können Ihren Code wie folgt reduzieren:

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)