📖 Содержание
Часть 1: Мир программирования вокруг нас
Часть 2: Алфавит и словарь программирования
Часть 3: Строим первые программы
Часть 4: Наш удивительный мозг
Часть 5: Творческие проекты
Часть 6: Программирование в реальном мире
Глава 13 из 27
3: Строим первые программы
Глава 13: "Рисуем с помощью кода"
На следующей встрече Профессор Бит встретил Алису с загадочной улыбкой.
— Сегодня мы будем заниматься искусством, — объявил он, указывая на большой монитор в центре комнаты.
— Искусством? — удивилась Алиса. — Но разве мы не изучаем программирование?
— Программирование и искусство прекрасно совместимы, — ответил Профессор. — Сегодня мы будем рисовать с помощью кода!
Байт радостно подпрыгнул и вывел на своём экране красочный узор из геометрических фигур.
— Для создания графики с помощью кода мы будем использовать библиотеку turtle (черепашка), — объяснил Профессор. — Это простой, но очень мощный инструмент для рисования.
Он на мгновение замолчал, глядя на экран, и тихо прочитал:
В рисунке — отпечатки эволюций,
В строке — звучанье древней глубины.
Витиеватость творческих конструкций
Приносит в код дыханье новизны.
И так плетёт фракталы мирозданье,
Ведя беззвучный, вечный диалог.
Творя, пока не кончится дыханье,
Мы в вечности проводим рода ток.
Любой куплет однажды спетой песни
Спет голосами тех, кто был до нас.
Их делая полней и интересней,
Мы сохраняем их для новых рас.
— Вот об этом и пойдёт наша работа сегодня, — сказал он и набрал на клавиатуре первые строки кода:
python
import turtleСоздаём холст и кисть
холст = turtle.Screen()
холст.bgcolor("white") # Белый фонкисть = turtle.Turtle()
кисть.shape("turtle") # Форма черепашки
кисть.color("blue") # Синий цвет
кисть.pensize(2) # Толщина линии
Рисуем квадрат
for _ in range(4):
кисть.forward(100) # Двигаться вперёд на 100 шагов
кисть.right(90) # Повернуть направо на 90 градусовхолст.exitonclick() # Закрыть окно при клике мышкой
На экране появилось окно с белым фоном, на котором маленькая синяя черепашка нарисовала чёткий квадрат.
— Вау! — воскликнула Алиса. — Черепашка действительно рисует!
— Библиотека работает по принципу "черепашьей графики", — объяснил Профессор. — Ты управляешь черепашкой, которая оставляет за собой цветной след, когда двигается. Это похоже на то, как если бы ты водила карандашом по листу бумаги.
— А что означает подчёркивание в строке for _ in range(4)? — спросила Алиса.
— Очень внимательно! — кивнул Профессор. — Подчёркивание _ используется в Python, когда нам не важна переменная цикла. Мы просто хотим повторить действие ровно 4 раза, и нам не нужно знать номер текущего шага.
— Давай нарисуем что-нибудь посложнее! — предложила Алиса.
— Конечно! Как насчёт разноцветной спирали? — Профессор написал новый код:
python
import turtle
import randomхолст = turtle.Screen()
холст.bgcolor("black") # Чёрный фон
кисть = turtle.Turtle()
кисть.speed(0) # Максимальная скорость рисования
Список цветов для спирали
цвета = ["red", "orange", "yellow", "green", "blue", "purple"]Рисуем спираль
for i in range(360):
кисть.color(random.choice(цвета)) # Выбираем случайный цвет
кисть.forward(i * 0.01 + 1) # Постепенно увеличиваем шаг
кисть.right(10) # Поворачиваем на 10 градусовхолст.exitonclick()
На чёрном фоне мгновенно появилась красочная спираль, переливающаяся всеми цветами радуги.
— Это невероятно красиво! — восхитилась Алиса. — А что означает кисть.speed(0)?
— Это устанавливает максимальную скорость движения черепашки, — пояснил Профессор. — Значения могут быть от 1 (самый медленный) до 10 (быстрый). А вот значение 0 означает, что анимация рисования отключена, и черепашка рисует узоры мгновенно.
— А можно нарисовать что-то, что больше похоже на настоящий рисунок? Цветок, например? — спросила Алиса.
— Легко, — кивнул Профессор. — Смотри:
python
import turtleхолст = turtle.Screen()
холст.bgcolor("skyblue")
кисть = turtle.Turtle()
кисть.speed(0)
Рисуем стебель
кисть.color("green")
кисть.pensize(5)
кисть.penup()
кисть.goto(0, -200)
кисть.pendown()
кисть.left(90)
кисть.forward(200)Рисуем серединку цветка
кисть.color("brown")
кисть.penup()
кисть.goto(0, 0)
кисть.pendown()
кисть.begin_fill()
кисть.circle(20)
кисть.end_fill()Рисуем лепестки
кисть.color("pink")
for i in range(12):
кисть.penup()
кисть.goto(0, 0)
кисть.pendown()
кисть.setheading(i * 30) # Поворот на каждые 30 градусов # Рисуем один лепесток
кисть.begin_fill()
for j in range(60):
кисть.forward(2)
кисть.left(3)
кисть.end_fill()
Скрываем черепашку и завершаем
кисть.hideturtle()
холст.exitonclick()
На экране вырос красивый цветок с розовыми лепестками, коричневой серединкой и зелёным стеблем на фоне голубого неба.
— Это прекрасно! — воскликнула Алиса. — Но код стал гораздо сложнее.
— Да, здесь мы использовали несколько новых команд, — согласился Профессор. — Давай их разберём:
goto(x, y) перемещает черепашку в точные координаты экрана.penup() и pendown() позволяют поднимать и опускать "перо", чтобы перемещаться, не оставляя следа.beginfill() и endfill() заливают цветом область внутри нарисованного контура.setheading() поворачивает черепашку в нужную сторону (по градусам).hideturtle() прячет саму черепашку в конце работы, чтобы она не портила готовый рисунок.Логик, внимательно наблюдавшая за процессом, добавила:
— В компьютерной графике мы постоянно используем математику. Координаты, углы, расстояния — всё это строгие математические правила.
— А можно создавать анимации? — загорелись глаза у Алисы.
— Конечно! — ответил Профессор. — Давай сделаем простую анимацию восхода и заката солнца:
python
import turtle
import timeхолст = turtle.Screen()
холст.bgcolor("lightblue")
холст.setup(600, 400) # Размер окна
Создаём солнце
солнце = turtle.Turtle()
солнце.shape("circle")
солнце.color("yellow")
солнце.penup()
солнце.goto(-300, 0) # Начальная позиция слеваСоздаём землю
земля = turtle.Turtle()
земля.penup()
земля.goto(-300, -100)
земля.pendown()
земля.color("green")
земля.pensize(3)
земля.forward(600) # Рисуем линию земли
земля.hideturtle()Анимация восхода и заката по параболе
for x in range(-300, 301, 5):
y = 100 (1 - (x / 300) * 2) # Математическая формула дуги (параболы)
солнце.goto(x, y)
time.sleep(0.05) # Небольшая пауза для плавности кадровхолст.exitonclick()
На экране началась магия: жёлтое солнце плавно поднялось над зелёной линией горизонта, описало красивую дугу в небе и медленно опустилось за правый край.
— Это уже настоящий мультик! — восхитилась Алиса. — Мы использовали цикл, чтобы солнце двигалось шаг за шагом!
— Ещё одно потрясающее применение программирования в графике — это фракталы, — сказал Профессор. — Фракталы — это узоры, которые бесконечно повторяют свою форму, только в меньшем размере.
— Звучит сложно, — нахмурилась Алиса.
— На самом деле, их довольно просто создавать с помощью "рекурсивных" функций, — улыбнулся Профессор. — Это функции, которые вызывают сами себя. Смотри:
python
import turtleхолст = turtle.Screen()
холст.bgcolor("black")
кисть = turtle.Turtle()
кисть.color("green")
кисть.speed(0)
Рекурсивная функция для рисования ветки
def нарисовать_ветку(черепашка, длина, уровень):
if уровень == 0:
return черепашка.forward(длина)
черепашка.right(30)
нарисовать_ветку(черепашка, длина * 0.7, уровень - 1)
черепашка.left(60)
нарисовать_ветку(черепашка, длина * 0.7, уровень - 1)
черепашка.right(30)
черепашка.backward(длина)
Настраиваем начальную позицию
кисть.penup()
кисть.goto(0, -200)
кисть.left(90)
кисть.pendown()Рисуем фрактальное дерево
нарисовать_ветку(кисть, 100, 6)кисть.hideturtle()
холст.exitonclick()
На экране выросло изящное, детализированное неоновое дерево с множеством ветвей.

— Это удивительно! — воскликнула Алиса. — Как это работает?
— Функция нарисовать_ветку() внутри себя снова просит нарисовать ветку, только чуть короче. Так она создаёт меньшие отростки на конце каждой большой ветви, — объяснил Профессор. — Переменная уровень контролирует, сколько раз произойдёт это ветвление. Когда уровень доходит до нуля, магия останавливается, иначе дерево росло бы бесконечно!
— В природе тоже очень много фракталов, — заметила Логик. — Кроны деревьев, снежинки, листья папоротника, наши кровеносные сосуды — все они имеют фрактальную структуру.
— Компьютерная графика — это огромный и прекрасный мир, — подытожил Профессор. — От простых квадратов до сложных 3D-моделей в современных видеоиграх. И всё это создаётся с помощью кода!
— Теперь я понимаю, что программирование — это не только вычисления и обработка данных. Это ещё и творчество, — задумчиво сказала Алиса. — Это как волшебство: пишешь несколько строчек текста, и на экране расцветает рисунок!