Система координат
Поставим черепашку в центр, щелкнув по кнопке Старт:
При этом подразумевается, что система координат выглядит так:

А начальная координата черепашки — (0,0):

Передвинем черепашку в точку с координатам (100,50):
t.forward(100) t.left(90) t.forward(50)

Команды движения вперёд t.forward() и поворота влево t.left() позволяют поставить черепашку в любую точку. Однако, есть более простой способ — команда t.goto().
Команда t.goto(x,y)
Будем использовать команду t.goto(x,y) для перемещения по экрану:
- t.goto(0,0) — стать в центр
- t.goto(200,0) — перейти вправо до конца
- t.goto(0,200) — подняться вверх до предела
- t.goto(-200,-200) — передвинуться в левый нижний угол
Для x и y можно задавать любые целые значения в интервале от -200 до +200.
Передвинем черепашку в точку с координатам (100,50):
t.color('red') t.goto(100, 50)

Сделаем то же самое, но поднимем перо, t.penup(), чтобы черепашка не оставляла след. В конце перо опустим, t.pendown():
t.color('red') t.penup() t.goto(100, 50) t.pendown()

Нарисуем красную окружность максимального размера. Для этого нам придётся сначала передвинуть черепашку вправо, затем повернуть её влево:
t.color('red') t.penup() t.goto(200,0) t.left(90) t.pendown() t.circle(200, 360, 100)

Попробуйте воспроизвести эти примеры и придумать свои!
Команды перемещения Черепашки
Управлять Черепашкой можно не только указывая ей на сколько перейти вперед или назад. У нее есть команды которые могут переместить ее в указанную точку. Поле по которому передвигается Черепашка — это система координат. Таким образом указав координату мы переместим Черепашку в эту точку. Если при этом будет опущено перо, то Черепашка оставит линию. Таким образом мы сможем рисовать фигуры по координатам.
Для того, чтобы указать точку, куда надо переместить Черепашку, есть команда goto(). В качестве аргументов передаем два числа через запятую, это x и y координаты.
#Перемещаем Черепашку в координаты 100 по x и 150 по y turtle.goto(100,150)
Так же для перемещения можно использовать команды turtle.setpos() и turtle.setposition().
В случае, если необходимо переместить Черепашку по какой-либо оси, есть команды turtle.setx() и turtle.sety(). Которые перемещают в определенную точку по оси x и оси y соответственно. Другая координата при этом не меняется.
Развернуть Черепашку можно используя абсолютные величины командой turtle.setheading() или turtle.seth(). В качестве аргумента передаем угол, на который будет смотреть Черепашка. В этом случае 0 — это восток (направо), 90 — север (наверх), 180 — запад (налево) и 270 — юг (вниз).
Вернуть Черепашку в начало координат (в точку с координатами x = 0 и y = 0) можно командой turtle.home(). Команда используется без аргументов. Если начало координат не изменено, то Черепашка должна появиться в центре холста.
#Переместим Черепашку в центр экрана turtle.home()
Команда speed() задает скорость перемещения Черепашки. В скобках передается значение скорости от 0 до 10. Чем выше значение, тем быстрее Черепашка рисует фигуры. 1 — медленно, 10 — быстро. 0 означает, что выполнять команды Черепашка будет без анимации.
#Задаем скорость перемещения Черепашки turtle.speed(5)
Как нарисовать черепаху по координатам



Скачай курс
в приложении
Перейти в приложение
Открыть мобильную версию сайта
© 2013 — 2023. Stepik
Наши условия использования и конфиденциальности

