Príloha 12 – posledná verzia triedy HlavnáTrieda

Prevziať

HlavnáTrieda

public class HlavnáTrieda extends GRobot
{
    private final Prievozník prievozník = new Prievozník();
    private final Pasažier vlk = new Pasažier("vlk", 0, 0, 0, 65, 200, 10);
    private final Pasažier koza = new Pasažier("koza", 0, -10, -5, 50, 280, 10);
    private final Pasažier kapusta = new Pasažier("kapusta", 0, -25, 0, 25, 360, 10)
    {
        @Override public boolean myšV()
        {
            skoč(0, -30);
            boolean myšV = myšVKruhu(45);
            skoč(0, 30);
            return myšV;
        }
    };
 
    private HlavnáTrieda()
    {
        super(800, 300, "Prievozník…");
        svet.zbaľ();
 
        prievozník.choďNaPravý();
        vlk.choďNaPravý();
        koza.choďNaPravý();
        kapusta.choďNaPravý();
 
        new ObsluhaUdalostí()
        {
            @Override public void klik()
            {
                if (vlk.myšV())
                {
                    vlk.choď();
                    vlk.vydajZvuk();
                }
                else if (koza.myšV())
                {
                    koza.choď();
                    koza.vydajZvuk();
                }
                else if (kapusta.myšV())
                {
                    kapusta.choď();
                    kapusta.vydajZvuk();
                }
                else if (prievozník.myšV())
                {
                    prievozník.prejdiRieku();
                    prievozník.vydajZvuk();
                }
            }
        };
 
        nakresliProstredie();
        aktivuj();
    }
 
    @Override public void aktivita()
    {
        if (vlk.vPohybe() || koza.vPohybe() || kapusta.vPohybe() ||
            prievozník.vPohybe()) return;
 
        if (vlk.ľavýBreh() && koza.ľavýBreh() && kapusta.ľavýBreh())
        {
            deaktivuj();
            svet.správa("Všetci pasažieri sú úspešne prevezení na ľavý breh!");
        }
 
        if (vlk.pozícia() == koza.pozícia() &&
            kapusta.pozícia() != vlk.pozícia() &&
            prievozník.pozícia() != vlk.pozícia())
        {
            deaktivuj();
            svet.správa("Vlk zožral kozu!");
        }
 
        if (koza.pozícia() == kapusta.pozícia() &&
            vlk.pozícia() != koza.pozícia() &&
            prievozník.pozícia() != kapusta.pozícia())
        {
            deaktivuj();
            svet.správa ("Koza zožrala kapustu!");
        }
    }
 
    private void nakresliProstredie()
    {
        skry();
 
        // Obloha
        podlaha.vyplň(tyrkysová);
 
        // Voda
        skočNa(0, -100);
        farba(modrá);
        vyplňObdĺžnik(405, 55);
 
        // Ľavý breh
        farba(tmavozelená);
        skočNa(-350, -50);
 
        for (int i = 0; i < 5; ++i)
        {
            vyplňElipsu(200, 60);
            choď(-15, -30);
        }
 
        // Pravý breh
        skočNa(350, -50);
 
        for (int i = 0; i < 5; ++i)
        {
            vyplňElipsu(200, 60);
            choď(15, -30);
        }
 
        // Slnko
        farba(svetložltá);
        skočNa(-220, 180);
        kruh(95);
    }
 
    public static void main(String[] args)
    {
        new HlavnáTrieda();
    }
}