Diese Übung ist für Einsteiger in die Programmierung mit dem Hamster gedacht. Umfasst aber nicht die ganz simplen Basics wie Grundfunktionen des Hamsters, sowie die Erklärung von Schleifen, Bedingungen usw. Deshalb sollte man schon etwas Programmiererfahrung mitbringen.
Aufgabe
Der Hamster steht in der linken unteren Ecke mit Blick nach rechts. Vor ihm befindet sich ein unregelmäßiger Berg, der auf der einen Seite nur ansteigt (in Stufen, die unterschiedlich breit und hoch sein können), und der auf der anderen Seite absteigt (in Stufen, die unterschiedlich breit und hoch sein können). Der Hamster klettert auf die Spitze des Berges und bleibt dort stehen.
Die Eingangs -und Ausgangssituation als Bild, sowie den Sourcecode, findet ihr am Ende des Artikels.
void main() {
while( laufeBisBerg() ) {
while( rechtsMauer() ) {
vor();
}
rechtsUm();
}
kehrt();
vor();
kehrt();
}
Zunächst läuft der Hamster bis zum Berganfang. Hat er diesen erreicht wird die nächste Schleife aufgerufen. Hier wird geprüft ob rechts von ihm eine Mauer ist. Wenn ja, geht der Hamster ein Schritt nach vorne. Falls nicht, dreht er sich rechts. Was bedeutet, dass der Hamster auf der nächsten Ebene des Berges ist. Nun läuft er wieder bis zum Berganfang.
Hat der Hamster den Berggipfel erreicht, dreht er sich noch einmal und geht einen Schritt zurück.
boolean laufeBisBerg() {
while(vornFrei()) {
vor();
if( !rechtsMauer() )
return false;
}
linksUm();
return true;
}
Solange vor dem Hamster keine Mauer ist geht er einen Schritt vor. Ist rechts von ihm keine Mauer, heißt dies, dass der Hamster den Gipfel des Berges erreicht hat. Und die Hauptschleife endet in der main() endet.
boolean rechtsMauer() {
rechtsUm();
if( !vornFrei() ){
linksUm();
return true;
}
else {
linksUm();
return false;
}
}
Prüft ob rechts von dem Hamster eine Mauer ist oder nicht. Falls ja, wird true zurück gegeben. Falls nein, false.
Die restlichen Funktion findet ihr im ZIP-File.
Download
Links
- Hamster Übung 2
- http://www.u-helmich.de/inf/java2h/seite01.html
- http://www-is.informatik.uni-oldenburg.de/~dibo/hamster/download/v25/handbuch.pdf
Eingangsituation
Ausgangssituation



2 Kommentare vorhanden
Hallo Ulli,
du hast Recht deine Funktion sollte auch prima gehen.
Allerdings so weit ich gesehen habe, nur wenn der Berg keine Ebene von 2 Nebenstehenden Kästen hat.
Dann müsste die 3.Stelle :
void main() {
while (vornFrei()) {
vor();
void main() {
while (vornFrei()) {
laufeBisBerg()
so umprogrammiert werden. Dennoch vielen Dank für deinen Kommentar und noch viel Spaß beim Hamstern !
Hi!Ich habe mir deine Aufgabe angeschaut & einen funktionierenden Lösungsquelltext geschrieben, der ein bisschen einfacher zu sein scheint als deiner.
void main() {
while (vornFrei()) {
vor();
while (!vornFrei()) {
linksUm();
vor();
rechtsUm();
}
}
}
2 geschachtelte while-Funktionen solltens auch tun.. bei meinen Bergen haben sie das zumindest.^^ (der Berg muss an der oberen, rechten Ecke des Feldes aufhören, sonst läuft der Hamster fröhlich weiter)
Also dann… frohes Bergsteigen!
Kommentar schreiben!