Де ви знайомитесь з віртуальним роботом-черепашкою і керуєте ним за допомогою команд.
Де ви знайомитесь з процедурами, першим потужним способом організації програм, та параметрами процедур, способом об'єднання процедур для зменшення кількості коду.
Де ви знайомитесь з подіями (events) та хуками (процедурами, які прив'язуються на події).
Завдання
Зробити одну велику мега програму, яка буде складатись з усіх ваших маленьких програм (окрім інтерактивних). При натисненні на клавішу (abcdefghijklmnop…) черепашка очищує екран і малює фігуру з одного з завдань.
Наприклад, a –- малює квадрат, b –- малює шестикутник, c –- малює сітку, d –- малює зигзаг, і так далі.
Для цього потрібно буде, щоб кожна ваша програма стала процедурою у мега-програмі.
Завдання
В черепашці є команда turtle.write("blabla")
, яка малює текст на екрані. Але, ця команда не вміє робити поворот тексту.
Щоб зробити поворот тексту, нам потрібно свою команду super_write()
. А для цієї команди нам потрібно усі букви алфавіту.
Це завдання групове. Кожен отримує як завдання список букв, які треба зробити черепашкою, і потім все це об'єднати у одну мега-програму АЛФАВІТ.
Деталі:
height
, який відповідає за висоту букви. Буква не повинна бути більша за height
(і, бажано, не повинна бути менша). Це потрібно для того, щоб не сталось як на картинці –- одна буква більша за іншіОсь програма, яка заставляє черепашку рухатись по формулі, описаній в процедурі move()
. Параметр x
означає скільки секунд пройшло після старту програми, а отже, цей параметр з часом змінюється (постійно росте).
Як нові використано дії:
import math
–- додає різні математичні формулиimport time
–- додає різні функції та процедури для роботи з часом
time.time()
–- повертає кількість секунд, які пройшли з 1 січня 1970 року. Результат кожен раз змінюється коли ви запускаєте програму (постійно росте)time.sleep(x)
–- поставити програму на паузу на x
секунд. Це дозволяє контролювати FPS. Наприклад, time.sleep(0.01)
у вічному циклі означає, що максимальний FPS буде встановлено як 1сек / 0.01cек = 100
.a*b
–- помножити два числа і повернути результатa**b
–- піднести a
в степінь b
. Наприклад, x**2
це , (a+1)**3
це Завдання
Знайти де змінюється швидкість черепашки та збільшити швидкість у 10 разів.
Завдання
Знайти місце, де написана формулу руху черепашки і змінити її параметри так, щоб виглядало як на малюнку:
Завдання
Перевірити інші формули, подивитись як вони працюють:
turtle.goto(10*x, 100*math.sin(x))
turtle.goto(10*x, 100 / x)
turtle.goto(10*x, 100*(math.sin(x) + math.sin(2*x) + math.sin(7*x)) )
turtle.goto(-x, -x)
turtle.goto(10*x, 10*x + 5*math.sin(10*x))
turtle.goto(100*math.sin(x), 100*math.cos(x))
turtle.goto(100*math.sin(x), 100*math.cos(x)**2)
turtle.goto(math.sin(x)*(10*math.sin(x) + x**2- 50), 100*math.cos(x)-x)
turtle.goto(x*math.sin(x), x*math.cos(x))
turtle.goto((int(x) % 10)*10, 0)
Колір також можна змінювати по формулі, наприклад:
turtle.color(0, abs(math.sin(x)), abs(math.cos(7*x)))
Завдання:
Окрім руху по формулі, існує також хаотичний, випадковий рух. Для створення хаосу потрібно використати додаткові функції Пайтона:
import random
–- підключає рандом. Після того, як рандом підключено, можна запускати такі функції:
random.random()
–- випадкове число з 0 до 1, наприклад, 0.377. Може використовуватись у команді turtle.color()
random.randrange(a, b)
–- випадкове число >= a та < b. Наприклад, random.randrange(10, 15)
може бути будь-яким з 10, 11, 12, 13, 14.Щоб зробити нову черепашку, потрібно написати так:
Тепер carl
та joe
–- імена для двох черепашок. Кожну з них можна окремо рухати через, наприклад, carl.forward(100)
та joe.goto(-100, -100)
.
Завдання
Зробити багато черепашок, всі з яких рухаються по особливим правилам:
Якщо натиснути пробіл ("space"
), то всі шляхи всіх черепашок стираються і починають малюватись наново.