Scratch дегеніміз не?
Оценка 4.7

Scratch дегеніміз не?

Оценка 4.7
Образовательные программы
docx
информатика
10 кл
27.12.2018
Scratch дегеніміз не?
Программа — просто набор инструкций, которые сообщают компьютеру, что ему делать. Они пишутся при помощи языка программирования. Scratch — один из них, и он уникален. Большинство языков программирования имеют текстовую основу: нам приходится давать компьютеру команды, похожие на шифровки, на английском языке. Например, чтобы на экране появилась строка «Привет!», нужно написать: print ('Привет!') (на языке Python) std::cout << "Привет!" << std::endl; (на языке C++) System.out.print ("Привет!"); (на языке Java)
1 день Программа Scratch.docx
Урок 1. 1. Что такое Scratch? Программа   —   просто   набор   инструкций,   которые   сообщают компьютеру,   что   ему   делать.   Они   пишутся   при   помощи   языка программирования. Scratch  —   один   из   них,   и   он   уникален.   Большинство   языков программирования   имеют   текстовую   основу:   нам   приходится   давать компьютеру команды, похожие на шифровки, на английском языке. Например, чтобы на экране появилась строка «Привет!», нужно написать: print ('Привет!') (на языке Python) std::cout << "Привет!" << std::endl; (на языке C++) System.out.print ("Привет!"); (на языке Java) Выучить эти языки и понять их синтаксис непросто для начинающего. Scratch   же   —   визуальный   язык   программирования.   Он   был   разработан   в медиалаборатории   Массачусетского   технологического   института,   чтобы сделать   программирование   более   доступным,   а   обучение   ему   –   более занимательным. Рис. 1.1. Когда вы запускаете этот блок в Scratch, у кота в облачке появляется текст «Привет!» Кот, которого вы видите на рис. 1.1, называется  спрайтом. Спрайты понимают и выполняют наборы команд, которые вы им даете. Сиреневый блок слева говорит коту, что нужно, чтобы в облачке появился текст ≪Привет!≫. У многих программ, которые вы создадите, будет несколько спрайтов, и вы сможете   использовать   блоки,   чтобы   заставить   спрайты   двигаться, поворачиваться, говорить, играть музыку, решать задачи и т.п. В Scratch вы можете   программировать,   соединяя   разные   блоки,   промаркированные цветами,   как   если   бы   вы   собирали   что­то   из   кубиков   Lego.   Соединенные между собой блоки, или ≪стеки≫ блоков, которые вы создаете, называются скриптами. Например, на рис. 1.2 показано, как скрипт четыре раза меняет цвет спрайта. Рис. 1.2. Использование скрипта для изменения цвета спрайта Среда программирования Scratch Чтобы   запустить   Scratch,   войдите   на   сайт  http://scratch.mit.edu/  и кликните   по   ссылке   Попробуйте.   Интерфейс   редактора   проектов   Scratch показан на рис. 1.3. Рис. 1.3. Пользовательский интерфейс Scratch Вы должны видеть одно окно, состоящее как минимум из следующих трех   панелей:  Сцены  (наверху   слева),  Списка   спрайтов  (слева   внизу)   и закладки  Скрипты  (справа), которая, в свою очередь, состоит из колонки блоков и поля скриптов. Правая панель также содержит две дополнительные закладки, Костюмы и Звуки, о которых мы поговорим чуть позже. Если вы создали аккаунт и вошли под ним на сайт Scratch, вы также должны увидеть Рюкзак (внизу справа), у которого есть кнопки, позволяющие делиться вашим проектом и использовать спрайты и скрипты из уже существующих проектов. Сцена  –   место,   где   ваши   спрайты   двигаются,   рисуют   и взаимодействуют. Ширина ее 480 шагов, а высота — 360 шагов, как показано на рис. 1.4. Центр Сцены — точка отсчета осей координат x и y. Рис. 1.4. Сцена — плоскость координат с отметкой (0, 0) посередине Вы можете определить координаты любой точки на Сцене, наведя на нее курсор и посмотрев цифры в поле, отображающем положение мыши (x, y), которое   расположено   непосредственно   под   Сценой.   На   небольшой   панели управления над Сценой есть несколько пунктов. Иконка режима презентации (1) скрывает все скрипты и инструменты программирования и разворачивает поле Сцены практически на весь экран. Поле редактирования (2) показывает название текущего проекта. Зеленый флажок (3) и значок Стоп (4)  позволяют вам запустить и остановить программу. УПРАЖНЕНИЕ 1.1 Поводите   курсором   мыши   по  Сцене  и   посмотрите   на   поле, отображающее положение мыши. Что происходит, когда вы уводите курсор за пределы Сцены? А теперь перейдите в режим презентации и посмотрите, как изменится экран. Кликните по иконке слева вверху (1) или нажмите  Esc  на клавиатуре, чтобы выйти из режима презентации. Список спрайтов Список   спрайтов   показывает   имена   и   иконки   всех   спрайтов   вашего проекта. Новые проекты начинаются с белого поля Сцены и одного спрайта – кота, как показано на рис. 1.5. Рис. 1.5. Список спрайтов для нового проекта Кнопки над списком спрайтов позволяют вам добавить в ваш проект новые   спрайты   из   четырех   источников:   библиотеки   спрайтов   Scratch   (1), встроенного редактора Paint (2) (вы можете там самостоятельно нарисовать костюм), с камеры, подключенной к вашему компьютеру (3), или просто с вашего компьютера (4). УПРАЖНЕНИЕ 1.2 Добавьте   в   свой   проект   новые   спрайты,   используя   кнопки, расположенные над списком спрайтов. Поменяйте расположение спрайтов в списке, перетаскивая с места на место их иконки. Панель блоков Блоки в Scratch разделены на 10 категорий: Движение, Внешность,  Звук, Перо, Данные, События, Управление, Сенсоры, Операторы и  Другие блоки. Каждой присвоен свой цвет, чтобы вам было проще находить  родственные блоки. В Scratch более 100 блоков, но некоторые появляются  только при определенных условиях. Рис. 1.6. Панель блоков Поле скриптов Чтобы   ваш   спрайт   делал   интересные   вещи,   вам   нужно запрограммировать его, перетянув блоки из панели блоков в поле скриптов и соединив их между собой. Когда вы тащите блок по полю скриптов, белое выделение показывает вам, куда его можно прикрепить, чтобы получилась работающая связка с другим блоком (рис. 1.7). Блоки в Scratch соединяются между   собой   только   определенным   способом.   Благодаря   этому   удается избежать   опечаток,   которые   возникают,  когда   люди   используют   текстовые языки программирования. Рис. 1.7. Перетащите блоки на поле скриптов и присоедините их друг к другу, чтобы получились скрипты Вам не нужно писать скрипт до конца, чтобы запустить его: вы можете проверять его в процессе работы. Клик по любой части скрипта запускает его от   начала   до   конца.   Вы   легко   можете   отсоединить   несколько   блоков   и протестировать каждый из них отдельно. Эта функция вам очень пригодится, когда   вы   будете   разбираться   с   длинными   скриптами.   Чтобы   переместить целую группу блоков, возьмите верхний из нее. Чтобы отсоединить блок в середине стопки и все блоки под ним, выберите его и перетащите. Попробуйте это   сделать   самостоятельно.   Эта   функция   также   позволяет   работать   над проектом   поэтапно.   Вы   можете   объединять   небольшие   группы   блоков, тестировать   их,   удостоверяться,   что   они   работают   как   нужно,   а   затем объединять их в более крупные скрипты. УПРАЖНЕНИЕ 1.3 Создайте   новый   проект   Scratch   и   задайте   коту­спрайту   скрипт, показанный ниже. (Блок всегда находится в разделе Управление, а остальные блоки — в разделе Движение.) Закладка Костюмы Вы можете изменить внешний вид спрайта, сменив его костюм, который представляет собой картинку. Закладка Костюмы содержит все необходимое, чтобы вы могли организовать костюмы спрайта; это что­то вроде платяного шкафа. В нем может быть много костюмов, но в каждый конкретный момент спрайт может надеть только один. Рис. 1.8. Вы можете организовать все костюмы для спрайта в одноименной закладке Закладка Звук Спрайты   также   могут   издавать   звуки,   которые   оживляют   вашу программу: например, когда они счастливы или расстроены. Если в вашей игре   есть   спрайт,  который   выглядит   как   ракета,   вы   можете   заставить   его издавать разные звуки, когда она попадает в цель или промахивается. Кнопки в закладке Звук помогут вам организовать различные звуки, которые издают ваши спрайты. Как вы видите на рис. 1.9, Scratch также дает вам инструмент, который позволяет редактировать звуковые файлы. Рис. 1.9. Закладка Звуки позволяет организовать звуки спрайта Панель инструментов Стандартная   панель   инструментов,   где   можно   сохранить   файл, загрузить или скачать файл. Также можно расположены кнопки Дублировать, Удалить, Уменьшить, Увеличить, Турбо (для увеличения скорости блоков) (рис. 1.10) Рис. 1.10. Закладка Звуки позволяет организовать звуки спрайта Графический редактор Вы можете использовать графический редактор (рис. 1.11) для создания или редактирования костюмов и фонов (аналог Paint) Рис. 1.11. Закладка Звуки позволяет организовать звуки спрайта Урок 2 Циклы В языках программирования не обойтись без управляющих конструкций для   многократного   исполнения   шагов   алгоритма.   Такие   конструкции называют циклами, а последовательность повторяющихся шагов ­ тело цикла. В Scratch есть блоки для 4­х видов циклов: безусловный, со счетчиком, с предусловием и с постусловием. Безусловный цикл  Часто используются циклы, выход из которых не предусмотрен логикой программы.   Такие   циклы   называются   безусловными   или   бесконечными.   В Скретче   есть   специальная   конструкция   для   создания   бесконечных   циклов (Рис. 2.1). Рис. 2.1. Закладка Звуки позволяет организовать звуки спрайта Тело такого цикла выполняется до тех пор, пока активен скрипт, частью которого он является.   Остановить   бесконечный   цикл можно   только   с   помощью   кнопки   Стоп. Пример: Цикл со счетчиком Блок   (рис.   2.2)   организует   повтор   тела цикла   указанное   число   раз.   В   него   встроен счетчик,   который   при   каждом   выполнении тела   цикла   уменьшается   на   1   вплоть   до   0. Число повторов может быть задано не только константой, но и любым репортером, включая математические   операторы   (Рис.   2.3).   Это делает блок чрезвычайно гибким. Рис. 2.3. Количество повторов может быть задано репортерами Можно организовать выполнение одного цикла внутри другого. В этом случае различают внешний и внутренний циклы (Рис. 2.4). Рис. 2.4. Внешний и внутренний циклы Цикл с предусловием Как быть, если число повторений цикла неизвестно как, например, в игре   «Угадай   число»?   В   этом   случае   применяют   разновидность   цикла   с предусловием (рис.2.5) или после условием (Рис. 2.6). Рис. 2.5. Блок­схема реализации цикла с предусловием Рис. 2.6. Блок­схема реализации цикла с постусловием В этой разновидности цикла условие проверяется перед выполнением тела цикла, поэтому цикл не будет выполнен ни разу, если указанное условие не наступит. Вы не получите конфет, не выполнив домашнее задание, если такое условие поставлено взрослыми. Блок всегда если находится в состоянии ожидания и запускает тело цикла   в   тот   момент,   когда   соблюдается   указанное   условие.   Цикл   будет повторяться   до   тех   пор,   пока   проверка   условия   будет   давать   результат истина. Если условие ложно, действия внутри цикла не выполняются. ПРАКТИЧЕСКАЯ РАБОТА №1. Игра «Pong»  Шаг 1. Задача В   этом   разделе   вы   создадите   свою   компьютерную   игру,   в   которой пользователю нужно будет передвигать ракетку, чтобы не дать прыгающему мячику удариться об пол. Она основана на классической аркадной игре Pong. Пользовательский интерфейс показан на рис. 2.7. Рис. 2.7. Наша игра на экране Шаг 2. Создание проекта Как показано на рисунке, мяч начинает движение в верхней части Сцены и   перемещается   вниз   под   случайным   углом,   отскакивая   от   краев   Сцены. Игрок перемещает ракетку по горизонтали (при помощи мыши), чтобы отбить мяч   обратно   наверх.   Если   мяч   коснется   нижней   границы   Сцены,   игра окончена. Мы будем создавать игру пошагово, и первым делом нужно открыть новый проект. Выберите Файл — Новый, чтобы начать новый проект Scratch. Затем удалите спрайт­кота, кликнув по нему правой кнопкой мыши и выбрав Удалить из выпадающего меню. Шаг 3. Подготовка фона Чтобы определить, когда мяч попадает мимо ракетки, мы обозначим нижнюю границу Сцены определенным цветом и используем блок дотронуться до цвета? (из раздела Сенсоры), чтобы определять, когда мяч будет касаться этого   цвета.   Сейчас   у   нас   белый   фон,   и   мы   можем   нарисовать   у   нижней границы Сцены тонкий цветной прямоугольник, как показано на рис. 2.8. Рис. 2.8. Пошаговый процесс рисования прямоугольника внизу фона Сцены Шаг 4. Добавляем ракетку и мяч Нажмите кнопку Нарисовать новый спрайт наверху списка спрайтов, чтобы добавить в свой проект спрайт Ракетка (Paddle). Поскольку ракетка — просто узкий короткий прямоугольник, повторите шаг 3, чтобы нарисовать нужную   фигуру,   как   на   рис.   2.8.   Раскрасьте   ее   в   любой   цвет,   какой   вам нравится,   и   установите   центр   приблизительно   посередине   прямоугольника. Затем дайте спрайту имя, которое объясняло бы, что он собой представляет. А также кликните по изображению ракетки на Сцене и передвиньте его так, чтобы координата y была около –120. Теперь у нас есть ракетка, но пока не хватает мяча, который скакал бы вокруг. Нажмите Выбрать спрайт из библиотеки наверху в списке спрайтов, чтобы импортировать спрайт. В   появившемся   окне   выберите   категорию  Предметы,   затем изображение   мяча   и   добавьте   его   в   проект.   Переименуйте   спрайт   в   Мяч. Прежде чем вы начнете работать над скриптами для игры, выберите Файл — Скачать на свой компьютер, чтобы сохранить то, что вы уже сделали. В появившемся   диалоговом   окне   выберите   папку,   куда   вы   хотите   сохранить свою работу, назовите файл Pong.sb2 и нажмите Сохранить. Если вы вошли на   сайт   Scratch   под   своим   логином,   вы   можете   сохранить   свою   работу   в облаке  (на сервере Scratch). В любом случае не забывайте сохранять файлы достаточно часто. Теперь, когда у нас есть спрайты Ракетка и Мяч,  Сцена должна выглядеть приблизительно как на рис. 2.7. Следующим шагом будет добавление скриптов, необходимых, чтобы игра заработала. Шаг 5. Начать игру и заставить спрайты двигаться Любой скрипт, начинающийся с блока­триггера когда щелкнут по   , начинает работать, как только вы нажмете эту кнопку. Флажок становится ярко­зеленым и остается таким до тех пор, пока скрипт не завершит работу. Чтобы увидеть  это  в  действии, создайте  скрипт  для  спрайта  Ракетка,  как показано на рис. 2.9. Рис. 2.9. Скрипт для спрайта Ракетка После того как игрок кликает по зеленому флажку (1), блок перейти в х: у: (2) устанавливает вертикальную позицию ракетки на –120, просто на тот случай, если вы до этой мышки убрали ее оттуда. Ракетка должна парить прямо   над   розовым   прямоугольником   внизу   Сцены,   так   что   если   ваш прямоугольник   толще,   измените   координаты   ракетки   на   те,   которые   вам подходят лучше.  Затем   в   скрипте   используется   блок  всегда  (3),   чтобы   постоянно отслеживать позицию мышки. Мы будем двигать ракетку туда­сюда за счет того, что укажем в качестве ее позиции по оси x позицию мыши (4). Запустите скрипт   (кликнув   по   зеленому   флажку)   и   попробуйте   двигать   мышь горизонтально. Ракетка должна следовать за ней.  Кликните по значку Стоп рядом с зеленым флажком, чтобы остановить скрипт. Мяч должен начинать двигаться, как только мы кликаем по зеленому флажку, поэтому первым делом добавьте спрайту­мячу скрипт с рис. 2.10. Рис. 2.10. Первая часть скрипта для мяча Сначала мы перемещаем мяч наверх Сцены (1) и заставляем его лететь вниз под случайным углом, используя блок выбрать случайный угол (2) (из раздела  Операторы). Затем скрипт использует блок  всегда  (3), чтобы мяч перемещался по Сцене и отпрыгивал (4) от ее краев. Проверьте. Мяч должен передвигаться зигзагами, а ракетка — следовать за мышкой. Теперь добавляем блоки, которые заставят мяч отскакивать от ракетки. Мы можем изменить блок всегда, который только что создали, так, что мяч будет лететь вверх, отскочив от ракетки, как показано на рис. 2.11. Рис. 2.11. Добавление блока, чтобы мяч отскакивал вверх Когда мяч и ракетка соприкасаются, мы даем мячу команду повернуть в случайном направлении от –30 до 30. Когда блок  всегда  зайдет на второй круг, он начнет выполнять блок идти, который теперь будет заставлять мяч лететь вверх. Кликните снова по зеленому флажку, чтобы протестировать эту часть игры.   Когда   вы   удостоверитесь,   что   мяч   отскакивает   от   ракетки,   как   и предполагалось, нажмите Стоп.  Теперь   единственный   недостающий   фрагмент   —   код,   который останавливает   игру,   если   мяч   касается   нижней   границы   Сцены.   Добавьте спрайту­мячу скрипт, как показано на рис. 2.12, либо непосредственно перед, либо сразу после блока если (рис. 2.11). Блок касается цвета ? вы найдете в разделе Сенсоры, блок стоп — в разделе Управление. Когда вы кликнете мышью по цветному квадрату внутри блока касается цвета ?, стрелка курсора изменится на руку. Когда вы переместите курсор и кликнете по  розовому  прямоугольнику внизу  Сцены,  этот квадрат внутри блока станет такого же цвета. Блок стоп все останавливает все работающие скрипты. Рис. 2.12. Блоки для окончания игры Игра готова! Протестируйте. Урок 3 Что такое переменная? Переменная — поименованная область компьютерной памяти. Ее можно представить себе как ящик для хранения данных, числовых и текстовых, к которому при необходимости обращается программа. На рис. 3.1 показана переменная с именем сторона, чье текущее значение равно 50. Рис. 3.1. Переменную можно сравнить с ящиком, которому присвоено имя и который содержит некоторое значение Когда   вы   создаете   переменную,   ваша   программа   резервирует определенный   объем   памяти,   чтобы   сохранить   ее   значение,   и   присваивает выделенной   памяти   имя   переменной.   Создав   переменную,   вы   можете использовать ее имя в своей программе, чтобы обращаться к ее значению. Если у нас, допустим, имеется ящик (переменная) по имени сторона, который содержит   величину   50,   мы   можем   сконструировать   команду  идти   (3   х сторона) шагов. Выполняя эту команду, Scratch найдет в памяти компьютера ящик сторона, присвоит его содержимое (в данном случае 50) и использует это число вместо сторона в блоке  идти (3 х сторона)  шагов. В результате спрайт передвинется на 150 (50 умножить на 3) шагов. Обычно переменные в Scratch   используют   для   очков   игрока,   уровня   сложности   игры,   ее продолжительности. Рис. 3.2. Создание переменной Для   создания   переменных   и   списков   предназначена   оранжевая категория команд –  переменные  (1). Для создания переменной достаточно щелкнуть мышкой по кнопке: Создать переменную (2). Имена переменных и списков Имя переменной также,  как  имя спрайта, костюма  или  фона, может состоять   из   букв,   цифр,   знака   подчеркивания.  Scratch  чувствителен   к регистру: он различает большую и маленькую буквы и слова «очки» и «Очки» ­ это разные имена для разных переменных и списков. Примеры   имен:   балы,   имя   игроки,   Тур,   игрок1,   игрок2,   игрок_2. Давайте понятные имена и помните, что изменить имя переменной после ее создания  нельзя, но переменную и список можно удалить и создать снова с тем же или другим именем. Область определения переменной Локальные и глобальные: Переменные и списки могут быть двух типов ­ локальные (только для этого объекта) и глобальные (для всех объектов).  Локальные доступны только для одного объекта. По своему назначению они   являются   параметром   или   памятью   того   спрайта,   для   которого были созданы.  Глобальные ­ доступны для всех спрайтов и сцены проекта.  Имена   локальных   переменных   могут   быть   одинаковыми   у   разных спрайтов, но они не могут совпадать с именами глобальных переменных. ПРАКТИЧЕСКАЯ РАБОТА №2. Игра «Pong»  Мы уже создали игру «Pong» и в этом разделе добавим переменную в игру.   Переменная,   которая   будет   считать   количество   заработанных   очков игроком. Для этого создадим переменную «Счет» для всех спрайтов. Добавляем скрипт в спрайт мяча как на рис. 3.3. Изначально значение счета игры равна 0, при отбивании мяча ракеткой игрок зарабатывает 1 очко. Рис. 3.3. Добавление скрипта в спрайт мяча При   желании   данную   игру   можно   дальше   усложнять,   добавив переменные скорость, таймер, дополнительные объекты (рис. 3.4), которых нужно   сбить   мячом   или   же   сделать   игру   для   двух   человек,   добавив консольное управление второй ракеткой (рис. 3.5). Рис. 3.4. Скрипт для дополнительного объекта Рис. 3.5. Скрипт управления второй ракеткой Переменные клонов Каждый спрайт имеет список свойств, включая его положение х,  положение у, направление и т. д. Можно представить этот список как рюкзак,  в котором хранятся текущие величины атрибутов спрайта, как показано на  рис. 3.6. Когда вы создаете переменную, имеющую область определения  Только для этого спрайта, она добавляется в рюкзак спрайта. Когда   вы   клонируете   спрайт,   клон   наследует   копии   атрибутов родителя,   в   том   числе   переменные.   Унаследованное   свойство   вначале идентично свойству спрайта­родителя — каким оно было на момент создания клона.   Но   если   после   этого   атрибуты   и   переменные   клона   меняются,   эти перемены   не   оказывают   никакого   воздействия   на   спрайт­родителя.   А изменения спрайта­родителя никак не сказываются на свойствах клонов. Рис. 3.6. Клоны наследуют копии переменных спрайта­родителя Вы   использовать можете   это того, чтобы отличать один клон   от другого вашем свойство   для в приложении. Пример: Спрайт­родитель   в   данном   примере   (рис   3.7)   имеет   переменную   с именем  клонНомер.   Если   кликнуть   по   зеленому   флажку,   в   результате повтора   возникнет   три   клона,   при   создании   каждого   из   которых   задается разное   значение   переменной  клонНомер  (в   данном   случае   —   1,   2,   3).   У каждого клона при его появлении на свет имеется своя копия переменной клонНомер со своим уникальным значением. Теперь вы можете использовать блок  если, чтобы проверить идентификатор клона и заставить каждый клон выполнить определенные действия. Рис. 3.7. Клоны наследуют копии переменных спрайта­родителя Теперь   посмотрим,   как   клоны   взаимодействуют   с   глобальными переменными. Вспомним рис. 3.2: переменные с областью определения  Для всех спрайтов могут читаться и переписываться Сценой и всеми спрайтами, не   исключая   клонов.   Например,   программа,   изображенная   на   рис.   3.8, использует эту особенность, чтобы проверить, все ли клоны спрайта­родителя исчезли. Рис. 3.8. Использование глобальной переменной для уничтожения клонов В   данном   скрипте   спрайт­родитель   задает   величину   глобальной переменной  числоКлонов  равной пяти и создает пять клонов. Затем ждет, пока числоКлонов не станет равна нулю, и объявляет, что игра закончилась. Клоны   возникают   через   случайные   промежутки   времени   и   в   случайно выбранных   местах   на   Сцене,   говорят   «Привет!»   в   течение   двух   секунд,  а затем исчезают. Когда все пять клонов исчезли,  числоКлонов  равна нулю, основной скрипт выходит из режима ожидания и спрайт­родитель объявляет: «Игра окончена!» Отображение мониторов переменных Переменную в Scratch можно увидеть на сцене с помощью монитора переменной.   В   зависимости   от   того,   поставите   вы   или   уберете   галочку   в чекбоксе   рядом   с  именем   переменной,   вы   сможете   спрятать   или   показать монитор   на  Сцене,   как   показано   на   рис.   3.9.   Вы   также   сможете контролировать   видимость   монитора   изнутри   вашего   скрипта   с   помощью команд показать переменную и скрыть переменную. Рис. 3.9. Чтобы сделать видимым монитор переменной, поставьте галочку в чекбоксе рядом с ее именем Монитор допустимо использовать в качестве индикаторной панели или пульта   управления:   он   может   показывать   вам   содержимое   переменной,   а может   позволить   вам   его   изменить.   Дважды   кликните   по   прямоугольнику монитора   на   Сцене,   чтобы   выбрать   стандартный   вид   (по   умолчанию), увеличенный или рычажок. Если вы хотите видеть рычажок, вы можете задать его диапазон, кликнув по нему правой кнопкой мыши и установив минимум и максимум в выпадающем окне, как показано на рис. 3.10. Рис. 3.10. Установка максимального и минимального значений для монитора в режиме рычажка Использование   рычажка   позволит   менять   величину   переменной   в процессе   работы   скрипта   —   удобный   для   пользователей   способ взаимодействовать с приложением. Простой пример использования рычажка приведен на рис. 3.11. Рис. 3.11. Изменение переменной цветСцены с помощью рычажка В   данном   примере   манипулирование   рычажками   меняет   величину переменной  цветСцены,   которая   является   параметром   команды   изменить цвет эффект на. Поскольку этот скрипт принадлежит Сцене, передвижение рычажка должно приводить к изменению ее цвета. ПРАКТИЧЕСКАЯ РАБОТА №3. «Моделирование закона Ома»  Когда   электрическое   напряжение   (V)   приложено   к   резистору, обеспечивающему сопротивление (R), через резистор проходит электрический ток   (I).   Согласно   закону   Ома,   сила   тока   определяется   следующим уравнением: Силатока(I)= Напряжение(V) Сопротивление(R) Наше   приложение   позволит   пользователю   менять   величины   V   и   R   с помощью   рычажка­бегунка.   Затем   программа   рассчитает   и   отобразит величину   силы   тока,   I.   Интерфейс   пользователя   для   этого   приложения показан на рис. 3.12. Бегунок, регулирующий напряжение батарейки (V), имеет диапазон [0, 10], а бегунок резистора (R) — [1, 10]. Когда пользователь меняет V или R с помощью бегунка, приложение рассчитывает силу тока (I) в сети. Яркость лампы меняется сообразно силе тока, проходящего через нее: чем она выше, тем   ярче   горит   лампа.   Размер   букв V,  I  и  R  на   рисунке   также   меняется, отражая соотношение этих величин. Рис. 3.12. Интерфейс пользователя для приложения, показывающего, как работает закон Ома Всего   в   приложении   пять   спрайтов  —  Вольт, Ток, Сопротивление, Равно и Свет (Volt, Current, Resistance, Equal и Light) — и три переменные (V, I и R). Все прочее, что вы видите на рис. 3.12 (батарейка, провода, патрон лампы   и   т.   п.),   —   часть   фонового   изображения   Сцены.   Основной   скрипт, управляющий приложением и принадлежащий сцене, показан на рис. 3.13. Рис. 3.13. Основной скрипт приложения, показывающего работу закона Ома Скрипт запускает величины V и R и входит в бесконечный цикл. При каждом   проходе   цикла   программа   рассчитывает   I,   используя   текущие значения V и R: их устанавливает пользователь с помощью бегунков. Затем сообщение   передается   другим   спрайтам   приложения,   чтобы   они   обновили свой внешний вид по результатам перерасчета величин. Рис. 3.14 показывает реакцию спрайтов Вольт, Ток, Сопротивление и Свет (которые изображают буквы V, I и R и лампочку), когда они получают сообщение Обновить. Рис. 3.14. Срабатывание скриптов при получении сообщения Обновить Когда   получено   сообщение  Обновить,   спрайты  Вольт,   Ток   и Сопротивление  меняют   размер   (с   изначальных   100%   на   200%) соответственно   текущим   величинам   своих   переменных.   Спрайт  Свет выполняет   команду  изменить   призрак   эффект  на,   чтобы   изменить   свой уровень прозрачности пропорционально величине I. Получается реалистичный визуальный эффект, имитация настоящей лампочки. Урок 4 Операторы сравнения Вам приходится принимать решения каждый день, и большинство из них приводит к действию. Например, вы можете сказать себе: «Если этот мяч стоит меньше 2000 тенге, я ее куплю». Затем вы интересуетесь ценой мяча и решаете, будете вы ее покупать или нет. В Scratch вы тоже можете принимать решения. При помощи операторов сравнения вы сравниваете значения двух переменных или выражений, чтобы определить   разницу   между   ними.   Операторы   сравнения   также   называются реляционными   операторами,   потому   что   проверяют   соотношение   двух значений. В таблице 1 показаны три реляционных оператора, поддерживаемых Scratch. Оператор Значение Больше чем Меньше чем Равно Пример Цена больше 2000? Цена меньше 2000? Цена равна 2000? Таблица 1. Реляционные операторы в Scratch БУЛЕВЫ, ИЛИ ЛОГИЧЕСКИЕ, ВЫРАЖЕНИЯ В РЕАЛЬНОМ МИРЕ Само   слово   булевы   используется   в   память   о   Джордже   Буле   — британском математике, жившем  в XIX веке  и  разработавшем  логическую систему, основанную на двух значениях: 1 и 0 (истина и ложь). Булева алгебра стала основой современной компьютерной науки. Мы постоянно используем булевы выражения для принятия решений. Компьютеры   тоже   пользуются   ими,   чтобы   определить   ветку,   которой последует программа. Роботизированная рука может быть запрограммирована проверять   подвижные   детали   на   конвейере   и   перемещать   в   Корзину   1   те части, у которых хорошееКачество = истина, а в Корзину 2 — для которых хорошееКачество   =   ложь.   Системы   домашней   безопасности   обычно программируются   так,   чтобы   при   введении   неверного   кода   включалась сигнализация (верныйКод = ложь), а правильного — выключалась (верныйКод = истина). Удаленный сервер может предоставлять или отказывать в доступе, если   прокатать   свою   кредитную   карту   в   магазине,  в  зависимости   от   того, действует   карта   (истина)   или   нет   (ложь).   Компьютер   в   автомобиле автоматически выбросит подушки безопасности, если решит, что произошло столкновение   (столкновение   =   истина).   Мобильный   телефон   может показывать специальную иконку, когда батарея садится (батареяРазряжена = истина), и скрывать ее, когда заряд достаточный (батареяРазряжена = ложь). Это несколько примеров того, как компьютеры инициируют различные действия, проверяя результаты булевых условий. Оцениваем булевы выражения Предположим, у нас есть две переменные, x и y, далее: x = 5 и y = 10. В таблице   2   показаны   несколько   примеров   использования   блоков   отношений Scratch. Эти примеры показывают важные моменты, связанные с реляционными операторами.   Во­первых,   мы   можем   использовать   их   для   сравнения   как отдельных переменных (x, y), так и целых выражений (например, 2 × x и x + 6).   Во­вторых,   результат   сравнения   всегда   либо   верен,   либо   неверен   (это всегда булево значение). В­третьих, блок x = y не означает «Задать значение x равным y». Он спрашивает: «x равен y?» Таким образом, когда утверждение задать z значение (x = y) выполняется, значение x по­прежнему равно 5. Таблица 2. Примеры использования блоков отношений Утверждение Значение z = верно ли что (5 < 10)? z = верно ли что (5 > 10)? z = верно ли что (5 = 10)? z = верно ли что (10 > 2 × 5)? z = верно ли что (5 = 5)? z = верно ли что (10 < 5 + 6)? z (результат) z = истина z = ложь z = ложь z = ложь z = истина z = истина Объяснение Потому что 5 меньше 10 Потому что 5 не больше 10 Потому что 5 не равно 10 Потому что 10 не больше 10 Потому что 5 равно 5 Потому что 10 меньше 11 Сравниваем буквы и строки Представим   себе   игру,   в   которой   пользователь   пытается   угадать секретный код, состоящий из одной буквы от A до Я. Игра считывает вариант, предложенный   пользователем,   сравнивает   его   с   секретным   кодом   и инструктирует пользователя, как ему улучшить свой ответ на основе порядка букв в алфавите. Если секретная буква, скажем, Ё, а введен ответ Б, игра должна   сказать   что­то   вроде  ≪После   Б≫,   тем   самым   дав   понять,   что секретный код в алфавите стоит за буквой Б. Как сравнить правильную букву с ответом игрока, чтобы решить, какое сообщение нужно вывести на экран? Реляционные   операторы   в   Scratch   умеют   сравнивать   буквы.   Как показано   на   рис.   4.1,   Scratch   сравнивает   буквы   на   основании   порядка   их расположения   в   алфавите.   Поскольку   A   стоит   в   алфавите   раньше   Б, выражение  A   <   Б  верно.   Тут   важно   помнить,   что   такого   рода   сравнения нечувствительны к регистру. Заглавная A — то же самое, что и прописная a. Поэтому выражение A = a тоже верно. Зная это, вы можете проверить догадку игрока при помощи следующего набора условий: ЕСЛИ (ответ = секретный код), то сказать «Правда» ЕСЛИ (ответ > секретный код), то сказать «До <ответ>» ЕСЛИ (ответ < секретный код), то сказать «После <ответ>» Рис. 4.1. Использование реляционных операторов для сравнения букв Аналогично и со строками (рис. 4.2) Рис. 4.2. Использование реляционных операторов для сравнения строк Структуры решений Раздел  Управление  в   Scratch   содержит   два   блока,   позволяющих принимать   решения   и   управлять   действиями   в   ваших   программах:  если  и если/иначе.   Используя   эти   блоки,   вы   можете   задать   вопрос   и   совершить действие на основании ответа.  Блок если Блок  если  —   структура   принятия   решений,   которая   дает   вам возможность   обозначить,   должен   ли   какой­то   набор   команд   выполняться согласно   условиям   теста.   Структура   блока  если  и   схема   его   процессов показаны на рис. 4.3. Рис. 4.3. Структура блока если Рис. 4.4. Этот скрипт заставляет спрайт менять свой цвет, когда он движется по правой стороне Сцены Чтобы посмотреть на блок если в действии, создайте скрипт с рис. 4.4. Он запускает цикл всегда, перемещает спрайт по Сцене, меняет его цвет и заставляет его отпрыгивать, когда он касается краев Сцены. Цикл всегда содержит в вашем скрипте блок если, который проверяет положение по оси  x  после каждой команды  идти. Если позиция по  оси  х больше нуля, спрайт должен сменить цвет. Когда вы запустите этот скрипт, вы   заметите,   что   спрайт   меняет   цвет,   только   когда   движется   по   правой половине Сцены. Это связано с тем, что блок изменить цвет эффект на 25 выполняется только тогда, когда условие положение x > 0 верно. Используем переменные как флаги Представим, что вы разрабатываете игру о приключениях в космосе, где цель в том, чтобы разрушить атакующий вас флот боевых кораблей. Игрок – капитан корабля, управляет им при помощи клавиш со стрелками и стреляет ракетами   при   помощи   «пробела».   Если   в   космический   корабль   игрока определенное   количество   раз   попадает   вражеская   ракета,   корабль   теряет способность   атаковать.   С   этого   момента   нажатие   на   клавишу   «пробел» больше не должно приводить к запуску ракет, и капитану приходится принять оборонительную   стратегию,   чтобы   не   допустить   еще   большего   количества попаданий. Очевидно, что при нажатии клавиши «пробел» ваша программа должна   проверять   состояние   корабля,   чтобы   принять   решение,   может   ли игрок стрелять. Обычно проверки такого рода осуществляются при помощи флагов — переменных,   которые   вы   используете   для   выявления   того,   произошло   ли интересующее   вас   событие.   Вы   можете   взять   любые   два   значения,   чтобы описать статус события, но на практике обычно используют 0 (или ложь), чтобы показать, что событие не произошло, и 1 (или правда), чтобы показать, что оно произошло. В   вашей   космической   стрелялке   вы   можете   использовать   флаг   под названием  могуСтрелять,   чтобы   обозначить   состояние   корабля.   Тогда   1 будет означать, что корабль может стрелять ракетами, а 0 — не может. На основе этого код для обработчика события — нажатия клавиши «пробел» — может быть таким, как показано на рис. 4.5. В начале игры вы устанавливаете 1   в   качестве   значения   флага  могуСтрелять,   чтобы   показать,   что   корабль способен   стрелять.   Когда   в   корабль   попадет   определенное   количество вражеских   выстрелов,   вы   установите   флаг  могуСтрелять  на   0,   чтобы показать, что боевая система вышла из строя. С этого момента нажатие на «пробел» не будет приводить к пуску ракет. Рис. 4.5. Использование флага для выполнения условия Блок если/иначе Представьте   себе,   что   вы   создаете   игру,   которая   должна   обучать школьников младших классов основам математики. Игра предлагает задачу на сложение,   а   затем   просит   ввести   ответ.   Ученик   должен   получить   балл   за правильный ответ или потерять балл за неправильный. Вы можете выполнить эту задачу при помощи двух утверждений если: Если ответ правильный, добавить один балл на счет Если ответ неправильный, вычесть один балл со счета Вы   также   можете   упростить   эту   логику   и   сделать   код   более эффективным, скомбинировав два утверждения в одно если/иначе: Если ответ правильный, добавить один балл на счет. Иначе вычесть один балл со счета Выбранное   условие   протестировано.   Если   оно   верно,   выполняются команды из части блока  если. Если же неверно, выполняются команды из части иначе. Программа будет выполнять только одну группу команд блока. Такие   альтернативные   пути   внутри   программы   называются  ветвями. Структура блока если/иначе и соответствующая ему блок­схема показаны на рис. 4.6. Рис. 4.6. Структура блока скрипта с использованием блока если/иначе (рис.4.7) если/иначе Пример Рис. 4.7. Этот скрипт определяет, ввел ли пользователь четное число или нечетное Вложенные блоки если и если/иначе Если   вы   хотите   протестировать   более   одного   условия,   прежде   чем совершить   действие,   вы   можете   вложить   несколько   блоков  если  (или если/иначе) друг в друга, чтобы выполнить проверку. Рассмотрим скрипт на рис. 4.8, который определяет, должен ли студент получать стипендию. Чтобы получить ее, студент должен иметь: средний балл (GPA) выше 3,8 и оценку по математике выше 92%. Рис. 4.8. Вы можете вложенные блоки если/иначе, чтобы протестировать несколько условий использовать Первым делом тестируется выражение  GPA > 3.8. Если оно неверно, нам не нужно проверять другое условие: студент не соответствует критериям для получения стипендии. А вот если  GPA > 3.8  верно, нужно проверить второе   условие.   Это   делается   при   помощи   вложенного   блока  если/иначе, который проверяет условие  матБалл > 92. Если оно тоже верно, студент получает стипендию. Если нет — студент не получает стипендию и на экране появляется соответствующее сообщение. Урок 5 Логические операторы В предыдущем разделе я рассказал, как использовать вложенные блоки если  и  если/иначе,   чтобы   проверить   несколько   условий.   Но   это   можно сделать и при помощи логических операторов. Используя логические  операторы, вы можете комбинировать  два  или более   выражения   отношений,   чтобы   получить   один   результат   формата правда/ложь. Например, логическое выражение  (x > 5) и (x < 10) состоит из двух логических выражений (x > 5 и x < 10), которые соединены при помощи логического оператора И. Мы можем представить себе x > 5 и x < 10 как два компонента   оператора  И;   результат   верен,   только   когда   верны   оба компонента.   В   таблице   5.1.   приведены   три   логических   оператора, используемых в Scratch, с коротким объяснением их значения.  Таблица 5.1. Логические операторы Оператор Значение Результат верен, только если оба утверждения верны Результат верен, если одно из двух утверждений верно Результат верен, если утверждение неверно Оператор И Оператор И использует в качестве параметров два выражения. Если оба верны, И оказывается истиной, если нет – ложью. В таблице 5.2. приводятся результаты для этого оператора по всем возможным комбинациям. Таблица 5.2. Таблица истины для оператора И X истина истина ложь ложь Y истина ложь истина ложь истина ложь ложь ложь Рис. 5.1. Пример. Проверка множественных условий при помощи вложенных блоков если и оператора И Оператор ИЛИ Оператор  ИЛИ  также   использует   в   качестве   параметров   два выражения. Если одно из них верно,  ИЛИ  оказывается истиной. Оно будет ложью, если оба выражения неверны. В таблице 5.3 приводятся результаты для этого оператора по всем возможным комбинациям. Таблица 5.3. Таблица истины для оператора ИЛИ X истина истина ложь ложь Y истина ложь истина ложь истина истина истина ложь Чтобы продемонстрировать использование оператора  или, представим себе, что в некой игре пользователи при попытке выйти на следующий уровень ограничены во времени. Они также начинают игру с определенным запасом энергии,   которая   расходуется   по   мере   прохождения   уровня.   Игра заканчивается, если игрок не может выйти на следующий уровень в доступное время   или   полностью   израсходует   всю   энергию   раньше,   чем   выйдет   на следующий   уровень.   Остающееся   время   отслеживается   при   помощи переменной   а   уровень   энергии   –   переменной энергияОсталось.  времяОсталось, Рис. 5.2 показывает, как эти условия могут быть проверены при помощи вложенных блоков если/иначе (1) и оператора или (2).  Рис. 5.2. Пример. Проверяем множественные условия при помощи вложенных блоков если и оператора ИЛИ Оператор НЕ  НЕ использует   в   качестве   вводных   данных   только   одно   выражение.   Результат верен, если выражение оказывается ложью, и неверен, если оно истинно (табл. 5.4). Оператор Таблица 5.4. Таблица истины для оператора НЕ X истина ложь ложь истина Возвращаясь   к   нашей   гипотетической   игре,   представим,   что пользователь   не   может   выйти   на   следующий   уровень,   пока   его   счет   не превысит 100 очков. Это хороший момент для использования оператора  НЕ (рис. 5.3). Вы можете прочесть этот блок кода как «если счет не больше 100, выполнить команду внутри блока если». Рис. 5.3. Пример использования оператора НЕ ПРАКТИЧЕСКАЯ РАБОТА №4. «Битва в космосе»  Смысл   нашей   игры   заключается   в   том,   чтобы   уничтожать   падающие астероиды   и   избегать   огненных   шаров   (рис   5.4).   При   разработке   игры   мы используем четыре спрайта: Космический корабль, Астероид, Огненный шар, Лазер. Рис. 5.4. Интерфейс игры «Битва в космосе» Первый спрайт – космический корабль, управляется кнопками влево/ вправо и стреляет при нажатии на пробел. При столкновении с астероидом или огненным шаром меняет костюм, и игра останавливается. (рис 5.5) Рис. 5.5. Скрипт спрайта космического корабля Второй   спрайт   –   лазер,   привязан   к   космическому   кораблю.   Виден только при нажатии на клавишу пробел и летит пока у не больше 180 (рис 5.6) Рис. 5.6. Скрипт спрайта лазер Третий   спрайт   –   астероид,   падает   по   вертикали   рандомно,   при столкновении   с   лазером   добавляется   очко,   скорость   падения   астероида увеличивается (рис 5.7). Рис. 5.7. Скрипт спрайта астероид Четвертый  спрайт  – огненный   шар, падает  под  заданным   углом,  при столкновении с лазером добавляется очко, скорость падения огненного шара увеличивается (рис 5.8). Рис. 5.8. Скрипт спрайта огненный шар Оптимизация кода. Подпрограммы в Scratch Подпрограммы   очень   часто   используются   в   программировании.   По­ другому   их   называют  процедурами   или   функциями.   В   программе   есть маленькие   программки   (подпрограммы),   которые   мы   также   запускаем нажатием всего лишь одной кнопки, после чего что­то происходит. Хотя на самом   деле,   никакой   кнопки   нет.   Подпрограмма   внутри   программы запускается   оттого,   что   ее  вызывают   по   имени  (рис.   5.9).   Одинаковые отрезки   программы   вы   можете   создать   как  подпрограмму.   Благодаря подпрограммам ваш код будет выглядеть аккуратно и понятно. Рис. 5.8. Схема работы подпрограммы Рис. 5.9. Подпрограмма в Scratch Дополнительные возможности Scratch У  Scratch  есть   дополнительные   свойства   интегрировать   со сматртфонами и разными робототехническими конструкторами (Lego WeDo, PicoBoard,  Arduino), которые подключаются к компьютеру через USB порт. Для   этого   вам   необходимо   в   блоке   «Другие   блоки»   выбрать   «Добавить дополнение» (рис. 5.10). При подключении PicoBoard, появятся черные блоки. Рис. 5.10. Дополнительные подключаемые устройства Как добавить датчики смартфона в Scratch Если   у   Вас   есть   мобильное   устройство   (смартфон,   планшет)   с операционной системой Android, его датчики можно подключить к Scratch через WI­FI. Emant Pte Ltd сделал программу, после установки которой ваше мобильное   устройство   научится   передавать   в   скретч­проекты   данные акселерометра и компаса. Сегодня эти датчики имеются во всех смартфонах и планшетах. Акселерометр часто называют датчиком движения. Он следит за изменением положения телефона, его перемещениями, помогая перевернуть изображение на экране при повороте телефона. Требования: 1) мобильное устройство (смартфон, планшет) с операционной системой Android   версии   1.5   и   выше,   WI­FI,   датчики   акселерометра   и   компаса   в мобильном устройстве; 2) компьютер с установленной программой Scratch и WI­FI. Алгоритм установки и применения: 1. Один раз установить бесплатную программу Scratch Sensor с Android Market на свой смартфон (планшет). 2. Узнать сетевой адрес компьютера (IP Address) и убедиться, что этот компьютер доступен через WI­FI. 3. Запустить установленную программу Scratch Sensor на смартфоне и ввести   в   ее   окошке   IP­компьютера,   на   котором   запущен   проект   Скретч, нажать   кнопку   Connected/Disconnect   для   установления   связи   смартфона   с компьютером. Рис. 5.11. Подключение смартфона к Scratch Дополнительные ресурсы 1. До   начала   курса   программирование   в  Scratch,   ученикам рекомендуем пройти основы алгоритма и системного мышления, используя интернет­ресурс code.org. 2. После   прохождения   курса   программирования   в  Scratch,   вы можете   продолжить   изучение   программирования   через  codecombat.com. CodeCombat –  это игра, которая учит детей программировать в возрасте от 8 лет.   Подойдет   в   качестве   промежуточного   этапа   между   Scratch   и JavaScript/Python. Интересный дизайн и правильно выстроенный контент. Дети будут в восторге! Также Inventor  .  edu.   App   Inventor   –   среда   визуальной   разработки http  android­приложений,   требующая   от   пользователя   минимальных   знаний программирования. использовать  ://   ai   2.   appinventor    App  3. можете      .  mit   4. Scratch for Arduino делает программирование под Arduino более наглядным. Отличная программа для начала программирования Arduino, для того   чтобы   вы   разобрались   как   с   ним   работать.   В   S4A,   плата   Arduino представляет   собой   особый   вид   спрайта.   Спрайт   Arduino   автоматически найдет USB­порт, к которому подключена плата. Существует возможность подключения   к   нескольким   платам   одновременно,   просто   добавьте   новый спрайт Arduino.

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?

Scratch дегеніміз не?
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
27.12.2018