Есть несколько способов увидеть это.Более элегантный способ - использовать измененных черепах, чтобы сделать все компоненты вашего снеговика, например, с помощью shapesize()
и встроенные формы с помощью shape()
.Затем, чтобы переместить снеговика, вам нужно всего лишь попросить всех черепах, из которых он состоит, двигаться.Это позволило бы расширить спектр трюков.(Например, перевернуть вверх ногами!)
Более грубый метод заключается в том, чтобы заключить все команды, которые создают снеговика, в функцию, которая принимает аргументы X & Y, которые вы добавляете ко всем аргументам X & Y командты звонишь.Затем мы отключили бы видимые обновления экрана, clear()
и полностью перерисовали снеговика в новом месте.
Более грубый метод требует меньше изменений в вашем коде, и это следует ниже, реализуя только влево и вправодвижение стрелы вашего снеговика:
from turtle import Screen, Turtle
def create_oval(color, radius, x, y):
turtle.penup()
turtle.goto(x, y)
turtle.pendown()
turtle.fillcolor(color)
turtle.begin_fill()
turtle.circle(radius)
turtle.end_fill()
def create_line(x, y, length, angle):
turtle.penup()
turtle.goto(x, y)
turtle.setheading(angle)
turtle.pendown()
turtle.forward(length)
turtle.setheading(angle + 20)
turtle.forward(20)
turtle.penup()
turtle.back(20)
turtle.pendown()
turtle.setheading(angle - 20)
turtle.forward(20)
turtle.penup()
def create_rectangle(x, y, width, height): # drawing hat for snowman
turtle.penup()
turtle.goto(x, y)
turtle.fillcolor("black")
turtle.pendown()
turtle.begin_fill()
turtle.forward(width)
turtle.left(90)
turtle.forward(height)
turtle.left(90)
turtle.forward(width)
turtle.left(90)
turtle.forward(height)
turtle.left(90)
turtle.end_fill()
def draw_snowman(x, y):
# drawing body for snowman
create_oval('white', 30, 0 + x, -40 + y)
create_oval('white', 40, 0 + x, -100 + y)
create_oval('white', 60, 0 + x, -200 + y)
create_oval('white', 2, -10 + x, -10 + y) # drawing left eye for snowman
create_oval('white', 2, 10 + x, -10 + y) # drawing right eye for snowman
create_oval('white', 3, 0 + x, -15 + y) # drawing nose for snowman
# drawing buttons for snowman
create_oval('white', 2, 0 + x, -40 + y) # drawing left eye for snowman
create_oval('white', 2, 0 + x, -55 + y) # drawing right eye for snowman
create_oval('white', 2, 0 + x, -65 + y)
create_line(-70 + x, -50 + y, 50, 160) # drawing left arm for snowman
create_line(70 + x, -50 + y, 50, 20) # drawing right arm for snowman
create_rectangle(-22 + x, 20 + y, 50, 70)
create_rectangle(-35 + x, 20 + y, 75, 20)
snow_x, snow_y = 0, 0
def move_left():
global snow_x
turtle.clear()
snow_x -= 10
draw_snowman(snow_x, snow_y)
def move_right():
global snow_x
turtle.clear()
snow_x += 10
draw_snowman(snow_x, snow_y)
screen = Screen()
screen.tracer(False)
turtle = Turtle(visible=False)
draw_snowman(snow_x, snow_y)
screen.onkey(move_left, "Left")
screen.onkey(move_right, "Right")
screen.listen()
screen.mainloop()