CCCPaste

demo.py

#!/usr/bin/python3
import turtle 
import time
import math
# There is a chance all of this has to be in raw mode on the pi
#Demo functions for sketch-y-etch

t = turtle.Turtle()
t.hideturtle()
t.speed(0.5)
t.width(4)
t.color("blue")

# Set up the turtle screen
screen = turtle.Screen()
screen.setup(width=1.0, height=1.0)  # Set the window to full-screen mode

####General Use Function#####
def blank():
    t.clear()
    t.goto(0,0)


#######Function drawings#####
def draw_Flower():
	#inverted Arguelle's mandala
    RAD = 200
    radii = [RAD, RAD/1.25, RAD/1.5, RAD/1.75, RAD/2, RAD/2.25, RAD/3, RAD/4]

    def derp():
        t.pendown()
        for r in radii:
            t.circle(r, 360)
        t.penup()

    derp()
    t.left(-90) 
    derp()
    t.goto(0,0)
    t.left(-180) 
    derp()
    t.goto(0,0)
    t.left(-270) 
    derp()
    
def mandala():
## http://programming1work.oyosite.com/ch_turtle-mandala.html
    t.pendown()
    for times in range(36):
        t.color("blue")
        t.speed(11)
        t.circle(100)
        t.color("red")
        t.forward(200)
        t.left(120)
        t.color("orange")
        t.forward(100)
        t.right(120)
        t.left(170)
        t.left(20)
        t.forward(15)
        
            
def arguelles():
    RAD = 200
    radii = [RAD, RAD/1.25, RAD/1.5, RAD/1.75, RAD/2, RAD/2.25, RAD/3, RAD/4]

    def derp():
        t.pendown()
        for r in radii:
            t.circle(r, 360)
        t.penup()

    derp()
    t.goto(RAD,RAD)
    t.left(90) 
    derp()
    t.goto(0,0)
    t.goto(-RAD,RAD)
    t.left(180) 
    derp()
    t.goto(0,0)
    t.goto(0,RAD*2)
    t.left(270) 
    derp()
    
#Demo mode function for dumping source code clone to the turtle window
def dumpSRC():
    def draw_text_line(t, text, y):
        t.penup()
        t.goto(-300, y)  # Start position for the text
        t.pendown()
        t.write(text, font=("Arial", 12, "normal"))  # Write the text
    
    with open("source.txt", "r") as file:
        y = 350  # Starting y-coordinate for the first line of text
        for line in file:
            draw_text_line(t, line.strip(), y)
            y -= 20  # Move down for the next line

        # Check if the next line will exceed the window height
            if y < -350:
                time.sleep(2)
            # Clear the screen & resume writing
                t.clear()
            # Reset the start position
                y = 350
    draw_text_line(t, "Source Code Dump Successful", y)

# Draw a yin yang symbol
def taiju():
    t.penup()
    RAD = 200
    RAD2 = RAD / 2
    RAD6 = RAD / 6
    t.hideturtle()
    t.degrees() # Switch to degrees
    t.goto(0,-RAD)
    t.pendown()
# Draw the circle, radius 100, half black
    t.fillcolor('black')
    t.begin_fill()
    t.circle(RAD, 180)
    t.end_fill()
    t.circle(RAD, 180)

# Draw black head
    t.left(180)
    t.penup()
    t.goto(0, RAD)
    t.pendown()
    t.begin_fill()
    t.circle(RAD2, 180)
    t.end_fill()

# Draw white head
    t.penup()
    t.goto(0, -RAD)
    t.pendown()
    t.fillcolor('white')
    t.begin_fill()
    t.circle(RAD2, 180)
    t.end_fill()

# Draw eyes
    t.penup()
    t.goto(0, RAD2 + RAD6)
    t.begin_fill()
    t.circle(RAD6)
    t.end_fill()

    t.fillcolor('black')
    #t.goto(0, 2 * (RAD - RAD6))
    t.goto(0, 2 * (-RAD6))
    t.begin_fill()
    t.circle(RAD6)
    t.end_fill()    
            
"""
Functions:
draw_Flower()
mandala()
arguelles()
dumpSRC()
taiju()
"""  
    
arguelles()
time.sleep(3)
blank()

draw_Flower()
time.sleep(3)
blank()

dumpSRC() #text size could be increased
time.sleep(3)
t.clear()

t.color("black")
taiju()        
time.sleep(3)     

blank()
mandala() # on func end color is yellow
time.sleep(3)

"""      
#Todo 
*Fixed! bugs that occurred when making it run full screen
add more functions,
 write a loop. 
 listen for IO, 
 kill other processes, 
 write a class, or a library
"""