import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class AB10 here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class AB10 extends AB3
{
    /*#
     * Aufgaben 1, 2 und 3: Patrouille
     */
    public void rundeDrehen() {
        int anzGemacht;
        anzGemacht = 0;
        while (anzGemacht < 20) {
            laufeBisWand();
            dreheUm();
            anzGemacht++;
        }
        
        /* Mit for-Schleife:
           for (int anzGemacht=0; anzGemacht<10; anzGemacht++ ) {
             laufeBisWand();
             dreheUm();
           } // end of for
        */
    }

    /*#
     * Aufgabe 4: Zu Befehl!
     */
    public void dreheAnzahlRunden(int anz) {
        for (int i=0; i<anz*2; i++) {
            if(getEnergie()<=60 && hatGegenstand("Akku")){
               benutze("Akku");
            }
            laufeBisWand();
            dreheUm();
        }
    }

    /*#
     * Aufgabe 5: Lauf x Schritte
     */ 
    public void geheSchritte(int x) {
        for(int i=0; i< x; i++) {
            if(istVorneFrei()) einsVor();
        }
    }


    /*
     * Aufgabe 6: Der Roboter läuft anz/2 Mal hin und her und sammelt fleißig ein.
     */
    public void sammle(int anz) {
        for(int i=0; i<anz; i++) {
            while(!this.istWandVorne()){
                aufnehmen();
                einsVor();
            }
            dreheUm();
        }
    }
    
    /**
     * Hilfsmethode für den Einsatz
     */
    public boolean einsVorSammle(){
        if(istVorneFrei() && this.getEnergie()>5) {
            einsVor();
            if(this.istAufGegenstand("Diamant")) 
            { aufnehmen(); }
            return true;
        } else {
            return false;
        }
    }
    

    /*#
     * Aufgabe 7: Aufräumen
     */
    public void aufraeumen() {
        for(int i=0; i<8;i++) {
            einsVor();
            einsVor();
            dreheUm();
        }
    }

    /*
     * Hilfsmethode, die den Aufzug holt.
     */ 
    public void holeAufzug() {
        if(!istVorne("Schalter")) {
            dreheUm();
        }
        benutze("Schalter");
    }

    /*#
     * Aufgabe 8: Aufzug
     */
    public void fahreAufzug(int etagen, boolean abwaerts) {
        if(abwaerts) {
            while(getRotation()!=90) dreheRechts();
        } else {
            while(getRotation()!=270) dreheRechts();
        }
        for(int i=0; i< etagen; i++) einsVor();
    }
    
    public void fahreInsStockwerk(int etage) {
        if(etage > getY()) {
            while(getRotation()!=90) dreheRechts();
        } else {
            while(getRotation()!=270) dreheRechts();
        }
        int etagen = Math.abs(getY()-etage);            
        for(int i=0; i< etagen; i++) einsVor();
    }


}
