# tree.py - recursive tree drawings # original from Miller/Ranum # updated by cmc, 3/3/2015 # try len = 100 import random import sys import turtle # original Listing 9.3 def draw1(len, t): if len < 5: return t.forward(len) t.right(30) draw1(len - 15, t) t.left(60) draw1(len - 15, t) t.right(30) t.backward(len) # second version (used by main) adds randomness # and color based on Exercises 9.11-9.13 def draw2(len, t): if len < 5: return if len < 15: t.color("green") else: t.color("brown") t.down() t.forward(len) angle = random.randint(15, 45) shrink = random.randint(5, 25) t.right(angle) draw2(len - shrink, t) t.left(2 * angle) draw2(len - shrink, t) t.right(angle) t.up() t.backward(len) # added a main method to get user requests from command line def main(): ''' starts the application, and processes first command line argument if present - integer trunk len assumed ''' defaultLen = 80 if len(sys.argv) < 2: trunkLen = defaultLen else: try: trunkLen = int(sys.argv[1]) except: print("\nError:", sys.exc_info()[0]) print("Setting trunk length to ", defaultLen) trunkLen = defaultLen t = turtle.Turtle() t.speed(10) t.hideturtle() t.right(90) t.up() t.forward(250) t.right(180) t.down() draw2(trunkLen, t) t.up() t.right(90) t.forward(5) t.down() t.color("black") t.write("Done. Click to exit.", font=('Arial', 12, 'bold')) t.getscreen().exitonclick() main()