Учебник Креативное кодирование на p5.js для начинающих
Этот учебник — твой вход в мир, где код становится кистью, а экран — холстом. Ты возьмёшь библиотеку p5.js и шаг за шагом научишься рисовать формы, заливать их цветом, заставлять двигаться, отвечать на мышь и клавиши — словом, превращать строчки кода в живую картинку.
Курс собран для подростка-новичка: ты не обязан раньше писать программы. Мы начнём с самой первой точки на экране и будем добавлять по чуть-чуть — цвет, анимацию, циклы, случайность, физику и частицы. Через весь путь с тобой идёт наш талисман — цыплёнок CodeChick: сначала это пара кружков, а к финалу — целый генеративный аватар, который ты соберёшь сам.
К концу учебника ты сможешь придумывать собственные генеративные картины и анимации, делать интерактивные сцены и публиковать их, чтобы показать друзьям. Это и есть креативное кодирование — программирование как способ творить.
Курс «Креативное кодирование на p5.js» состоит из 10 разделов и 40 уроков: Знакомство с p5.js, Цвет и стиль, Движение и анимация, Интерактивность, Циклы и паттерны, Случайность и шум, Трансформации, Векторы и простая физика, Системы частиц и Проекты и публикация. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Знакомство с p5.js
- Что такое креативное кодирование и p5.js
Узнай, что такое креативное кодирование, зачем нужна библиотека p5.js и как код превращается в рисунки и анимацию на экране.
- Первый скетч: setup() и draw()
Создай свой первый скетч на p5.js: разберись, как работают функции setup() и draw() и почему одна выполняется раз, а другая повторяется.
- Холст, пиксели и система координат
Разберись, как устроен холст в p5.js: что такое пиксели, где начало координат и как задавать точки парой чисел x и y.
- Рисуем первые формы
Научись рисовать базовые формы p5.js — точку, линию, прямоугольник и круг — и собери из них первого простого цыплёнка.
- Что такое креативное кодирование и p5.js
2 Цвет и стиль
- Цвет: RGB, HSB и прозрачность
Освой цвет в p5.js: модели RGB и HSB, что значит каждый канал и как сделать фигуру полупрозрачной через alpha.
- Заливка, обводка, толщина линий
Научись управлять видом фигур в p5.js: заливка fill(), обводка stroke(), толщина линии и как отключать их через noFill и noStroke.
- Фон, наслоение и порядок отрисовки
Разберись, как фон background() и порядок отрисовки влияют на кадр в p5.js: что нарисовано позже — то поверх остального.
- Композиция: как собрать красивый кадр
Узнай основы композиции в p5.js: баланс, акцент, поля и сочетание цветов, чтобы собрать аккуратный и красивый кадр с цыплёнком.
- Цвет: RGB, HSB и прозрачность
3 Движение и анимация
- Цикл draw() и кадры в секунду
Разберись, как draw() рисует кадр за кадром и что такое частота кадров frameRate в p5.js, создающая иллюзию движения.
- Переменные состояния: двигаем объект
Научись двигать объект в p5.js через переменные состояния: храни координату между кадрами и меняй её в draw(), чтобы цыплёнок поехал.
- Отскок от краёв
Сделай так, чтобы цыплёнок отскакивал от краёв холста в p5.js: проверяй границы и разворачивай направление скорости.
- Easing и плавность
Освой easing в p5.js: двигай объект частями расстояния до цели, чтобы движение цыплёнка стало плавным и приятным глазу.
- Время вместо кадров: millis()
Узнай, почему анимацию лучше привязывать ко времени, а не к кадрам, и как использовать millis() в p5.js для стабильного движения.
- Цикл draw() и кадры в секунду
4 Интерактивность
- Мышь: mouseX и mouseY
Научись читать положение курсора в p5.js через mouseX и mouseY и заставь цыплёнка следить за мышью по холсту.
- Клики и состояния
Обрабатывай клики мыши в p5.js через mousePressed() и переключай состояния сцены, чтобы цыплёнок менялся по нажатию.
- Клавиатура: управление с клавиш
Управляй цыплёнком с клавиатуры в p5.js: читай нажатия через keyIsDown и стрелки, чтобы двигать героя по холсту.
- Тач и адаптив для телефона
Сделай скетч p5.js удобным на телефоне: обрабатывай касания через touch-события и подстраивай размер холста под экран.
- Мышь: mouseX и mouseY
5 Циклы и паттерны
- Цикл for: рисуем ряды
Освой цикл for в p5.js: повторяй рисование, чтобы одной строкой выстроить целый ряд цыплят вместо копипасты.
- Вложенные циклы: сетки
Научись использовать вложенные циклы for в p5.js, чтобы строить сетки и решётки — например, поле из множества цыплят.
- Паттерны и орнаменты
Создавай повторяющиеся паттерны и орнаменты в p5.js, чередуя цвета и формы внутри циклов для красивых узоров.
- Тригонометрия для арта: sin и cos
Разберись, как sin и cos помогают рисовать волны и круги в p5.js, без сложной математики и на понятных примерах.
- Спирали и круговые узоры
Нарисуй спирали и круговые узоры в p5.js, объединяя циклы с sin и cos и постепенно меняя радиус и угол.
- Цикл for: рисуем ряды
6 Случайность и шум
- random(): управляемый хаос
Освой функцию random() в p5.js: получай случайные числа в диапазоне и добавляй разнообразие в позиции, цвета и размеры.
- Шум Перлина: органическая случайность
Узнай про шум Перлина в p5.js: чем noise() отличается от random() и как получить плавную, природную случайность.
- Генеративные ландшафты и линии
Нарисуй генеративные холмы и волнистые линии в p5.js с помощью шума Перлина — создай мир, по которому гуляет цыплёнок.
- Сиды и воспроизводимость
Разберись, как сиды в p5.js (randomSeed и noiseSeed) делают случайность повторяемой, чтобы любимый кадр можно было получить снова.
- random(): управляемый хаос
7 Трансформации
- translate(): сдвигаем мир
Освой translate() в p5.js: вместо смены координат каждой фигуры сдвигай саму систему координат и рисуй проще.
- rotate() и scale()
Научись поворачивать и масштабировать через rotate() и scale() в p5.js и пойми, почему важна точка вокруг которой идёт поворот.
- push() и pop(): стек трансформаций
Разберись, зачем нужны push() и pop() в p5.js: сохраняй и восстанавливай трансформации, чтобы движения одной фигуры не ломали другие.
- Рекурсия: рисуем фрактальное дерево
Познакомься с рекурсией в p5.js на примере фрактального дерева: функция вызывает сама себя и рисует ветви для гнезда цыплёнка.
- translate(): сдвигаем мир
8 Векторы и простая физика
- p5.Vector: позиция и скорость
Освой p5.Vector в p5.js: храни позицию и скорость как векторы и складывай их, чтобы аккуратно двигать цыплёнка.
- Ускорение, гравитация, ветер
Добавь ускорение в p5.js: применяй гравитацию и ветер к скорости через векторы, чтобы цыплёнок падал и сносился реалистично.
- Притяжение и отталкивание
Сделай притяжение и отталкивание в p5.js: вычисляй вектор силы между объектами, чтобы цыплёнок тянулся к зерну или убегал от опасности.
- Столкновения и границы
Научись обрабатывать столкновения и границы в p5.js: проверяй расстояние и края холста, чтобы цыплёнок отскакивал и не вылетал за поле.
- p5.Vector: позиция и скорость
9 Системы частиц
- Класс Particle: ООП в p5
Познакомься с классами в p5.js: собери частицу-перо в класс Particle с полями и методами, чтобы создавать сколько угодно копий.
- Система частиц: фейерверк
Построй систему частиц в p5.js: храни множество объектов Particle в массиве и устрой фейерверк над цыплёнком.
- Эмиттеры и жизненный цикл
Добавь частицам жизнь и смерть в p5.js: дай каждой частице возраст и удаляй мёртвые из массива, чтобы эмиттер работал бесконечно.
- Флокинг: имитация стаи (boids)
Освой флокинг (boids) в p5.js: три правила — разделение, выравнивание, сплочение — превращают частицы в живую стаю цыплят.
- Класс Particle: ООП в p5
10 Проекты и публикация
- Мини-проект: генеративный аватар
Собери финальный проект курса — генеративный аватар цыплёнка на p5.js, объединив цвет, случайность, трансформации и сиды.
- Экспорт, GIF и публикация
Узнай, как сохранить работу из p5.js: экспорт картинки через saveCanvas, запись GIF и публикация скетча, чтобы поделиться с друзьями.
- Мини-проект: генеративный аватар