Рейтинг:  5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

Рисование мышью

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

В KTurtle можно было организовать взаимодействие программы с пользователем лишь посредством диалоговых окон. В Scratch можно использовать мышь и клавиатуру. Для наглядной иллюстрации этих возможностей импортируем из библиотеки Scratch объектDrawing pencil (рисующий карандаш) он находится в каталоге Things (Вещи). Этот объект появляется с уже готовым скриптом:



Удалите со сцены кота и добавьте рисующий карандаш. Запустите программу и выясните, что делает этот карандаш? Остановите выполнение программы.

Теперь подробно разберем скрипт карандаша. После того как программа запущена, толщина пера увеличивается до 5 точек из-за команды установить размер пера …, которая находится в группе команд, отображающихся при нажатии кнопки перо. На самом деле рисует вовсе не карандаш, а именно невидимое перо, которое мы привязываем к нашему объекту. Другими словами, можно использовать для рисования абсолютно любой объект (кота, человека, мяч и т.п.).

Далее в скрипте используется цикл всегда, следовательно, то, что находится внутри него, выполняется постоянно, пока программа работает. Всегда выполняется следующее: если левая кнопка мыши нажата, то карандаш перемещается в место, где находится ее указатель и перо опускается; если кнопка не нажата, то перо поднимается. Когда перо опущено на холсте остаются следы от его перемещения, т.е. двигая мышью, мы двигаем и карандашом и привязанном к нему пером в опущенном состоянии. В результате получается, что при выполнении программы карандаш рисует, когда кнопка мыши нажата, и не рисует, когда отжата. Рисование происходит в том месте, где находится курсор мыши.

Также добавьте скрипт для объекта Сцена, который очищает холст при запуске программы: когда щелкнут по (зеленый флаг) , очистить.

Рисование с помощью клавиатуры

Теперь составим "рисующий" скрипт самостоятельно. Для этого добавим на сцену еще один карандаш, удалим имеющуюся у него программу и назовем его pencil. Управлять им будем с помощью клавиатуры.



Такие вот скрипты позволят нам двигать карандаш по холсту с помощью стрелок на клавиатуре. Вспомните KTurtle: когда черепашка смотрела вверх, то ее направление было равно 0, когда вправо, то 90 и т.д. Здесь то же самое. Составьте скрипты и не забудьте переключиться на режим "не поворачивать" в ячейке свойств объекта, чтобы карандаш не вертелся на холсте.

Если теперь запустить программу и управлять карандашом с помощью стрелок, то мы увидим, как он перемещается по холсту. Однако следов не оставляет, т.к. перо не было опущено. Чтобы исправить этот недочет, надо добавить еще один маленький скрипт для карандаша: когда щелкнут по (зеленый флаг) , опустить перо. Попробуйте, но имейте в виду, что этот скрипт будет сейчас исправлен. Теперь карандаш должен не только двигаться, но и рисовать.

Усложним программу для карандаша, добавив еще несколько небольших сценариев:



Они очень простые и очевидные. Теперь, когда запускается программа, перо должно всегда подниматься. Оно будет опускаться при нажатии клавиши d. Имейте ввиду, что буквенные клавиши могут срабатывать лишь при включении английской раскладки клавиатуры. При нажатии клавиши u перо снова поднимется. За счет всего этого мы можем перемещать карандаш не рисуя на холсте, затем по желанию опускать перо и рисовать. Наш карандаш может рисовать случайным цветом за счет использования комбинации команд установить цвет пера … и выдать случайное число от … до …. Переключение цвета происходит при нажатии пробела. Добавьте эти скрипты вашему карандашу.

Управляемая печать

В конце давайте сделаем следующее. Добавим на сцену третий объект, например, мяч, и назовем его штамп. Пусть он оставляет копию своего изображения при нажатии клавиши p там, где находится запрограммированный нами карандаш в текущий момент. Как это сделать?
  1. Во-первых надо сначала получить текущие значения координат x и y карандаша. 
  2. Во вторых, надо переместить мяч в точку с координатами x и y. 
  3. И в третьих, надо выполнить команду печать. 

Самый сложный здесь первый пункт. Чтобы узнать значение какого-либо свойства объекта, используется команда |свойство| от |объект|, находящаяся в сенсорах. Скорее всего, она у вас выглядит так: положение x от drawing_pencil.

Итоговый скрипт будет примерно таким:



Команда установить размер … % не обязательна. Когда выполняется конструкция идти в x: положение x от pencil у: положение y от pencil, то сначала выясняются координаты карандаша, а затем они подставляются в команду идти в x: ... y: .... Запрограммируйте ваш штамп. Запустите программу и оцените ее возможности.