import greenfoot.*;

/**
 * Write a description of class AB8 here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class AB8 extends AB5
{
    private int zaehler1;
    private double wert;

    public AB8() {
        this.zaehler1 = 0;
        this.wert = 0.0;
    }

    /*#
     * Aufgabe 1: Zwei Methoden, die fast das gleiche machen ...
     */
    public int zaehleSchritteBisWand1() {
        while(!istWandVorne()) {
            this.zaehler1++;
            einsVor();
        }
        return this.zaehler1;
    }

    public int zaehleSchritteBisWand2() {
        int zaehler2;
        zaehler2 = 0;
        while(!istWandVorne()){
            zaehler2++;
            einsVor();
        }
        return zaehler2;
    }

    /*#
     * Aufgabe 4: Summe der x- und y-Koordinate
     */
    public int gibPositionssumme() {
        int x;
        int y;
        int summe;
        x = getX();
        y = getY();
        summe = x + y;
        return summe;
    }

    /*#
     * Aufgabe 5: Abstabdsberechnungen
     */
    public int gibLaenge() {
        int x1;
        int x2;
        int x_diff;
        int y1;
        int y2;
        int y_diff;
        int laenge;
        x1 = getX();
        y1 = getY();
        laufeBisWand();
        x2 = getX();
        y2 = getY();
        x_diff = x2-x1;
        if (x_diff<0) {
            x_diff = -x_diff;
        }
        y_diff = y2-y1;
        if (y_diff<0) {
            y_diff=-y_diff;
        }    
        if (x_diff==0) {
            laenge = y_diff+1;
        }
        else {
            laenge = x_diff+1;
        }
        return laenge;
    }

    /*#
     * Aufgabe 6: Flaeche
     */
    public int gibRaumgroesse() {
        int breite;
        int hoehe;
        int groesse;
        breite = gibLaenge();
        dreheRechts();
        hoehe = gibLaenge();
        groesse = breite * hoehe;
        return groesse;
    }

    /*#
     * Aufgabe 7: 
     */
    public boolean istFassRechts() {
        dreheRechts();
        if (istVorne("Fass")) {
            dreheLinks();
            return true;
        }else {
            dreheLinks();
            return false;
        }
    }

    public int gibLaengeFassReihe() {
        int laenge;
        laenge = 0;
        while(istFassRechts()) {
            laenge++;
            einsVor();
        }
        return laenge;
    }

    public int gibAnzahlFaesser() {
        int breite;
        int hoehe;
        int groesse;
        einsVor();
        breite = gibLaengeFassReihe();
        dreheRechts();
        einsVor();
        hoehe = gibLaengeFassReihe();
        groesse = breite*hoehe;
        return groesse;
    }

    /*#
     * Aufgabe 9: Sammler
     */
    public void sammeln() {
        while(!istWandVorne()) {
            einsVor();
            if (istAufGegenstand("Schraube")) {
                this.wert = this.wert+0.20;
                aufnehmen();
            }
            if (istAufGegenstand("Akku")) {
                this.wert = this.wert+2.40;
                aufnehmen();
            }
            if (istAufGegenstand("Schluessel")) {
                this.wert = this.wert+5.00;
                aufnehmen();
            }
            if (istAufGegenstand("Feuerloescher")) {
                this.wert = this.wert+40.00;
                aufnehmen();
            }
        }
    }

    // Hier muss noch eine get-Methode hin:
    public double getWert() {
        return this.wert;
    }

    /*#
     * Aufgabe 10: Finanzamt
     */
    public double gibMehrwertSteuer() {
        double steuer;
        steuer = this.wert * 0.19;
        return steuer;
    }

    /*#
     * Einsatz 8: Den Namen bitte nicht aendern!
     */
    public int einsatz8() {
        int g;
        g = 0;
        while(!istWandVorne()) {
            if (!istWandRechts()) {
                dreheRechts();

                einsVor();
                einsVor();
                einsVor();
                einsVor();
                dreheLinks();
                g = g + gibRaumgroesse();
                dreheRechts();
                laufeBisWand();
                dreheRechts();
                laufeBisWand();
                dreheRechts();
            }
            einsVor();
        }

        return g-1;
    }
}
