加载会引发几个问题:“是否希望能够加载现有图形以增强它?”,“在加载其他图形之前,是否要给用户保存当前图形的机会?”,“是否应在加载前清除绘图?”。以下解决方案尝试允许所有这些可能性,允许用户在另一个图形上保存、清除和/或加载一个图形,而另一个图形可以保存为更复杂的图形:from turtle import Turtle, Screen
ANGLE = 90
DISTANCE = 10
def k1():
yertle.forward(DISTANCE)
moves.append(1)
def k2():
yertle.left(ANGLE)
moves.append(2)
def k3():
yertle.right(ANGLE)
moves.append(3)
def k4():
yertle.backward(DISTANCE)
moves.append(4)
COMMANDS = {1: k1, 2: k2, 3: k3, 4: k4}
def save():
if moves and input('Would you like to save this drawing? (y/n) ').lower().startswith('y'):
name = input('What would you like to call your drawing? ')
with open(name, 'w') as my_file:
print(*moves, sep=', ', file=my_file)
print('Drawing has been saved as:', name)
def clear():
global moves
save()
if moves and input('Would you like to erase this drawing? (y/n) ').lower().startswith('y'):
moves = []
yertle.reset()
def load():
clear()
if input('Would you like to load a drawing? (y/n) ').lower().startswith('y'):
name = input('What would drawing would you like to load? ')
with open(name) as my_file:
commands = [int(digit) for digit in my_file.readline().split(',')]
for command in commands:
if command in COMMANDS:
COMMANDS[command]()
print('Drawing has been loaded from:', name)
screen = Screen()
screen.setup(500, 500)
screen.title('Turtle Art')
moves = []
yertle = Turtle('turtle')
screen.onkey(k1, 'Up') # move forwards
screen.onkey(k2, 'Left') # turn left
screen.onkey(k3, 'Right') # turn right
screen.onkey(k4, 'Down') # move backwards
screen.onkey(clear, 'c') # clear page
screen.onkey(save, 'p') # save page
screen.onkey(load, 'l') # load page
screen.listen()
screen.mainloop()