Hamstersimulator-Hat jemand die Lösung für das?

1 Antwort

Der Hamster isst immer genau ein Korn. Egal ob eins oder mehr Körner auf dem Feld sind. Das könnte man so umsetzen:

if(kornDa() == true)
  nimm();

Wollen wir uns aber mal die gesamte Aufgabe anschauen:

Er läuft geradeaus, bis er vor sich eine Wand hat, dann dreht er sich nach rechts und geht drei Mal geradeaus. Da du das Territorium kennst, kannst du die Felder abzählen, sind hier ja nicht gerade viele. Ansonsten nutzt du eine while-Schleife.

while(vornFrei() == true) {    //Solange das Feld vor dem Hamster frei ist
  vor();
  if(kornDa() == true) { //Wenn auf dem Feld mind. ein Korn ist
      nimm();
  }
}
rechtsUm(); //Diese Methode musst du selbst schreiben
// Das Programm ist noch nicht beendet, du bist dran

Den Rest schaffst du selbst. Wenn nicht, stelle gezielte Fragen.

Hinweise:

  1. Du kannst wie im 1. Quelltext bei if-Anweisungen und while-Schleifen die Mengenklammern "{}" weglassen, wenn es in ihr nur einen Befehl gibt. Habe ich im 2. Quelltext aber trotzdem nicht weggelassen, damit es für dich als Anfänger übersichtlicher ist.
  2. Des Weiteren musst du die Methode rechtsUm() selbst schreiben, denn den kennt der Hamster nicht. Er kennt dafür den Befehl linksUm(). Wenn sich der Hamster drei Mal nach links dreht, dreht er sich nach rechts. Schreibe also eine neue Methode wie folgt:
void rechtsUm() {
  linksUm();
  linksUm();
  linksUm();
}

Jetzt kannst du den Befehl rechtsUm() auch verwenden.

Woher ich das weiß:Studium / Ausbildung