мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| python:week15 [26/04/2017 05:52] – ybezrukov | python:week15 [16/03/2018 11:39] (текущий) – [Сегмент] ybezrukov | ||
|---|---|---|---|
| Строка 11: | Строка 11: | ||
| <code python> | <code python> | ||
| from graphics import * | from graphics import * | ||
| + | import time | ||
| - | def gr(): # наша рисующая функция | + | |
| + | # наша рисующая функция | ||
| + | def gr(): | ||
| winWidth = 800 | winWidth = 800 | ||
| winHeight = 600 | winHeight = 600 | ||
| - | | + | # Создадим окно с заголовком " |
| - | | + | |
| - | e = Text(Point(200, | + | |
| - | | + | c = Circle(Point(50, |
| - | | + | |
| - | | + | # В координаты 50, 50 напишем текст |
| - | while (True) : # запустим цикл, который будет ждать нажатия мышью | + | |
| - | | + | "Не то, чтобы совсем не попал, но только не попал в шарик!" |
| - | | + | # нарисуем шарик в окне win |
| - | if (clickPoint.getX() < winWidth / 2): | + | |
| - | | + | |
| + | | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | clickPoint | ||
| + | |||
| + | | ||
| + | print(clickPoint) | ||
| + | |||
| + | # если лопнули шарик | ||
| + | if c.getP1().getX() < clickPoint.getX() < c.getP2().getX() and c.getP1().getY() < clickPoint.getY() < c.getP2().getY(): | ||
| + | # то удалим шарик с экрана | ||
| + | c.undraw() | ||
| + | # изменим | ||
| + | e.setText(" | ||
| + | # подождем 2 секунды | ||
| + | time.sleep(2) | ||
| + | # и прервем выполнение цикла | ||
| + | break | ||
| + | # и закроем графическое окно | ||
| + | win.close() | ||
| + | |||
| + | # запустим функцию | ||
| + | gr() | ||
| - | win.close() # и закроем графическое окно | ||
| - | | ||
| - | gr() # запустим функцию | ||
| </ | </ | ||
| Строка 46: | Строка 71: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| + | * '' | ||
| + | * '' | ||
| ====== Графические элементы ====== | ====== Графические элементы ====== | ||
| Строка 89: | Строка 115: | ||
| * '' | * '' | ||
| + | |||
| + | ===== Сегмент ===== | ||
| + | |||
| + | К сожалению, | ||
| + | |||
| + | Добавим в начало программы следующий код: | ||
| + | |||
| + | <code python> | ||
| + | class Arc(Oval): | ||
| + | | ||
| + | def __init__(self, | ||
| + | self.extent = extent | ||
| + | self.start = start | ||
| + | super().__init__(p1, | ||
| + | |||
| + | def __repr__(self): | ||
| + | return " | ||
| + | |||
| + | def clone(self): | ||
| + | other = Arc(self.p1, | ||
| + | other.config = self.config.copy() | ||
| + | return other | ||
| + | |||
| + | def _draw(self, canvas, options): | ||
| + | p1 = self.p1 | ||
| + | p2 = self.p2 | ||
| + | x1, y1 = canvas.toScreen(p1.x, | ||
| + | x2, y2 = canvas.toScreen(p2.x, | ||
| + | options[' | ||
| + | options[' | ||
| + | options[' | ||
| + | return canvas.create_arc(x1, | ||
| + | </ | ||
| + | |||
| + | Теперь в нашей программе появилась возможность рисовать сегменты окружности, | ||
| + | |||
| + | <code python> | ||
| + | arc = Arc(Point(50, | ||
| + | arc.setFill(" | ||
| + | arc.draw(win) | ||
| + | </ | ||
| + | |||
| + | * Arc(point1, point2, start_angle, | ||
| + | * getCenter() - возвращает координаты центра овала. | ||
| + | * getP1(), getP2() - возвращает соответственно, | ||
| ===== Многоугольник ===== | ===== Многоугольник ===== | ||
| * '' | * '' | ||
| Строка 102: | Строка 173: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| - | ==== Работа с цветами ==== | + | |
| + | ===== Обновление экрана ===== | ||
| + | |||
| + | По умолчанию, | ||
| + | |||
| + | Для этого: | ||
| + | 1. При инициализации графического окна нужно добавить параметр '' | ||
| + | 2. В цикле отрисовки нужно добавить явный вызов функции обновления окна, указав в качестве аргумента частоту кадров, | ||
| + | |||
| + | <code python> | ||
| + | win = GraphWin(" | ||
| + | for i in range(1000): | ||
| + | # <Все что рисуется на экране> | ||
| + | update(30) | ||
| + | </ | ||
| + | |||
| + | ===== Работа с цветами | ||
| В этой библиотеке цвет можно описать двумя способами: | В этой библиотеке цвет можно описать двумя способами: | ||
| Строка 109: | Строка 196: | ||
| Во втором случае, | Во втором случае, | ||
| + | |||
| + | |||
| + | ===== Задачи ===== | ||
| ==== Задание 18 ==== | ==== Задание 18 ==== | ||
| - | Воспроизвести на Питоне программу с вращающейся пирамидкой из прошлого семестра | + | Написать |
| + | |||
| + | https:// | ||
| + | |||
| + | ==== Задание 19 ==== | ||
| + | |||
| + | Модифицировать предыдущую | ||
| + | |||
| + | https:// | ||
| + | |||
| + | ==== Задание 20 ==== | ||
| + | |||
| + | Модифицировать прогрмму из задания 18 так, чтобы: | ||
| + | |||
| + | - Вместо точек рисовались окружности | ||
| + | - Когда рисуется следующая окружность, | ||
| + | |||
| + | https:// | ||
| + | |||
| + | ==== Задание 21 (планеты со спутниками) ==== | ||
| + | |||
| + | Добавить еще одну точку для вращения, | ||
| + | |||
| + | https:// | ||
| + | |||
| + | ==== Задание 22 ==== | ||
| + | |||
| + | Написать | ||
| + | |||
| + | https:// | ||
| + | |||
| + | ==== Задание 23 ==== | ||
| + | |||
| + | Модифицировать программу так, чтобы точки были | ||
| + | |||
| + | https:// | ||
| + | |||
| + | ==== Задание 24 ==== | ||
| + | |||
| + | Модифицировать предыдущую программу так, чтобы вышла иллюзия вращающейся пирамидки | ||
| + | |||
| + | https:// | ||