forked from Bangor-Makerspace/SketchyEtch
-
Notifications
You must be signed in to change notification settings - Fork 0
/
fsTurt.py
118 lines (101 loc) · 3.07 KB
/
fsTurt.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#!/usr/bin/env python3
import turtle
import os
import time
import demo
# Discount Sketch-Y-Etch version for standard keyboard hardware
# using a teensy for IO, and processing the keypresses.
t = turtle.Turtle()
t.home()
t.shape('circle')
t.shapesize(0.5) # Cursor size: 0.5 is half of normal
t.width(10)
i = 0 #index: current colour count
def move(key):
x = t.xcor()
y = t.ycor()
screen.title(f"X: {t.xcor()}, Y: {t.ycor()}")
if key == "Up":
y += 10
t.goto(x, y )
elif key == "Down":
y -= 10
t.goto(x, y )
elif key == "Left":
x -= 10
t.goto(x, y)
elif key == "Right":
x += 10
t.goto(x, y)
elif key == "Clear": # c key
t.reset()
t.shape('circle')
t.shapesize(0.5) # Cursor size: 0.5 is half of normal
t.width(10)
elif key == "Quit": # q key
exit()
#toggle though colors
def Colour(channel): # g key
global i
colors = [(1, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1), (1, 0, 1), (1, 1, 0), (1, 1, 1), (0, 0, 0)] # List of RGB colors
t.pencolor(colors[i % len(colors)]) # Set pen color based on the current index of the length of the color list
i += 1
def lift_pen(channel): # l key
if t.isdown():
t.penup()
else:
t.pendown()
def saveSVG(channel): # s key
# utilizing geg
# Get the current Unix time
current_time = int(time.time())
t.hideturtle()
canvas_data = turtle.getcanvas().postscript()
# Construct the file name with the current time and the .ps extension
ps_file_name = f"{current_time}.ps"
svg_file_name = f"{current_time}.svg"
File_path = '/home/m/Desktop/git/SketchyEtch'
output_path = os.path.join(File_path, svg_file_name)
with open(ps_file_name, 'w') as f:
f.write(canvas_data)
# Show the turtle again
t.showturtle()
os.system('eps2svg ' + ps_file_name + ' ' + output_path)
os.system('rm ' + ps_file_name)
# Demo mode switch
def demoMode(channel):
t.hideturtle()
demo.dumpSRC()
time.sleep(2)
demo.blank()
demo.draw_Flower()
time.sleep(3)
demo.blank()
demo.arguelles()
time.sleep(3)
demo.blank()
demo.mandala()
time.sleep(3)
demo.blank()
demo.taiju()
time.sleep(3)
demo.blank()
t.showturtle()
screen = turtle.Screen()
screen.setup(width=1.0, height=1.0) # Set the window to full-screen mode
canvas = screen.getcanvas()
root = canvas.winfo_toplevel()
root.overrideredirect(1)
# Bind arrow key presses to the move function
screen.onkeypress(lambda: move("Up"), "Up")
screen.onkeypress(lambda: move("Down"), "Down")
screen.onkeypress(lambda: move("Left"), "Left")
screen.onkeypress(lambda: move("Right"), "Right")
screen.onkeypress(lambda: move("Clear"), "c")
screen.onkeypress(lambda: move("Quit"), "q")
screen.onkeypress(lambda: Colour("Color"), "g")
screen.onkeypress(lambda: lift_pen("lift"), "l")
screen.onkeypress(lambda: saveSVG("save"), "s")
screen.onkeypress(lambda: demoMode("demo"), "d")
screen.listen() # Listen for key presses
screen.mainloop()