В этот раз работали и с детками, что в первый раз были, и с новымими участниками. Очень приятно была удивлена, что те, кто не был в первый раз уже знакомы с серьезным программированием и мы не потратили много времени на восстановление прошлых успехов.
Задача урока
Стартовая точка: поле с муравьем, который умеет двигаться по нажатию стрелочек на клавиатуре.
Надо реализовать: добавить 2 объекта: 1 вид еды (грушу) и дом муравья (травку).
Когда муравей подползает к еде, он ее берет и несет в дом, где она скрывается.
Когда муравей подползает к еде, он ее берет и несет в дом, где она скрывается.
Время урока: 1.5 часа.
Обсудить с детьми
- Вспомнить, как делать создание объекта, что такое конструктор и показать, как работает код внутри конструктора.
Реализация: в конструкторе задавать размер травки-домика. - Проговорить с детьми план захвата груши муравьем, где писать код, какому объекту он будет принадлежать.
Реализация: дети сами предложили где и что писать. Сделали, но не все сработало. Подумали о причинах, почему что-то не работает или почему работает что-то неожиданно. Обсудили, что триггер выполнения кода кроется в "цикле" нажатия на кнопки клавиатуры, поэтому ручной цикл писать не надо. - Предложить детям самим написать код, аналогичный уже созданному.
Реализация: Для захвата груши использовали метод пересечения объектов. Для того, чтоб положить грушу в дом, необходим тот же метод. Я показала код, который прячет объект, а сопутствующий код дети должны написать сами в качестве домашнего задания.
Что прошло хорошо
- Один ученик моментально взялся делать самостоятельное задание и даже предложил лучшее место его разместить, чем я предлагала.
- Отсутствующие ранее смотрели видео с первого урока, и это позволило им быстро выполнить нехватающий код.
Что было не очень хорошо
- Как всегда проблемы со связью. У одного ребенка плохо работал Zoom.
- Все же было бы лучше, если бы все, кого не было раньше, выполнили задание дома, чтоб мы не тратили лишнее время на уроке. Урок продолжался 2 часа вместо 1.5.
Код в студию:
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
public class Ant extends Actor
{
/**
* Act - do whatever the Ant wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
// Add your action code here.
move();
Fries fries = (Fries) getOneIntersectingObject(Fries.class);
if (fries!=null){
fries.jumpOn(getX(), getY());
}
//TODO: аналогично пересечь траву и картошку-фри,
// чтоб cпрятать картошку-фри fries.getImage().clear();
}
public void move(){
int y = getY();
int x = getX();
if(Greenfoot.isKeyDown("DOWN")){
setRotation(90);
y+=5;}
if(Greenfoot.isKeyDown("UP")){
setRotation(270);
y-=5;}
if(Greenfoot.isKeyDown("RIGHT")){
setRotation(0);
x+=5;}
if(Greenfoot.isKeyDown("LEFT")){
setRotation(180);
x-=5;}
setLocation(x, y);
}
}
public class Grass extends Actor
{
public Grass(){
getImage().scale(100, 100);
}
}
public class Fries extends Actor
{
public void jumpOn(int x, int y){
setLocation(x, y+57);
}
}
Немає коментарів:
Дописати коментар