неділю, 21 березня 2021 р.

Урок 3. Используем Greenfoot Java конструкции

Движение котика

На прошлом уроке мы создали актёров нашего мира. Теперь хочется, чтоб они двигались! Начнём с котика. 

Давайте думать как творцы Greenfoot. Раз они создали актёров, они же не могли оставить их без возможности двигаться? Это было бы жестоко. Тогда давайте поищем, какие возможности есть у актёров!

Для этого кликаем левой кнопкой мыши дважды по актёру-коту и открываем код.


Надеюсь, вы знаете английский на достаточном уровне, чтоб прочитать, что там написано голубым цветом над act(). Если не всё понятно, то можно воспользоваться помощью онлайн переводчика, например, этого

Сказано там, что act(), которое переводится как "действовать", соответствует действиям, выполняющимся после нажатия на кнопку старта программы Run или Act.  


Другими словами, в каждом актёре надо находить конструкцию act(), в середине которой можно писать действия ваших актёров. Следите, чтоб вы писали на белом фоне между фигурными скобками. 

                            

То, что сейчас написано - серенькое. А еще там и на русском и на английском. Думаете, будет работать? Чтоб проверить, можете написать то же самое, что у меня и нажать кнопку Run. 

Жаль, но чуда не случилось. А всё потому что перед текстом стоит //! Это означает, что Java не видит ваш код. После 2х слешов можно писать что угодно и никто об этом не узнает ;)

Подсказка от Greenfoot

А теперь как же сделать, чтоб таки компьютер начал выполнять ваш код?

На этом белом поле поставьте курсор мышки, нажмите и удерживайте две кнопки на клавиатуре: Ctrl + Space. Контрол + Пробел вызывают подсказки всех свойств, которыми владеет Актёр! Давайте посмотрим, какие у него есть возможности?


Попробуйте предположить, что стоит за каждым словом в этом списке? Если не знаете - можно читать описание. Пока многие из них нам не нужны. Важно прочесть их чтоб понять, какие из них могут соответствовать движениями и поворотам. Эти слова-действия тут написанные, называются методами. Можно сказать, что это методы с помощью которых котик может достигнуть своей цели - мышки! Ха-ха-ха-ха :)

Методы движения

Листаем список ниже пока не осенит мысль, что я хочу использовать этот метод! Я листала-листала и нашла:


Похоже, это именно то, что нам надо! Двигаться! Но не просто двигаться, а на сколько-то шагов. А вот их количество мы и зададим целым числом int (integer) в круглых скобках после того как напишем move(_).

Обратите внимание, что после каждой строчки-действия надо ставить ;. А для того, чтоб проверить, правильно ли вы все написали, нажимайте кнопку компиляции сверху.

Вроде все хорошо. Вот теперь точно давайте нажмем кнопку Run!

Побежал!

О чудо, котик побежал! Только вот давайте опять попробуем восстановить все события нажав на кнопку Reset и Run опять. Котик двигается рывками. Все потому что я ему поставила делать за раз сразу 10 шагов! 

Задание1: Давайте попробуем поменять это число на меньше и посмотрим, будут ли движения более гладкими. 

    Поворот

Помните, как будет повернуть на английском? Turn! Точно так же, как и в прошлый раз, нажимаем Контрол + Пробел и ищем нужное действие. Только в этот раз можем написать букву t. Мы ведь знаем, что искать. 

Находим метод turn(int) и его применяем. int - цело число, количество градусов, на которое надо поворачивать актёра. Я напишу для начала 2, а там посмотрим, как оно заработает.

Вот, что вышло:


Запустите программу и посмотрите, нравится ли вам как бегает кот? 

Задание 2: Попробуйте вместо 2 поставить -2 и проверьте, что выйдет.

Задание 

А теперь программирование. Чередуя вызовы move(_) и turn(_) сделайте, чтоб котик пошел
- 2 шага в право,
- повернулся на 15 градусов
- прошел 10 шагов в лево
- затем, поворот на 45 градусов
- и еще несколько шагов.

Где котик оказался? 
Сделайте, чтоб он достал мышку.

понеділок, 15 березня 2021 р.

