Аннотация: Python может работать с несколькими графическими библиотеками, обеспечивая создание сложных приложений с развитым графическим пользовательским интерфейсом. В этой части мы научимся пользоваться самыми простыми графическими возможностями Python — управлять исполнителем «черепашка» для создания графических примитивов и перемещаться на плоскости и использовать методы модуля Tkinter для задач моделирования математических функций и физических явлений.
3.1 Управление исполнителем «черепашка»
Исполнитель «черепашка» управляется командами относительных («вперёд- назад» и «направо-налево») и абсолютных («перейти в точку с координатами. «) перемещений. Исполнитель представляет собой «перо», оставляющее след на плоскости рисования. Перо можно поднять, тогда при перемещении след оставаться не будет. Кроме того, для пера можно установить толщину и цвет. Все эти функции исполнителя обеспечиваются модулем turtle («черепаха»).
Как решить задание №6(черепаха) за минуту на ЕГЭ информатика 2023. Кумир-исполнитель робот,черепашка
Приведённый ниже код создаёт графическое окно (рис. 3.1) и помещает перо («черепашку») в исходное положение.
# -*- coding: utf-8 -*-
import turtle
# Инициализация turtle.reset() # Здесь могут быть вычисления и команды рисования # turtle._root.mainloop() # для Python 2.4.x и 2.5.x # Эта команда показывает окно, пока его не закроют turtle.mainloop() # для Python 2.6.x
Как видно из этого примера, способ вызова метода mainloop() для показа графического окна зависит от версии Python. Поэтому если не работает один вариант, смело используйте другой. В остальных примерах будет использоваться вариант для Python 2.6.
Рис. 3.1. Окно рисования модуля turtle
Полученное окно имеет фиксированный размер, который зависит от версии Python, перо позиционируется в центре. Идея рисования заключается в перемещении пера («черепашки») в точки окна рисования с указанными координатами или в указанных направлениях на заданные расстояния, а также в проведении отрезков прямых, дуг и окружностей.
Текущее направление перемещение пера (соответствующее направлению «вперёд») указывается остриём стрелки изображения «черепашки».
Полный список команд управления «черепашкой» (и, соответственно, рисования), а также функций, обеспечиваемых модулем, можно получить, набрав в окне выполнения любой системы программирования на Python команду help(‘turtle’) .
Список этот довольно длинный, а среди предоставляемых функций имеются также математические, поскольку они могут быть востребованы при вычислении параметров отрезков, дуг и окружностей.
Команды, обеспечивающие рисование, приведены ниже.
turtle.color(‘blue’) turtle.color(‘#0000ff’)
turtle.circle(40) turtle.circle(-50)
turtle.circle(40,45) turtle.circle(-50,275)
turtle.fill(1) turtle.circle(-50) turtle.fill(0)
При выключенном режиме отображения указателя «черепашки» рисование происходит значительно быстрее, чем при включённом.
Исполнитель. Черепашка
Нужно заметить, что хотя углы поворота исполнителя изначально интерпретируются в градусах, при использовании тригонометрических функций модуля turtle (например, turtle.sin() ) аргументы этих функций воспринимаются как радианы.
Проделаем упражнение с целью определить систему координат окна рисования. Приведённый ниже код формирует картинку, показанную на рис. 3.2.
# -*- coding: utf-8 -*-
import turtle
# turtle.reset() turtle.tracer(0) turtle.color(‘#0000ff’) # turtle.write(‘0,0’) # turtle.up() x=-170 y=-120 coords=str(x)+»,»+str(y) turtle.goto(x, y) turtle.write(coords) # x=130 y=100 coords=str(x)+»,»+str(y) turtle.goto(x, y) turtle.write(coords) # x=0 y=-100 coords=str(x)+»,»+str(y) turtle.goto(x, y) turtle.write(coords) # turtle.down() x=0 y=100 coords=str(x)+»,»+str(y) turtle.goto(x, y) turtle.write(coords) # turtle.up() x=-150 y=0 coords=str(x)+»,»+str(y) turtle.goto(x, y) turtle.write(coords) # turtle.down() x=150 y=0 coords=str(x)+»,»+str(y) turtle.goto(x, y) turtle.write(coords) # turtle.mainloop()
Рис. 3.2. Система координат окна рисования
Здесь строка с координатами формируется «в лоб», путём конкатенации преобразованных в строки значений координат.
Картинка, показанная на рис. 3.3, сформирована нижеследующим кодом.
# -*- coding: utf-8 -*-
import turtle
# turtle.reset() turtle.tracer(0) turtle.width(2) # turtle.up() x=0 y=-100 turtle.goto(x, y) turtle.fill(1) turtle.color(‘#ffaa00’) turtle.down() turtle.circle(100) turtle.fill(0) turtle.color(‘black’) turtle.circle(100) turtle.up() # x=-45 y=50 turtle.goto(x, y) turtle.down() turtle.color(‘#0000aa’) turtle.fill(1) turtle.circle(7) turtle.up() turtle.fill(0) # x=45 y=50 turtle.goto(x, y) turtle.down() turtle.color(‘#0000aa’) turtle.fill(1) turtle.circle(7) turtle.up() turtle.fill(0) # x=-55 y=-50 turtle.goto(x, y) turtle.right(4 5) turtle.width(3) turtle.down() turtle.color(‘#aa0000’) turtle.circle(80, 90) turtle.up() # turtle.right(135) x=0 y=50 turtle.goto(x, y) turtle.width(2) turtle.color(‘black’) turtle.down() turtle.forward(100) # turtle.mainloop()
Рис. 3.3. Пример формирования изображения
Для того, чтобы изобразить улыбку, потребовалось после перемещения пера в начальную точку дуги (левую) повернуть перо на 45 градусов. Дело в том, что изначально направлением «вперёд» для пера является направление вправо (как показано на рис. 3.1). Окружности и дуги рисуются как касательные к этому «вектору», начинаясь в точке с текущими координатами пера. Поэтому для улыбки потребовалось изменить направление «вектора».
Далее, перо, первоначально сориентированное на 45 градусов вправо, после прохождения дуги в 90 градусов соответственно изменило своё направление. Поэтому для получения вертикальной линии его пришлось дополнительно повернуть.
Можно поэкспериментировать с рисованием домиков, солнышка и более сложных композиций. Однако для формирования сложных кривых (например, графиков функций) с помощью этого модуля придётся многократно выполнять команду goto(x,y) . В этом легко убедиться, попытавшись нарисовать, например, график параболы.
3.1.1 Задания и упражнения
- Как в примерах кода, формирующего изображения на рис. 3.2 и рис. 3.3, применить кортежи?
- Напишите код для создания изображения «домика» (квадрат под треугольником) без подъёма пера при условии однократного перемещения по каждой линии.
- Рассчитайте координаты и напишите код для создания изображения «солнца» (круг и расходящиеся от него отрезки) так, чтобы «лучи» начинались на расстоянии 2 точки от круга (не менее 8-ми лучей).
- Напишите код для построения графика степенной функции () с началом координат в левой нижней четверти окна рисования так, чтобы кривая проходила практически через всё окно.
Источник: intuit.ru
turtle — Черепашья графика¶
Черепашья графика — популярный способ познакомить детей с программированием. Она была частью оригинального языка программирования Logo, разработанного Уолли Фурзейгом, Сеймуром Пейпертом и Синтией Соломон в 1967 году.
Представьте себе роботизированную черепаху, стартующую из точки (0, 0) в плоскости x-y. После команды import turtle дайте ей команду turtle.forward(15) , и она перемещается (на экране!) на 15 пикселей в направлении, в котором она находится, рисуя линию по ходу движения. Дайте ему команду turtle.right(25) , и он повернется на месте на 25 градусов по часовой стрелке.
Черепаха может рисовать замысловатые фигуры, используя программы, повторяющие простые движения.
from turtle import * color(‘red’, ‘yellow’) begin_fill() while True: forward(200) left(170) if abs(pos()) 1: break end_fill() done()
Комбинируя эти и подобные команды, можно легко нарисовать замысловатые формы и рисунки.
Модуль turtle является расширенной реализацией одноименного модуля из стандартного дистрибутива Python до версии Python 2.5.
Он старается сохранить достоинства старого модуля turtle и быть (почти) на 100% совместимым с ним. Это означает, в первую очередь, дать возможность обучающемуся программисту использовать все команды, классы и методы интерактивно при использовании модуля из IDLE, запущенного с ключом -n .
Модуль turtle предоставляет графические примитивы черепахи, как в объектно-ориентированном, так и в процедурно-ориентированном виде. Поскольку он использует tkinter для базовой графики, ему необходима версия Python, установленная с поддержкой Tk.
Объектно-ориентированный интерфейс использует по сути два+два класса:
- Класс TurtleScreen определяет графические окна как игровую площадку для рисующих черепах. Его конструктор требует в качестве аргумента tkinter.Canvas или ScrolledCanvas . Его следует использовать, когда turtle используется как часть какого-либо приложения. Функция Screen() возвращает объект-синглтон подкласса TurtleScreen . Эту функцию следует использовать, когда turtle используется как отдельный инструмент для работы с графикой. Поскольку объект является синглтоном, наследование от его класса невозможно. Все методы TurtleScreen/Screen также существуют как функции, т.е. как часть процедурно-ориентированного интерфейса.
- RawTurtle (псевдоним: RawPen ) определяет объекты Turtle, которые рисуют на TurtleScreen . Его конструктор требует в качестве аргумента Canvas, ScrolledCanvas или TurtleScreen, чтобы объекты RawTurtle знали, где рисовать. Производным от RawTurtle является подкласс Turtle (псевдоним: Pen ), который опирается на «экземпляр» Screen , который автоматически создается, если еще не существует. Все методы RawTurtle/Turtle также существуют как функции, т.е. как часть процедурно-ориентированного интерфейса.
Процедурный интерфейс предоставляет функции, которые являются производными от методов классов Screen и Turtle . Они имеют те же имена, что и соответствующие методы. Объект screen автоматически создается всякий раз, когда вызывается функция, производная от метода Screen. Объект (безымянный) turtle автоматически создается при вызове любой из функций, производных от метода Turtle.
Для использования нескольких черепах на экране необходимо использовать объектно-ориентированный интерфейс.
В следующей документации приведен список аргументов для функций. Методы, конечно, имеют дополнительный первый аргумент self, который здесь опущен.
Источник: django.fun
Программа черепашка как работать
Для того чтобы поворачивать черепашку влево и вправо на некоторое число шагов, команды поворота следующие:
Направление
Полное название
Краткое название
Поворот направо на х градусов
н аправо х
Поворот на х
Результаты выполнения некоторых команд поворотов показаны в примерах:
налево 300
направо 300
направо 30
Команды управления черепашкой записываются в поле команд (см. рис.). В этом окне мигает курсор, который имеет вид вертикальной палочки. После него записываются команды. После набора команды следует нажимать клавишу Enter .
Если команда будет написана неверно, так, что черепашка не поймет, то она отвечает: «Не знаю, что такое…». Необходимо исправить ошибку и повторно выполнить команду.
Практическое задание № 1. Экспериментируем с движением черепашки
Шаг 1. Создайте новый проект (через окно приветствия или через меню Файл Новый проект. )
Шаг 2. Новый проект должен иметь достаточно большие размеры. Для того чтобы изменить размеры листа, выберите в меню Файл пункт Новый размер проекта , далее Полноэкранный 604х480 или 800х600 .
Шаг 3. Сделайте в поле команд (белая область ниже листа) .
Шаг 4. Наберите команду вперед 100 и нажмите Enter . При этом появится следующая ошибка «Для вперед требуется черепашка».
Запомните, прежде чем писать команды, необходимо создать/ указать объект, которого будем заставлять двигаться!
Шаг 5. Добавляем черепашку на лист. Это можно делать двумя способами: выберите в меню Создать пункт Черепашку или нажмите на кнопку Черепашка на верхней панели инструментов.
Шаг 6. Попробуйте еще раз проверить, как работает команда вперед 100. Что произошло? Черепашка прошла 100 шагов вперед в том направлении, куда смотрела ее голова. Шаги черепашки очень маленькие, поэтому 100 шагов – это небольшое расстояние. Команда выполняется обычно очень быстро, поэтому черепашка не плавно двигаться, а будет заметен только ее «прыжок».
Шаг 7. Напишите в поле команд – назад 100. Черепашка пройдет назад, возвратится на свое первоначальное место.
Шаг 8. С помощью поворотов сделайте так, чтобы черепашка смотрела вправо , а затем влево .
Шаг 9. Удалите все команды из поля команд (выделив и нажав на кнопку Delete ). Сотрите рисунки с рабочего поле командой – сотри графику, сокращенно – СГ (сотри графику). И верните черепашку в исходную позицию на листе – команда домой.
Шаг 10. Самостоятельно напишите краткие записи команд, заставляющие черепашку сделать 200 шагов вперед, 50 шагов назад. Затем поверните налево на 30º и пройдите 50 шагов, поворот на 150º и пройдите назад 30 шагов.
Источник: logoprogram3.blogspot.com