Granchio

Lo scenario Granchio #1

  1. Scarica lo scenario crab1 e scompattalo.
    In Greenfoot, seleziona Scenario>Apri e poi scegli la cartella crab1.
    Crea un granchio, crab, come hai fatto per il vombato, sistemalo nel mondo e clicca Esegui.
    Non succederà nulla; ora dobbiamo programmare il granchio per poterlo muovere.
  2. Ora faremo in modo che il granchio faccia qualcosa.
    Apri l’editor del granchio selezionando Apri editor dal suo menu contestuale.
    Nell’editor vedrai un metodo vuoto act()

    public void act()
    {
    }

    Inserisci l’istruzione move(); nel corpo del metodo act():

    public void act()
    {
       move();
    }

    Chiudi l’editor e clicca il pulsante Compila tutto.
    Dopo sistema di nuovo un granchio nel mondo e prova a cliccare il pulsante Azione.
    Prova anche Esegui e il cursore Velocità.

  3. Adesso possiamo far muovere il granchio.
    Possiamo anche farlo girare.
    Modifica il codice (utilizzando l’editor) per aggiungere un’istruzione di rotazione.
    Nota che il metodo turn() ha un parametro per il numero di gradi della rotazione.
    Utilizziamo 5 gradi nel nostro esempio. 

    public void act()
    {
        move();
        turn(5);
    }

    Compila, posiziona di nuovo il granchio nel mondo e mettilo alla prova (clicca Esegui).
    Prova a mettere più granchi.

  4. I metodi move() e turn() provengono dalla classe Animal.
    Vediamo quali sono gli altri metodi che sono disponibili.
    Apri l’editor della classe Animal, e passa alla vista Specifiche.
    Si fa cambiando la scelta della casella di riepilogo in alto a destra da Implementazione a Specifiche.
  5. Guardando i metodi esistenti vediamo che c’è il metodo atWorldEdge() che controlla se siamo vicini al bordo del mondo.
    Utilizzando questo metodo possiamo modificare il nostro codice perché il granchio giri solamente quando finisce sul bordo. 

    public void act()
    {
        if (atWorldEdge()) 
        {
            turn(13);
        }
        move();
    }

    Sistema diversi granchi nel mondo e prova.

Lo scenario granchio #2

  1. Adesso vogliamo aggiungere una nuova classe (un altro tipo di animale).
    Seleziona Nuova sottoclasse... dal menu della classe Animal.
    Scrivi Worm come nome della classe.
    Puoi vedere che ci sono già delle immagini, inclusa quella di un verme.
    Seleziona l’immagine e clicca Ok.
    Compila di nuovo e sistema dei vermi nel mondo.
  2. Adesso vogliamo controllare il granchio in modo da fargli prendere i vermi.
    Il primo passo è quello di controllare il granchio con la tastiera.
    Ogni tasto della tastiera ha un nome, cioè left per la freccia a sinistra.
    Ecco come aggiungere il controllo tramite tastiera. 

    public void act()
    {
        if (Greenfoot.isKeyDown("left")) 
        {
            turn(-7);
        }
        if (Greenfoot.isKeyDown("right")) 
        {
            turn(7);
        }
        move();
    }
  3. Adesso, vogliamo che il granchio mangi i vermi quando li incrocia.
    Possiamo usare i metodi canSee() e eat() della classe Animal

    public void act()
    {
        if (Greenfoot.isKeyDown("left")) 
        {
            turn(-7);
        }
        if (Greenfoot.isKeyDown("right")) 
        {
            turn(7);
        }
        move();
        if (canSee(Worm.class)) 
        {
            eat(Worm.class);
        }
    }

    Compila, posiziona nel mondo un granchio e dei vermi e prova.

  4. Per rendere lo scenario più interessante aggiungiamo un’altra creatura che caccia il granchi.
    Aggiungiamo un’aragosta che va in giro casualmente e cerca di mangiare il granchio.
    Aggiungi l’aragosta, come prima, e scrivi il codice seguente nel suo metodo act()

    public void act()
    {
        if (atWorldEdge()) 
        {
            turn(17);
        }
        move();
        if (Greenfoot.getRandomNumber(100) > 90) 
        {
            turn(Greenfoot.getRandomNumber(90)-45);
        }
        if (canSee(Crab.class)) 
        {
            eat(Crab.class);
        }
    }

    Adesso posiziona nel mondo un granchio, tre aragoste e un po’ di vermi e prova a prendere tutti i vermi prima che l’aragosta prenda te!

  5. L’ultimo passo per oggi è quello di aggiungere dei suoni al piccolo gioco che abbiamo creato.
    Nella classe crab, nel punto dove il granchio mangia il verme, sistema un’istruzione per emettere un suono.
    Nello scenario sono disponibili due file audio di nome slurp.wav e au.wav

    if (canSee(Worm.class))
    {
        eat(Worm.class);
        Greenfoot.playSound("slurp.wav");
    }

    Allo stesso modo, aggiungi l’istruzione per suonare au.wav nella classe Lobster dove l’aragosta mangia il granchio.