from cs1graphics import * class Tree(Drawable): def __init__(self, trunkHeight, order): super().__init__() self._trunk = Rectangle(0.1*trunkHeight, trunkHeight, Point(0, -0.5*trunkHeight)) self._trunk.setFillColor('brown') self._subtrees = [] if order > 1: # let's add more subtrees t1 = Tree(0.65*trunkHeight, order-1) t1.move(0,-0.8*trunkHeight) t1.rotate(-30) self._subtrees.append(t1) t1 = Tree(0.6*trunkHeight, order-1) t1.move(0,-trunkHeight) t1.rotate(0) self._subtrees.append(t1) t1 = Tree(0.6*trunkHeight, order-1) t1.move(0,-0.8*trunkHeight) t1.rotate(30) self._subtrees.append(t1) def _draw(self): self._trunk._draw() for s in self._subtrees: s._draw() if __name__ == '__main__': paper = Canvas(800,800) sample = Tree(100, 8) sample.move(400,800) paper.add(sample)