пятница, 29 января 2016 г.

Урок 18

Продолжаем улучшать нашу игру с лабиринтом.

К концу предыдущего урока у нас выполнялись такие условия:


  1. Кот ходил по лабиринту, управляемый стрелками клавиатуры.
  2. Кот не проходил сквозь стены.
  3. При достижении выхода кот сообщал, что он победил.
Усложним немного игру:

  1. Добавим в лабиринт объекты, которые будут появляться при нажатии на зеленый флажок. Чтоб выиграть, уже недостаточно будет просто пройти лабиринт. Необходимо будет собрать все объекты.
  2. Необходимо успеть пройти игру за определенное время. Для этого введем новый объект - таймер.
Приступим!

  1. Создадим переменную "Счет":
    • Перейдем на вкладку "Переменные"
    • Нажмем "Создать переменную"
    • Назовем её Счет
    • Если вы хотите видеть счет на игровом поле - оставьте галочку рядом с переменной. Не хотите - уберите. 
  2. Настроим обновление технических переменных при запуске игры:
    • Выберем объект "Сцена
    • Перейдем на вкладку "Скрипты"
    • Соберем такую конструкцию: "Когда щелкнут по зеленому флажку" - "Поставить Счёт в 0" - "Перезапустить таймер" (команда "Перезапустить таймер" находится  в разделе "Сенсоры")



 3. Теперь давайте расставим по лабиринту то, что будет собирать кот. Мой кот будет собирать мышей. 
  • Создадим новый спрайт. Для этого вы должны нажать на кнопку, выделенную красным прямоугольником на рисунке и выбрать объект, который будет собирать кот.
  • Измените размеры спрайта так, чтоб он помещался в вашем лабиринте.
  • Поставьте спрайт в ту точку, в которой он будет располагаться в ходе игры и настройте для него такие параметры:


 Итак, что означают эти настройки?
  • Когда щелкнут по зеленому флажку и игра начнется...
  • Идти в точку ... (поставьте свои координаты. Их можно посмотреть, наведя указатель мышки на ваш установленный в лабиринте спрайт)
  • Показаться (появляется в лабиринте при начале игры)
  • У меня кот - это спрайт 1. Поэтому я устанавливаю такие условия: Если касается спрайт 1 увеличить счет на 1 и спрятаться.
  • Попробуйте эту комбинацию без модуля "Всегда". Запустите программу. Что работает неправильно? Почему?
4. Щелкните правой кнопкой мыши по созданному спрайту 3, продублируйте его еще 4 раза, расставьте по лабиринту и измените начальные координаты для каждого из спрайтов.

5. Теперь изменим условия выигрыша в игре. Во вкладке "Скрипт" нашего кота мы создавали не один надор команд, а два. Давайте изменим второй набор. Выигрыш наступает если:
  •      Собраны все мыши (счет равен 5)
  •      Кот дошел до выхода (касание спрайта 1 и спрайта 2)
  •      Кот успел собрать всех мышей и прийти к выходу до определенного времени.
По поводу третьего условия выигрыша: помните, в начале урока мы говорили о датчике "Таймер"? Так вот, он у нас перезапускается при нажатии на зеленый флажок, и начинает автоматически изменяться. В моей игре надо успеть выполнить все условия за 100 секунд. Поэтому обратите внимание на ВСЕ условия выигрыша.
Если игрок не успел выполнить задание за отведенной время - выводим сообщение о проигрыше.


Задание сегодняшнего урока выполнено. Творческих успехов!

вторник, 19 января 2016 г.

Урок 17

Всех с прошедшими праздниками!

У нас карантин, и первая учебная неделя после каникул не состоялась, но это всего лишь означает, что на окончание блока "Программирование в Skratch" у нас не 4 урока, а 3.
Так даже интереснее - у нас, как у настоящих программистов, "горят сроки". :-)

Для получения тематической оценки вам необходимо будет выполнить практическую работу, с которой мы начнем работать уже на этом уроке, и, 12 февраля, на последнем уроке темы, выполнить теоретическую контрольную работу.

Теория будет основана на практике. Поэтому к практике мы и приступим.

Глобальная задача:

Создаем игру на прохождение лабиринта.


Уровни сложности:

На оценку 4-6 баллов:
  • кот идет по лабиринту, управляется с клавиатуры, меняет костюмы.
  • НЕ ПРОХОДИТ сквозь стены,
  • когда достигает выхода, сообщает, что он выиграл.