Public user contributions licensed under cc-wiki license with attribution required
Как нарисовать черепаху по координатам
Библиотека turtle – это расширения языка Питон, позволяющее рисовать на экране несложные рисунки. Представьте себе, что по экрану компьютера ползает маленькая черепашка (turtle) . Вы можете управлять движением черепашки, отдавая ей различные команды вида «Проползти вперед на 10 пикселей», «Повернуть направо», «Повернуть налево». После того, как вы отдадите ей команду «Начать рисовать», черепашка будет оставлять за собой след, пока не получит команду «Кончить рисовать». Управлять черепашкой можно при помощи инструкций Питона. Вот как, например, выглядит программа, рисующая квадрат:
import turtle # Подключаем модуль turtle turtle.reset() # Очищаем экран, приводим черепашку в начальное положение turtle.pendown() # Опускаем перо перо (начало рисования) turtle.forward(50) # Проползти 50 пикселей вперед turtle.left(90) # Поворот влево на 90 градусов turtle.forward(50) # Рисуем вторую сторону квадрата turtle.left(90) turtle.forward(50) # Рисуем третью сторону квадрата turtle.left(90) turtle.forward(50) # Рисуем четвертую сторону квадрата turtle.penup() # Поднять перо (закончить рисовать) turtle.forward(100) # Отвести черепашку от рисунка в сторону turtle.mainloop() # Задержать окно на экране
Документация
Находится на странице //docs.python.org/3/library/turtle.html.
Основные команды для управления черепашкой
Ползаем
forward(distance) Проползти вперёд на distance пикселей; backward(distance) Проползти назад на distance пикселей; right(angle) Повернуться налево на angle градусов; left(angle) Повернуться направо на angle градусов; goto(x, y) Переместить черепашку в точку с координатами (x,y); setx(x) Установить x координату черепашки; sety(y) Установить y координату черепашки; setheading(to_angle) Повернуть черепашку под углом to_angle к вертикали (0 — наверх, 90 — направо); home() Вернуть черепашку домой — в точку, с координатами (0,0); circle(radius) Нарисовать окружность радиуса |r|, центр которой находится слева от черепашки, если r>0 и справа, если r
Рисуем
pendown() Начать рисовать; penup() Закончить рисовать; pensize(width) Установить диаметр пера в width; pencolor(colorstring) Установить цвет линии, которая рисует черепашка (например, ‘brown’ или ‘#32c18f’ ); fillcolor(colorstring) Установить цвет заполнения; begin_fill() Начать следить за черепашкой для заполнения области; end_fill() Заполнить цветом fillcolor область, пройденную черепашкой начиная с begin_fill() ; showturtle() Показать черепашку; hideturtle() Спрятать черепашку; write(text) Вывести текст text ;
Узнать про черепашку
position() Получить текущие координаты черепашки; towards(x, y) Получить угол между текущим направление черепашки и прямой от черепашки к точке (x,y); xcor() Получить x координату черепашки; ycor() Получить y координату черепашки; heading() Получить текущий угол к вертикали; distance(x, y) Получить расстояние до точки (x,y); isdown() Узнать, рисует ли сейчас черепашка; isvisible() Узнать, видима ли сейчас черепашка;
Интерактив
onkey(function, key) Выполнить функцию function (принимающей два аргумента, x и y — координаты черепашки) после нажатия кнопки key (например, ‘a’, ‘Up’, ‘space’); listen() Начать следить на нажатиями клавиш и кликами мыши; ontimer(function, time) Выполнить функцию function через time миллисекунд; textinput(title, prompt) Вывести окно с заголовком title и текстом prompt , вернуть введённое значение;
Ещё нетривиальные примеры
Рисуем простую фигуру
from turtle import * ANGLE = 170 SIZE = 200 pencolor('red') fillcolor('yellow') speed(10) begin_fill() while True: forward(SIZE) left(ANGLE) if abs(pos()) < 1: break end_fill() mainloop()
Знак радиоактивности
from turtle import * def square(length): for i in range(4): forward(length) left(90) def sector(radius, angle): forward(radius) left(90) circle(radius, angle) left(90) forward(radius) left(180-angle) def move(x, y): up() forward(x) left(90) forward(y) right(90) down() def radioactive(radius1, radius2, side, angle=60, outlinecol="black", fillcol="yellow"): color(outlinecol) move(-(side/2), -(side/2)) begin_fill() square(side) color(fillcol) end_fill() move((side/2), (side/2)) color(outlinecol) right(90 + angle/2) for i in range(3): begin_fill() sector(radius1,angle) left(120) color(outlinecol) end_fill() up() forward(radius2) left(90) down() color(fillcol) begin_fill() circle(radius2) color(outlinecol) end_fill() up() left(90) forward(radius2) width(1) reset() width(5) speed(1) radioactive(160, 36, 400) mainloop()
Оптическая иллюзия
from turtle import * bgcolor("gray60") pu() speed(0) ht() shape("square") shapesize(3.2, 3.5) shift = [10, 0, 10, 28, 10, 0, 10, 28, 10] tracer(False) for i in range(9): goto(-365 + shift[i], 267-66*i) color("black") for i in range(11): stamp() fd(70) if pencolor() == "white": color("black") else: color("white") mainloop()
Гравитация — комета-черепашка вокруг солнца
from turtle import * color("orange") dot(10) center = pos() color("blue") shape("turtle") speed(0) penup() goto(200, 0) pendown() G = 800 v = Vec2D(0, 1) t = 0 dt = 1 while t < 1100: goto(pos() + v * dt) setheading(towards(center)) r = distance(center) acc = (-G / r ** 3) * pos() v += acc * dt t += dt mainloop()
Управляем космическим кораблём
from turtle import * from math import sin, cos, pi FORCE_UNIT = 0.1 # Ускорение двигателя HEIGHT = 350 WIDTH = 250 def one_step(): # Одна итерация движения global speed_x, speed_y # Глобальные переменные, в которых хранится текущая скорость cur_x, cur_y = position() # Получаем текущие координат cur_x += speed_x # Двигаем "корабль" cur_y += speed_y setpos(cur_x, cur_y) if abs(cur_x) > WIDTH: # Проверяем, что не улетели слишком далеко speed_x *= -1 if abs(cur_y) > HEIGHT: speed_y *= -1 def turn_left(): # Была нажата клавиша "Налево" left(10) def turn_right(): # Была нажата клавиша "Направо" right(10) def exit(): # Была нажата клавиша Escape, завершаем работу global continue_game continue_game = False def speed_up(): # Была нажата клавиша "Вверх" global speed_x, speed_y # Глобальные переменные, в которых хранится текущая скорость alpha = heading() * pi / 180.0 # Получаем текущий угол в радианах speed_x += FORCE_UNIT * cos(alpha) # Ускоряемся speed_y += FORCE_UNIT * sin(alpha) def main(): reset() global speed_x, speed_y # Глобальные переменные, в которых хранится текущая скорость global continue_game speed_x = speed_y = 0 continue_game = True speed(0) # Перемещаться будем мгновенно pensize(2) # И рисовать за собой линию shape("turtle") # Форма курсора fillcolor("blue") # Цвет черепашки pencolor("red") # Цвет линии onkeypress(turn_left, "Left") # По нажатию кнопки "Налево" вызвать функцию turnleft() onkeypress(turn_right, "Right") # . onkeypress(speed_up, "Up") # . onkey(exit, "Escape") # По нажатию кнопки Escape завершить работу listen() # Начинаем "слушать" нажатия клавиш while continue_game: one_step() # Запускаем основной цикл bye() main()
Пример от разработчкиков turtle
from turtle import * def switchpen(): if isdown(): pu() else: pd() def demo2(): """Demo of some new features.""" speed(1) st() pensize(3) setheading(towards(0, 0)) radius = distance(0, 0)/2.0 rt(90) for _ in range(18): switchpen() circle(radius, 10) write("wait a moment. ") while undobufferentries(): undo() reset() lt(90) colormode(255) laenge = 10 pencolor("green") pensize(3) lt(180) for i in range(-2, 16): if i > 0: begin_fill() fillcolor(255-15*i, 0, 15*i) for _ in range(3): fd(laenge) lt(120) end_fill() laenge += 10 lt(15) speed((speed()+1)%12) #end_fill() lt(120) pu() fd(70) rt(30) pd() color("red","yellow") speed(0) begin_fill() for _ in range(4): circle(50, 90) rt(90) fd(30) rt(90) end_fill() lt(90) pu() fd(30) pd() shape("turtle") tri = getturtle() tri.resizemode("auto") turtle = Turtle() turtle.resizemode("auto") turtle.shape("turtle") turtle.reset() turtle.left(90) turtle.speed(0) turtle.up() turtle.goto(280, 40) turtle.lt(30) turtle.down() turtle.speed(6) turtle.color("blue","orange") turtle.pensize(2) tri.speed(6) setheading(towards(turtle)) count = 1 while tri.distance(turtle) > 4: turtle.fd(3.5) turtle.lt(0.6) tri.setheading(tri.towards(turtle)) tri.fd(4) if count % 20 == 0: turtle.stamp() tri.stamp() switchpen() count += 1 tri.write("CAUGHT! ", font=("Arial", 16, "bold"), align="right") tri.pencolor("black") tri.pencolor("red") def baba(xdummy, ydummy): clearscreen() bye() while undobufferentries(): tri.undo() turtle.undo() tri.fd(50) tri.write(" Click me!", font = ("Courier", 12, "bold") ) tri.onclick(baba, 1) demo2()
