code.py
 1  # SPDX-FileCopyrightText: 2019 John Edgar Park for Adafruit Industries
 2  #
 3  # SPDX-License-Identifier: MIT
 4  
 5  # Turtle Gizmo Christmas Tree
 6  #==| Turtle Gizmo Setup start |========================================
 7  import board
 8  import busio
 9  import displayio
10  from adafruit_st7789 import ST7789
11  from adafruit_turtle import Color, turtle
12  displayio.release_displays()
13  spi = busio.SPI(board.SCL, MOSI=board.SDA)
14  display_bus = displayio.FourWire(spi, command=board.TX, chip_select=board.RX)
15  display = ST7789(display_bus, width=240, height=240, rowstart=80,
16                   backlight_pin=board.A3, rotation=180)
17  turtle = turtle(display)
18  #==| Turtle Gizmo Setup end |=========================================
19  
20  # Fractal Christmas Tree:
21  # https://codegolf.stackexchange.com/questions/15860/make-a-scalable-christmas-tree
22  #  by Keith Randall
23  n = 42  # input value for scaling the tree. note: ornaments don't scale
24  turtle.goto(0, -20)
25  
26  #star
27  turtle.left(90)
28  turtle.forward(3*n)
29  turtle.pencolor(Color.YELLOW)
30  turtle.left(126)
31  turtle.pendown()
32  for _ in range(5):
33      turtle.forward(n/5)
34      turtle.right(144)
35      turtle.forward(n/5)
36      turtle.left(72)
37  turtle.right(126)
38  
39  #tree
40  turtle.pencolor(Color.GREEN)
41  turtle.back(n*4.8)
42  
43  def tree(d,s):
44      if d <= 0:
45          return
46      turtle.forward(s)
47      tree(d-1, s*.8)
48      turtle.right(120)
49      tree(d-3, s*.5)
50      turtle.right(120)
51      tree(d-3, s*.5)
52      turtle.right(120)
53      turtle.back(s)
54  turtle.pendown()
55  turtle.pencolor(Color.GREEN)
56  tree(15, n)
57  turtle.back(n/2)
58  
59  #ornaments
60  def ornament(x, y):
61      turtle.penup()
62      turtle.goto(x, y)
63      turtle.pencolor(Color.RED)
64      turtle.pendown()
65      turtle.dot(7)
66      turtle.penup()
67  
68  orn_pnts=[  (5, 60), (-7, 40), (10, 20), (-15, 0), (25, -20),
69              (-27, -30), (7, -33), (40, -60), (-9, -63),
70              (-50, -88), (62, -97) ]
71  
72  for j in range(len(orn_pnts)):
73      ornament(orn_pnts[j][0], orn_pnts[j][1])
74  
75  
76  turtle.penup()
77  turtle.goto(0, -120)
78  
79  while True:
80      pass