На оценку 7-9 баллов:
  • все условия задания 4-6 баллов выполнены
  • должен собрать по дороге не менее 5 объектов, которые стоят на поле в начале игры
  • должен выйти из лабиринта за ограниченное время, в случае превышения времени или недостаточного количества собранных объектов сообщает, что проиграл


На оценку 10-12 баллов:
  • Выполнены все условия заданий выше,
  • Объекты для сбора появляются в случайных точках лабиринта,
  • В лабиринте существует еще один спрайт, который автоматически движется к коту, и, если поймает, кот отправляется на стартовую позицию.

Начнем выполнение проекта.

Для тех, кто работает он-лайн, необходимые материалы ЗДЕСЬ

  1. Установим в качестве фона изображение лабиринта (файл maze.png в папке «Задания») 
  2. Изменим размеры кота та, чтоб он мог пройти через лабиринт.
  3. На выходе установим Спрайт 2 – солнышко из файла map.jpg
Должно получиться примерно так:





4. Научим кота радоваться выходу из лабиринта. Для этого перейдем на вкладку «Скрипты» для кота (Спрайт 1) и соберем такой блок:


5. Теперь научим кота ходить по команде с клавиатуры. Будем использовать стрелки. Создаем новый скрипт, начиная с «Когда щелкнут по зеленому флажку»:


Что мы сделали в этом блоке?

  • Сообщили коту, что при запуске игры он должен появиться на старте.
  • Вспоминаем, что движение – это изменение координат. Движение вверх – изменение координаты у в сторону увеличения, движение вниз - изменение координаты у в сторону уменьшения, движение вправо – изменение координаты х в сторону увеличения, движение влево - изменение координаты х в сторону уменьшения.
  • Лабиринт черного цвета, значит, если кот коснулся стены лабиринта, он должен отступить на один шаг (а шаг у нас равен 4 единицам) в направлении, противоположном движению. Соответственно, если стрелка нажата вверх, то отступить он должен вниз.
6. Самостоятельно достройте блок движения так, чтоб кот двигался во все стороны.

7.  Проверьте работу программы. Сохраните ее.

8.Продолжение – самостоятельно по заданию или на следующем уроке.

Удачи!

пятница, 18 декабря 2015 г.

Урок 16

Желающих решать задачи в Скретч в моем 7 классе не нашлось.

Зато многие получили по несколько дипломов в "Часе кода".

Но если задан вопрос, ответ на него необходимо дать, правда?

Ниже - решения задач, предложенных на выбор в уроке 15.

Задача 1.

Небольшой спрайт в начале программы стоит в центре экрана. При нажатии на зеленый флажок задается вопрос: "Что будем рисовать?" При ответе "Круг" рисуется круг, при ответе "Треугольник" рисуется треугольник, при ответе "Квадрат" рисуется квадрат.


Задача 2.

В начале программы персонаж (можно оставить кота) спрашивает номер месяца. Месяцев у нас 12 в году, если что.
По номеру месяца вывести время года. Например, 1 - январь - зима; 5 - май - весна. Если месяц не существует - вывести сообщение об ошибке.


Неожиданно, да? Маловато будет... Дело в том, что это скрипт для кота. А вот для сцены отдельный скрипт:


Задача 3.

В начале программы создается список из 15 чисел. Два спрайта - МИН и МАКС продвигаются вдоль списка, останавливаясь в итоге у наименьшего числа (МИН) и у наибольшего числа (МАКС).

Сначала рассмотрим скрипт для сцены. Он самый большой, и, главное, именно он будет управлять процессом.


Прошу обратить внимание, что программа начинает работу с очистки старого списка и формирования нового. Список называется array - как у настоящих взрослых программистов.

Поскольку сцена выполнила практически всю работу, для МИН и МАКС остались мелочи:




Задача 4.

Запросить длины трех сторон треугольника. Проверить "Неравенство треугольника" - каждая из сторон треугольника должна быть по длине меньше, чем суммы длин двух других сторон.
Если неравенство не выполняется, сообщить, что треугольник не существует. Рассчитать периметр и площадь для существующего треугольника.


Вот и все...

Творческих успехов всем! И хороших зимних каникул!

пятница, 11 декабря 2015 г.

Урок 15

На прошлом уроке мы с вами узнали о ресурсе "Година коду", в рамках которого много игр.

Полезных. Разных.

Теперь у каждого из вас есть учетная запись, а у меня есть возможность посмотреть, кто сколько заданий в какой из игр прошел. Примерно так:


До конца семестра у нас осталось два урока.
Я предлагаю вам выбор:

