Передовица » Software » АОС » Раскрашка

Раскрашка

Скачать архив с диском. АГАТ-9.

Автор: Александров Дмитрий Анатольевич. Москва 1992 год.
ИТО НМЦ АГАТ & Школа 231.

Для детей 4-7 лет. Содержит 16 заготовок для раскрашивания.

Управление:
"f1".."f4" , "f6".."f9" - перемещение курсора, 8 напрвлений;
Стрелки - перемещение курсора, в том числе по меню цвета, 4 направления;
Ввод - залить область или выбрать цвет в меню цвета;
"f." - режим выбора цвета;
РЕД / Пробел - выход.
 

От авторов (Вадим Шахнович по совместным воспоминаниям с Дмитрием Александровым):

Идея была на поверхности. За два года до НМЦ я проводил в школе занятия на компьютерах для младших школьников (2-4 классы). Это была одновременно и экспериментальная работа (что могут совсем маленькие на компьютерах?), и помощь классным руководителям (дети были на продлёнке и большую часть времени их надо было занимать чём-то кроме выполнения домашних заданий), и возможность подзаработать для молодого учителя, отца двух собственных дошкольников (как раз вышел ряд законов, разрешавших вести хозрасчетную деятельность в школах).

Второклассники на этих занятиях, в основном, играли. Набор игр, естественно, был ограничен как их сложностью, так другими параметрами (сложность приобретения игр, этичность их сюжетов и проч.)

Поэтому в НМЦ, при формировании своего собственного пакета программ для школы, я предложил написать программу с названием "Раскрашка". Мои собственные дети как раз увлекались раскрасками в бумажном исполнении - отсюда и идея: сделать программу, которая будет интересна собственным дошколятам.

За основу взяли бумажные картинки, которые были в наборе для раскрашивания у дочки. Программа не должна была быть сложной и большой с точки зрения как программирования, так и дальнейшего использования детьми. Поэтому функционал - минимальный. Мышку для Агата к этому времени В.Луцкий уже раздобыл у производителей. Драйвер к мышке хоть и был, но Д.Александров его переделал (фактически написал заново). Интерфейс придумали самый простой: при загрузке с диска на экране сразу появляется набор карточек. Выбираешь мышкой одну - карточка открывается на весь экран. Слева - палитра цветов. Картинка - белый контур на чёрном фоне. Выбрал мышкой цвет ("макнул кисточку в краску") - и ткнул в нужное место контура - краска разлилась и закрасила замкнутую область. Потом можно сменить картинку, вернувшись на стартовый экран.

Набор действий одновременно и примитивный, доступный даже пятилеткам, и, вместе с тем, давал детям все основные навыки по простейшему управлению компьютером:
- движение курсором мыши/клавиатуры;
- нажатие кнопок;
- выбор объектов;
- управление простейшим меню.

Предполагалось также, что набор картинок будет сменным, и его можно будет по желанию расширять.

Пришлось решать несколько технических задач:
- управление с мыши и/или клавиатуры (драйвер мыши);
- подготовка набора картинок (технология их массового изготовления);
- алгоритмы быстрой заливки контуров;
- алгоритмы упаковки (сжатия) картинок

Про драйвер мыши я уже упомянул выше. Подробнее расскажет Д.Александров, либо что-то вспомнится, когда найдутся исходники.

Алгоритм заливки тоже разработал Дмитрий Анатольевич. При разработке у нас даже возникло неформальное соревнование: чей алгоритм быстрее закрашивает произвольный контур на экране? Участвовали Дима Александров, Вова Пестов, и Коля Самарцев (будущий автор МаркиС-а). Колин алгоритм закрашивал экран примерно 4 секунды. Коля очень гордился столь быстрым результатом (контур был произвольным, размером примерно с экран). Алгоритм от выбранной точки закрашивал одновременно во всех направлениях (по всем азимутам от инициирующий точки). Алгоритм Вовы красил экран полосками по горизонтали, постепенно переходя сначала к более высоким линиям на экране, а потом к более низким. В зависимости от сложности контура полоски прерывались, обходили "препятствия", но любой контур закрашивали исправно. Работало примерно в 2-3 раза быстрее Колиного варианта. Быстрее всех оказался алгоритм Димы, который красил контур со скоростью 4 экрана в секунду (у Коли - 1 экран за 4 секунды). Николай, естественно, расстроился, но Димину победу признал, в результате чего свою заливку в МаркиС-е заменил на заливку от Александрова. Так что в авторстве этого графического редактора, для корректности, должно стоять две фамилии: Н.Самарцев и Д.Александров.

