Wie kann ich diese Java Hamster Aufgabe lösen?


14.12.2020, 17:52

Das habe ich vergessen zu sagen: Dass Programm muss auch für andere Feldgrößen funktionieren.

3 Antworten

Schau doch einfach je Schritt, ob sich links vom Hamster eine Mauer befindet (ausgenommen bei der Startposition). Wenn nicht, erfolgt eine Rotation nach links. Diese Rotationen sollte er mitzählen, um ebenso bestimmen zu können, wann er das Ende erreicht hat.

Für die Drehungen für seine gesammelten Körner würde ich den Hamster bei jeder Drehung ein Korn ablegen lassen. So verringert sich die Anzahl an noch fälligen Iterationen.

Ja, wo ist das Problem?

8 mal rechts, 6 mal hoch, 8 mal links, 6 mal runter, drehen drehen drehen ...

Du musst halt die Kurven zählen und jedes mal wenn du nach vorne gegangen bist, prüfen ob ein Korn da liegt und prüfen, ob links noch eine Wand ist.

Die main könnte z.B. so aussehen:

void main() {
    for (int kurven = 0; kurven < 4; kurven++) {
        do {   
            vor();
            nimmFallsKornDa();
        } while (!linksFrei());
        linksUm();
    }
}

Die Methoden "nimmFallsKornDa" und "linksFrei" musst du halt selbst bauen.


daCypher  15.12.2020, 12:14

Hab vergessen, dass er sich danach noch drehen soll. Die Methode getAnzahlKoerner scheint nur bei der objektorientierten Variante zu funktionieren. Du müsstest in diesem Fall also eine öffentliche Variable erstellen, in der du die Anzahl Körner mitzählst und dann halt den Hamster so oft drehen.

int koerner = 0; // Wird in nimmFallsKornDa() gezählt
void main() {
    for (int kurven = 0; kurven < 4; kurven++) {
        do {   
            vor();
            nimmFallsKornDa();
        } while (!linksFrei());
        linksUm();
    }
        for (int drehungen = 0; drehungen < koerner; drehungen++) {
        linksUm();
    }
}