Урок 2. Мир и актёры в Greenfoot и Java

Построим мир

На прошлом уроке заданиями было придумать, как же разложить все объекты в мире по полочкам и установить Greenfoot - программу, которая поможет нам написать игру. Теперь открываем Greenfoot и создаём проект. Назовём его KoshkiMishki 


Поздравляю, теперь у вас есть ваш маленький личный мирок. Давайте его оформим, чтоб было приятно. Для этого поставим фон в MyWorld 



Обитатели мира

В приятный мир теперь впустим главных игроков: кота и мышь. Кот у меня несколько напоминает ласку, хорька, лемура или еще какого зверька, но в любом случае, это мелкий хищник, который любит питаться мышками.

Нажав на прямоугольник с надписью Actor долго искать опцию создания нового Актёра не придётся. Actor, как и World это классы-родители в нашей иерархии. Авторы идеи уже включили некоторые возможности в эти классы, которые будут очень удобными для нас - разработчиков игры. Поэтому то, что нам удобно сделать это унаследовать все полезные умения и своим миром и героями расширить возможности стандартных примеров. 

Создадим 2 подкласса: Cat и Mouse. При создании очень важно правильно написать название класса, который создаём. Пишем с большой буквы каждое слово без пробелов, если слов несколько. Например, Cat или TomCat. Аналогично будем называть все классы. 

Соглашение называть все однотипно называется Java Code конвенцией. Это очень удобно, ведь сразу даёт возможность понять, какая сущность перед тобой: класс, метод или название переменной.  





Создав обоих действующих лиц уже не терпится добавить их в мир. Это тоже можно сделать через графический редактор. Нажав правой кнопкой на иконке персонажа, выберем опцию создания нового и поставим его на желаемое место на поле. 




Чтоб персонажи сохранились на местах, когда мы обновим экран, следует сохранить мир в текущем состоянии.


Где же код?

Классно, когда программировать легко. Настроил разные галочки, вот тебе и на, проект. Должна сказать, что есть "программирование", которое именно так и выглядит. Например, некоторые платформы для создания онлайн-страниц предлагают стандартные виды сайтов, где следует только вписать свою информацию и "Вуаля! Сайт готов."
Все же каждый из нас хочет быть особенным и чтоб его уникальность другие уважали. Поэтому создание авторских вещиц так же как и программ всегда будет популярным. 

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

        


Для описания каждого из актёров создан класс с соответствующим названием. Кроме того, создан новый экземпляр класс в методе prepare() в классе MyWorld.
В 19 строчке можно найти размер мира. 

Задание

1) Поменяйте размеры мира 800 и 600 на другие, скомпилируйте проект и проверьте, что меняется.


2) Добавьте сыр в проект и вместо того, чтоб пользоваться графическим редактором, напишите аналогичные к созданию кота и мыши 2 строки кода в классе MyWorld в методе prepare().

Как следует понимать строчку Сat tomCat = new Cat();?

Cat - это класс шаблон. Рождается новый кот (написано после =), которого назовём котом tomCat (написано перед =).

В следующей строчке добавляем нашего кота Тома в мир на позицию 300 по ширине и 300 по высоте.   

3) Проверьте, где находится точка (0, 0) разместив второй сыр на эту позицию. 


неділю, 7 березня 2021 р.

Урок 1. Java это мир вокруг нас

Давайте напишем игру вместе!

Этой статьёй начинаю мини-курс по программированию для детей на Greenfoot. Создадим игру на языке Java про охоту котика за мышкой, а мышки за сыром. Рекомендованый возраст 10,5-15 лет, но если вам меньше или больше, тоже можно пробовать.

Как появилось ООП

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

Этот язык программирования оперировал бы нашими обычными понятиями, с которыми мы сталкиваемся каждый день. Мы бы могли описать там все: кто мы такие, какова наша цель в жизни и какие у нас родственные связи, в какие магазины ходим, где скидки лучше на черную пятницу, в какой банк выгоднее вложить деньги и в каком кинотеатре премьера нового фильма будет эффектнее. 

Называется такой подход объектно-ориентированным. Весь мир состоит из объектов и отношений между ними.

Посмотрим на мир

