суботу, 24 жовтня 2020 р.

Java4Kids 2

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


Задача урока

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

Надо реализовать: добавить 2 объекта: 1 вид еды (грушу) и дом муравья (травку).
    Когда муравей подползает к еде, он ее берет и несет в дом, где она скрывается.

Время урока: 1.5 часа.

Обсудить с детьми

  1. Вспомнить, как делать создание объекта, что такое конструктор и показать, как работает код внутри конструктора.

    Реализация: в конструкторе задавать размер травки-домика.

  2. Проговорить с детьми план захвата груши муравьем, где писать код, какому объекту он будет принадлежать.

    Реализация: дети сами предложили где и что писать. Сделали, но не все сработало. Подумали о причинах, почему что-то не работает или почему работает что-то неожиданно. Обсудили, что триггер выполнения кода кроется в "цикле" нажатия на кнопки клавиатуры, поэтому ручной цикл писать не надо.

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

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


Что прошло хорошо

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


Что было не очень хорошо

  • Как всегда проблемы со связью. У одного ребенка плохо работал 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);
    }
}

Немає коментарів:

Дописати коментар