Komme nicht weiter bei Java Hamster

hallo.
Ich habe ein Pronlem mit dem Java Hamster.
Unszwar ich soll ein Hauptprogramm schreiben
womit der hamster einen berg erklimmt und danach wieder hinunter kommt aber es ist egal wie groß bzw. klein der berg ist es muss bei jedem territotium das ein berg ist funktionieren.
habe das mit dem rauf und runter geschafft aber dann wenn es auf der anderen seite dann unten ankommt will der hamster weiterhin die stufen absteigen.
Kann mir da jemand helfen?

hier ist das Program:

void main() {
laufzumBerg();
gehRauf();
gehRunter();

}

void laufzumBerg(){
while(vornFrei() && !kornDa())
vor();
}

void gehRauf() {
while(!vornFrei() && !kornDa()){
linksUm();
vor();
rechtsUm();
vor();

}
}

void gehRunter() {
while(vornFrei() && !kornDa()){
vor();
rechtsUm();
vor();
linksUm();

}

}

void rechtsUm() {
for(int i=0;i

Hi
Ich meine, in deinem Programm würde der Dienst linksUm fehlen. Kann das sein? Ich weiß zwar nicht, ob das der Fehler sein kann, weil ich dein Programm nicht 100% verstehe,aber das kommt mir eben merkwürdig vor.
Gruß
Daniel

Hallo Selim,

Möglicherweise habe ich Dein Problem nicht verstanden, aber genügt es nicht einfach, am Ende des Berges ein Hindernis zu stellen, so dass Deine Abfrage vornFrei() einfach die Prozedur beendet ? Eventuell musst Du noch in deinem main-Aufruf am Ende eine Ergänzung geheBisEnde() machen.

Mit Gruß,
Frank-Thomas

Hi,
für mich sieht das so aus, als müsstest du noch einen „boolean berg“ definieren, damit dein Hamster erkennt, wo er gerade ist. Um zu unterscheiden, ob der Hamster den Berg rauf oder runter gehen muss, kannst du noch einen boolean, z.B. „boolean aufwärts“ verwenden.
Das sähe dann folgendermaßen aus:

void main() {
laufzumBerg();
gehRauf();
gehRunter();

}

void laufzumBerg(){
while(vornFrei() && !kornDa() && berg==false)
vor();
}

void gehRauf() {
while(!vornFrei() && !kornDa() && berg==true && aufwärts == true){
linksUm();
vor();
rechtsUm();
vor();

}
}

void gehRunter() {
while(vornFrei() && !kornDa() && berg==true && aufwärts == false){
vor();
rechtsUm();
vor();
linksUm();

}

}

void rechtsUm() {
for(int i=0;i

Hallo,

ich bin mir nicht sicher, ob ich richtig verstanden habe, was hier ein Berg sein soll, aber mir ist aufgefallen, dass Du in Deiner gehRunter()-Methode als Bedingung in der while-Schleife folgendes stehen hast:
vornFrei() && !kornDa()
Sie wird also immer weiter ausgeführt, bis der Hamster in Vorwärtsrichtung auf eine Wand oder ein Korn stößt. Müßtest Du den Hamster nicht zuerst nach rechts drehen, um quasi nach unten zu schauen, wenn Du herauszufinden willst, ob der Hamster noch weiter absteigen soll?

Schöne Grüße,

Manfred

Die Bedingungen, die du in laufzumBerg() und gehRunter() formulierst, sind identisch, darum geht der Hamster weiter „runter“, bis zum nächsten Berg.

Es muss eine Bedingung für „Berg zuende“ geben.

(So versteh ich das; ich kenne Java Hamster nicht.)

Tosta

Hallo Selim,

ich kann nur richtiges Java.

Ich habe mal kurz bei Google geschaut. Das gibt es viel zu Hamster-Simulationen .
Ich habe aber nichts gesehen, wo es einen Berg gibt.
Ich habe nur Simulationen gefunden, wo der Hamster in der Ebene rumläuft. Die Bilder waren in der Draufsicht. Der Hamster muss quasi eine Fläche absuchen.
Wenn es da wirklich einen Berg gibt, dann musst Du irgendwie erkennen, wenn Du wieder unten bist.
Wenn es für die Ebene kein Merkmal gibt, dann könntest Du zählen. Jedesmal wenn Du hochgehst +1 und jedesmal wenn Du runter gehst -1. Dann müsstest Du bei 0 wieder unten sein.
Mehr fällt mir dazu nicht ein.

Viele Grüße
Heike

Hallo Selim,

Entschuldigung für die späte Antwort, die Mail ist in meinem Spam-Ordner gelandet.

Ich kenne dan Java-Hamster nicht, sorry.

Für mich sieht es aber so aus, als fehlt Ihnen ein Aufruf, um festzustellen, ob der Hamster wieder auf dem Boden ist, dann könnten sie in etwa so vorgehen:

void gehRunter() {
while(vornFrei() && !kornDa() && !aufBoden()){
[…]

}

Gruß vom lnuxxer