1. Вы можете сдать тему, получив дипломы за различные уровни "Години коду". В том числе, проходя игры с домашнего компьютера. Расценки: 1 диплом - 3 балла (3 балла).
Первые свои дипломы вы заработали сегодня, Доска почета ждет ваших дипломов для размещения. Места хватит всем!

2. Вы можете решить в среде программирования Скретч на выбор 2 из 4 задач.

Задача 1.
Небольшой спрайт в начале программы стоит в центре экрана. При нажатии на зеленый флажок задается вопрос: "Что будем рисовать?" При ответе "Круг" рисуется круг, при ответе "Треугольник" рисуется треугольник, при ответе "Квадрат" рисуется квадрат.

Решение будет оценено так:


  • до 6 баллов - если программа умеет рисовать не все три фигуры
  • 6 - 9 баллов - если программа рисует по одной фигуре за запуск, и умеет очищать экран перед следующим рисунком.
  • 10-12 баллов - если после ответа о форме фигуры задается вопрос "Сколько раз?", и воспроизводится несколько аналогичных фигур, не накладывающихся одна на другую. Очистка экрана обязательна.
Демонстрация работы программы на 12 баллов:

Задача 2.

В начале программы персонаж (можно оставить кота) спрашивает номер месяца. Месяцев у нас 12 в году, если что.
По номеру месяца вывести время года. Например, 1 - январь - зима; 5 - май - весна. Если месяц не существует - вывести сообщение об ошибке.

Решение будет оценено так:

  • до 6 баллов - программа не попадает во времена года и рассматривает несуществующие варианты, например, 15 месяц.
  • 6-9 баллов - программа составлена нерационально, отдельно рассмотрено условие для каждого из месяцев. Но работает правильно.
  • 10-12 баллов - программа использует СПИСОК (вспоминаем грузы для машинки из уроков 12 и 13), и, конечно, работает правильно.
Демонстрация работы программы на 12 баллов:


Задача 3.

В начале программы создается список из 15 чисел. Два спрайта - МИН и МАКС продвигаются вдоль списка, останавливаясь в итоге у наименьшего числа (МИН) и у наибольшего числа (МАКС).

Решение будет оценено так:

  • до 6 баллов - список задается вручную, программа работает не стабильно, иногда давая верный, а иногда - не верный результат.
  • 6-9 баллов - список создается автоматически но программа работает не всегда правильно ИЛИ список создается вручную, но программа никогда не ошибается в расчетах.
  • 10-12 баллов - все автоматизированно и работает без сбоев. И красиво.
Демонстрация работы программы на 10-11 баллов (ну, лень мне было красивые МИН и МАКС рисовать...)



Задача 4.

Запросить длины трех сторон треугольника. Проверить "Неравенство треугольника" - каждая из сторон треугольника должна быть по длине меньше, чем суммы длин двух других сторон.
Если неравенство не выполняется, сообщить, что треугольник не существует. Рассчитать периметр и площадь для существующего треугольника.

Решение будет оценено так:

  • до 6 баллов - программа только определяет факт существования треугольника
  • 6-9 баллов - для существующего треугольника считается периметр (сумма длин всех сторон), для несуществующего выводится сообщение "Треугольник не существует"
  • 10-12 баллов - в дополнение к пункту "6-9 баллов" программа рассчитывает площадь треугольника по формуле Герона. Для вас рассчет площади в Скретче будет выглядеть так:

Демонстрация работы программы на 12 баллов:


Выбирайте, каким образом вы сдаете тему - 4 диплома или две задачи? 
Подсказки к задачам на следующем уроке!

Удачи!

Результаты "Час кода"



Вот так оно было. Всем спасибо.
‪#‎HourOfCode‬ , ‪#‎ГодинаКоду‬ 
11 декабря в Одесской специализированной школе № 117 прошел урок в рамках конкурса "Година коду". Ученики 7 классов разделились на тех, кто под руководством волонтера программы "Година коду" студента-партнёра Microsoft Алексея Манойло создавал свои первые сайты, и тех, кто боролся за дипломы мероприятия, помогая Злым птицам под руководством учителя информатики.
Победители получили браслеты от Майкрософт.
Город - Одесса;
Область - Одесская;
Школа - Одесская СШ № 117
Учитель - Клейн Елена Викторовна.


вторник, 1 декабря 2015 г.

Урок 14

Внимание! Внимание! Ответственное задание!

Мы с вами начинаем большую игру! (А заодно повторяем модули повторения и ветвления в программировании).