На картинке представлены группы объектов, похожих между собой. Одной из самых важных задач ООП программиста является правильно классифицировать объекты по своей схожести. 

Посмотрите на картинку и подумайте, какие бы группы объектов вы выделили?




Правильных ответов может быть несколько. 

Напрмер, если вы описываете мир вокруг, то группы такие: здания, люди с разным способом передвижения, занятия людей, места проведения времени, и т.п...


А если вы художник, то вам интереснее, как что рисуется и вы можете поместить в один класс круглый мяч, колесо детской и инвалидной коляски, и к ним добавить голову человека, ведь на рисунке она тоже круглая!

Greenfoot

Для того, чтоб прочувствовать, как работает ООП и доставить себе удовольствие создать игру, могу предложить посмотреть на Greenfoot. Справа список объектов, которые есть на поле. Они делятся на два подразлеления: Мир и Актёры. Еще Шекспир говорил: "Весь мир игра, и люди в нем актеры". Возможно, он предвидел, как будет выглядеть Greenfoot. 

Всё, что относится к Актёрам - животные, еда и еще что угодно, что мы решим иметь на поле, например, сообщение. А Мир - это по сути и есть наше поле. В нем описывается все: создание поля, рождение объектов на нём и вызывается логика, связанная с их функционированием. 



 Задание

Для участия в курсе вам понадобится установить на компьютер программу Greenfoot и приходить каждые выходные за новой порцией статьи с инструкциями, что делать. Должна предупредить, что могу забыть выложить статью. Тогда пишите напоминалочки, и я точно выложу :)

Успехов всем, кто хочет начать программировать!











неділю, 10 січня 2021 р.

Несделанная домашка

Нужно ли домашнее задание? 

Есть несколько взглядов на то, нужно ли домашнее задание. Вот самые радикальные:

  • Дайте детям прожить их детство полноценно, и не грузите домашними заданиями!
  • Если ребенок не будет знать, что ему делать, он заинтересуется неправильными вещами. Пусть сидит и делает домашнее задание!
  • Дети все равно не будут делать домашнее задание, зачем его давать?

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


Интересное задание

Чтоб мои ученики легко осваивали материал, я стараюсь их заинтересовать примерами к теме урока, близкими именно им. Тогда они начинают принимать задачу близко к сердцу, быстро подхватывают новый материал, желая решить задачу максимально выгодно для себя. В итоге все в выигрыше. Например, если бы темой урока было умножение, то ребенку я бы предложила умножать конфеты в два раза каждый раз, когда он будет получать хорошую оценку в школе и в 3, когда делает полную уборку в квартире. Ведь о конфетах намного приятнее говорить чем о просто числах. 

Стыд

Как бы я не старалась, все равно мои ученики намного чаще не делают домашку чем делают. Причин много, они разные, и топ рейтинг выглядит примерно так:
  • сел делать домашку перед уроком и конечно что-то не вышло ведь тема урока через неделю или через каникулы уже испарилась;
  • сразу после урока пошел заниматься другими вещами, а потом забыл, что и как надо;
  • лень, есть дела поинтереснее;
  • не отношусь серьезно к курсам.

Родители детей, которые ходили ко мне на групповые курсы не раз говорили, что сидят в пятницу вечером перед субботним уроком, разбирают урок с ребенком и делают вместо него домашнее задание. Почему? Да потому что у ребенка есть стыд в случае несделанной домашки, а родители стремятся помочь детям как могут. 

Еще один метод борьбы с несделанной домашкой

Однажды на частном уроке меня умилил разговор с подростком. Тот сразу начал: не сделал домашку потому что... Я сказала, что окей, давай вспоминать и вместе у нас выйдет. В конце урока поинтересовалась: "Давать тебе домашку или нет?". Тот помолчал и сказал что ему удивительно слышать такой вопрос от учителя. Ответила, что зачем же мне давать домашку, если она все равно не будет сделанной? И тут ребенку стало стыдно. В итоге договорились на задание, которое и не сильно-то задание, а больше хобби. Назвали его "поток сознания на тему компьютерных игр". Тем не менее оно должно быть написано в формате, который учили на уроке программирования. Надеюсь, сработает.