Я не одноразово чув від студентів ВУЗів на ІТ спеціальностях, що вони обрали цей напрямок, бо їм подобається працювати з комп’ютером. Та одної лише цікавості до обчислювальної техніки не достатньо, щоб бути програмістом. Як мінімум, необхідно мати хист та вміти писати код. А ще краще – отримувати від цього задоволення. Я ще з дитинства знав, що хочу бути програмістом. І мав можливість переконатись в цьому в школі на заняттях інформатики, коли писав свої перші програми на BASIC. Та далеко не всім так щастить, як мені. В деяких школах інформатика і досі проходить на рівні “сідайте та грайте в ігри” або “що таке електронна пошта та Word”.
Я глибоко переконаний, що первинні уявлення про програмування майбутні ІТ спеціалісти мають отримувати ще в школі. Як інакше можна зробити свідомий вибір професії та працювати за спеціальністю після завершення навчання.
Дізнавшись про заняття з програмування для дітей, я вирішив спробувати себе в ролі наставника. Раніше я не працював з дітьми, і допомагав студентам, що вже мають базові уявлення про програмування. То ж для мене це був подвійний виклик.
Ми з Ксюшею допомагали дітям 3-х, 4-х та 5-х класів познайомитись з захопливим світом програмування. Кожну суботу ми зустрічались у класі інформатики в ФІМЛІ та виконували одне завдання з програми Code Club UA. Code Club UA – це адаптація всесвітньо відомої британської програми Code Club з веселого та інтерактивного практичного знайомства дітей з програмуванням. А що може бути цікавішим, за створення власних ігор? “Ви що, звірі!?” – подумаєте ви, “Створювати ігри це дуже складно! Як ви могли до цього змусити дітей!?”. Так, створювати ірги не проста задача. Та все залежить від складності гри та інструменту, який для цього використати. Дітки створювали простенькі 2D ігри в Scratch – інструменті візуального програмування. І їм це вдавалося!
Чому ви можете навчитись разом зі Scratch
За час занять ми познайомились з більшістю структурних блоків необхідних для створення простих ігор.
Безкінечні цикли
Ми почали з використання безкінечних циклів, щоб навчити кота Фелікса рухатись за вказівником миші. В Scratch дуже просто зробити елементарну анімацію. В кожного спрайта (як от у Фелікса) може буди декілька образів. І тоді анімація – це просто послідовне перемикання образів.
Кіт Фелікс не дурний, щоб бігати за нудним вказівником. Тож ми дали йому мишу Гербера, щоб його існування набуло трохи більше сенсу. До речі, дітям дуже подобалось переробити гру, що б миша бігала за котом 😀
Цей, на перший погляд, простий приклад відкриває корисний набір можливостей Scratch:
Команди спрайтів виконуються паралельно, кожен спрайт живе своїм власним життям;
Спрайти знають де знаходяться інші спрайти та можуть бути скеровані в їх напрямку;
Scratch надає простий механізм перевірки доторкання двох спрайтів.
Глобальні змінні, умовні оператори та події
Одні з невід`ємних елементів казуальних ігор це підрахунок кількості балів та наявність таймеру. На прикладі гри “полювання на відьом” діти практикувались додавати змінні та змінювати їх значення.
Коли таймер добігає до нуля, гра має зупинитись. Для цього ми вперше використали цикл з умовою.
В Scratch кожен блок коду починається з якоїсь події. Раніше ми використовували тільки одну – початок гри. Для нарахування балів за пійманих відьом ми застосували нову подію – клік миші по спрайту.
Локальні змінні
Кожний спрайт можна розглядати як об’єкт з ООП. В нього є поведінка і стан, в якому він перебуває. До вже визначених властивостей кожного спрайту відносяться його положення на екрані, розмір та напрям руху. Та інколи нам необхідно додати власні властивості так, щоб у кожного спрайту було своє власне значення. Для цього при створенні змінної можна вказати, що вона буде локальною для цього спрайту. Таку змінну можна порівняти з приватним полем об’єкту з публічним get методом в ООП.
На заняттях ми вперше застосували локальні змінні для створення гри Fuite Machine. Кожний спрайт має власну змінну, яка відповідає за стан його обертання, було його зупинено чи ні.
Відправлення повідомлень
Інколи не достатньо просто змінювати властивості всередині спрайту. Їх треба навчити спілкуватись між собою. Зверніть увагу на гру про голодну зелену рибу. Гравець керує рибиною за допомогою миші. Коли тій на зуби потрапляє здобич, то здобич зникає, нараховуються бали, а риба пережовує спійману жертву.
Тобто в нас на конкретні умови мають відреагувати одразу два спрайти. Для того, щоб цей процес був узгоджений, використовуються повідомлення. В Scratch повідомлення не має конкретного адресата. Будь-який спрайт може слухати та реагувати на всі зареєстровані в грі повідомлення. Здобич перевіряє, чи потрапила вона на зуби рибині. Якщо так – зникає та відправляє повідомлення про те, що її впіймали (got me). Детальніше на наступному скіншоті інсрукцій.
Спрайт-риба очікує на повідомлення got me. Кожен раз, коли виникає ця подія, нараховується один бал за впійману жертву та запускається анімація клацання зубами.
Враження про перший етап занять
На жаль, не всі мали однаковий інтерес та наполегливість до створення власних ігор. Дівчата сумлінно розбирались з завданнями та старалися виконати їх в повній мірі. А от більшість хлопців після першої ж невдачі втрачали інтерес та перемикались на онлайн ігри в браузері чи на телефоні. Так, в такому віці у всіх вже є телефони з touch screen, та не всім вистачає культури їх використання.
Якщо Ксюша раніше вже працювала з дітьми, до для мене це було вперше. На 15 дітей нас двох ледь-ледь вистачало. Було досить важко встигнути всім приділити достатньо уваги. Проте, мені дуже подобалось допомагати дітям, які хотіли розібратися як виконати складну для них частину завдання.
А на останньому зайнятті нам навіть довелось зустрітись з тонкощами паралельного виконання блоків інструкцій всередині спрайтів. Ми робили гру, в якій гравець керує оленем Рудольфом, що літає по екрану та ловить подарунку, які падають з неба. Чомусь гра не завжди нараховувала бали, коли олень ловив подарунок. Причина була в тому, що блок інструкцій, який перевіряє чи олень піймав подарунок, щоб потім його прибрати з екрану, інколи спрацьовував раніше ніж той, що за тих самих умов нараховує бали. Тож коли діло доходило до нарахування балів, умова перетину спрайтів вже не виконувалась. Виправили це залишивши перевірку лише в одному місці. Тож і у Scratch є свої best practices :).
Загалом, знайомство з Scratch та робота з дітьми принесла багато позитивних емоцій та вражень. Після нового року ми плануємо продовжимо зайняття, на яких вони створюватимуть власних монстрів та складніші ігри з декількома рівнями. Веселощі тільки починаються! Долучайтеся і ви! – дітки будуть раді новим помічникам.
P.S.: Ви зацікавились, але вагаєтесь, бо раніше не мали справу зі Scratch? Нічого страшного! Я теж вперше його побачив перед заняттями – нічого складного, достатньо основ програмування та трохи часу на вивчення його можливостей.
Post A Reply