Сначала все будет очень просто:

1. Переходим по ссылке: http://studio.code.org/join/VGNLVU
2. Регистрируемся под своим настоящим именем и фамилией, вспоминая, какой у вас почтовый ящик и как им пользоваться.

Имя в системе - ваше имя и фамилия;
Электронная почта - ваш адрес в формате 7kl117@ukr.net
Пароль и подтверждение пароля - обязательно совпадающие наборы символов, которые вы действительно запомните.
Возраст - ваш возраст.
Пол - мальчик вы или девочка. От этого могут зависеть некоторые задания.

После заполнения нажать желтую кнопку регистрации под анкетой.

3. В открывшемся окне выберите картинку с фоткой создателя FaceBook и Сердитой птичкой.

4. Начинайте проходить задания. 

Вот, например, первое...

Вам надо взять блоки из среднего раздела, и доставить их в место сбора блоков - правее.
Потом нажать кнопку "Выполнить".

Если вы решили задачу верно - вы перейдете к следующему заданию.

А когда вы решите все 20 задачек - вы получите сертификат. Вот такой:


Сертификат вы получите на почту, поэтому важно написать СВОЙ адрес электронной почты.

ВНИМАНИЕ! Все сертификаты мы будем выставлять на Доске Почета.

Для этого вы должны:
1. Получить сертификат.
2. Перейти по ссылке Доска Почета.
3. Дважды щелкнуть ЛКМ в любом месте доски. Получится вот так:

4. Щелкнуть на плюсик в кружочке. Появится окно, в котором вы сначала нажмете на раздел, выделенный красным, а потом на ссылку, обозначенную желтым:


5. Теперь надо указать файл, в котором на вашем компьютере сохранился диплом. И тогда будет примерно так...

Места хватит всем!

А для тех, кому понравилась обязательная программа - прохождение всех 20 уровней в "Птичке" - я рекомендую получить дипломы еще в трех играх:




Интересно, кто больше всех соберет дипломов? Начали!


среда, 25 ноября 2015 г.

Урок 13

Презентация к уроку.

Видео работы программы на 10-12 баллов.




Сегодня мы продолжим решать задачку про отправку грузов. Давайте вспомним условие:


Открываем на компьютерах программы, сохраненные на прошлом уроке. Мы закончили прошлый урок тем, что научили программу запоминать значения массы каждого из 10 грузов. Подробности - в Уроке 12.

Теперь перед нами встает следующий вопрос:


 Как реализовать это при помощи среды программирования Scratch?


Все готово к началу погрузки. Давайте рассмотрим, из каких действий состоит процесс?


 Как реализовать это при помощи среды программирования Scratch?


Теперь давайте рассмотрим два важных случая: если общая загрузка машины после погрузки очередного груза стала больше 50 тонн, машину отправлять нельзя! Последний груз надо снять, и отправлять следующей машиной!


А если сумма грузов равна ровно 50, мы должны отправить машинку. не снимая последний груз. Поэтому...


Давайте остановимся на 2 последних блоках немного подробнее.


Нижний рисунок - если загрузка равна ровно 50 тонн - отличается от верхнего - если загрузка больше 50 тонн - одним элементом. Это команда "Изменить номер груза на -1". Зачем эта команда нужна?

Если у вас машина последним грузом просто наполнилась до максимума - мы отправляем эту машину, В ТОМ ЧИСЛЕ И ПОСЛЕДНИЙ ГРУЗ на ней.

А вот если при прибавлении груза мы получили перегрузку. то ПОСЛЕДНИЙ ГРУЗ НАДО СНЯТЬ, чтоб загрузить его еще раз, но уже на машину со следующим номером. Вот поэтому для перегруза и используется дополнительная команда "Изменить номер груза на -1".

Давайте пройдем по алгоритму программы в этом случае:

Допустим, у нас машина уже загружена на 40 тонн.
Следующий по счету груз равен 20. Пусть это будет груз № 7, например.
Мы грузим его в машину, и загрузка становится равна 60 тонн.
Если мы просто отправим машинку, то программа на следующую машину начнет грузить с груза № 8 - посмотрите внимательно, в каком месте алгоритма мы меняем номер груза!
Но мы ведь сняли эти 20 тонн с перегруженной машины, нам нельзя грузить груз № 8, пока мы не отправили № 7...


Внимание! На картинке выше показано только использование блока "Повторять до...", а что должно быть в этом блоке - подумайте сами. И будьте внимательны!




Удачи!