Проблема оцифровки изображений и их перенос на Агат решалась совместно. С бумаги сканировали ручным сканером, подключенным к IBM PC, получали картинку в формате CUT (стандартный формат растровых рисунков для тех лет).

Чистили картинку от лишних точек средствами графического редактора на PC (на Агате ещё не было редактора, который бы нас удовлетворял по удобству и другим параметрам). Надо было получить достаточно чистую картинку с ясными, не сильно запутанными линиями контуров. Затем переносили эти рисунки на Агат (через Kermit). Эту часть работы проделал Вадим Шахнович.

Дальше надо было довольно объемные картинки запихнуть в компактный код программы. Решение придумал Д.Александров. Поскольку графический режим был выбран MGR 128x128, а картинки все были только из большого количества чёрных точек (фон) и маленького количества белых (линии контура), решение основывалось именно на этом удачном стечении обстоятельств. Если в строке экрана только одна белая точка, в самом начале, а остальные - чёрные, тогда можно это закодировать одним байтом данных, где первый (старший) бит = 1, а остальных 7 бит - как раз хватает, чтобы указать количество чёрных точек до конца строки (127 десятичное = 1111111 двоичное). Если продолжить эту идею, тогда можно не останавливаться в конце строки: следующая строка либо начнётся с белой, либо с чёрной точки. Если белая, тогда старший бит снова = 1, а следующие 7 бит = количеству чёрных точек. Если НЕ белая точка, а чёрная - тогда старший бит = 0, а следующие семь - снова количество чёрных точек. Алгоритм хорошо работал (сжимал картинки) для случая, когда было мало белых точек, выстраивавшихся в горизонтальные линии. Мы над этим отдельно поработали: и картинки выбирали соответствующие, и в уже выбранных - старались убрать лишние белые горизонтальные строки. В итоге одна картинка 128х128 точек могла сжиматься в несколько десятков раз (в зависимости от сложности набора линий). То есть, вместо 2048 байт при "матричном" кодировании всего экрана (аналог BMP), мы получали несколько десятков или сотен байт на рисунок. А рабочее поле у нас было ещё меньше - слева располагалась сама палитра.

Программа была написана довольно быстро, протестирована на собственных детях, которые сказали, что им скучно, потому что картинок мало :) То есть, была оценена на "отлично".

К программе была написана рекламная листовка (сохранилась в виде файла). Там сказано, что если картинок мало - требуйте от нас больше! И приписаны телефоны нашего НМЦ "Агат". Картинок никто больше не требовал, хотя программа была включена в наши диски и разъехалась по всей стране. Я полагаю, что у людей ещё не было "культуры требования" от производителей чего-то нового. Тем не менее, на сохранившихся у меня дисках имеется ещё несколько десятков заготовленных CUT изображений для детей. Одно из них называется PAPASMALL.CUT, и является, насколько я помню, первым (1990 г) семейным цифровым портретом автора этого текста, подготовленным для раскрашивания в разные цвета веселыми дошкольниками :)

Скриншоты-иллюстрации с оригинальных дисков - готовятся.

* * *

Использование материалов проекта agatcomp без получения предварительного письменного разрешения agatcomp запрещено.


Почта для обратной связи: mail@agatcomp.ru


Живое общение по теме Агата: Telegram группа Agatcomp.


Накопленные знания и проекты: тематический ФОРУМ.


© 2004-2024 agatcomp.su / agatcomp.ru

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *