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