Hallo miteinander,
ich wollte schon eine geraume Zeit mit dem Programmieren beginnen...und jetzt habe ich endlich einen Java-Kurs an meiner Uni. Wir arbeiten mit GreenFoot, hab selbst aber auch schon ein wenig Erfahrung im Umgang mit Eclipse gesammelt. Stehe trotzdem noch ziemlich am Anfang... und habe folgendes Problem:
Das Huhn soll in die obere rechte Ecke laufen, Schritt für Schritt, falls es da nicht bereits ist.
Mein Plan war jetzt durch die Variable reachedNBorder dem Huhn mitzuteilen, dass es bereits dort angekommen ist. Dadurch möchte ich verhindern, dass es sich wieder dem Norden zuwendet, nachdem es sich, bereits angekommen, nach Osten dreht. Aber wenn die obere Grenze erreicht ist wird weder reachedNBorder auf false gesetzt, noch dreht das Huhn sich nach rechts.
Mir geht es jetzt nicht um die optimalste Lösung für die Aufgabe (nach oben rechts gehen), sondern nur um das eben beschriebene Problem. Ich find die Lösung nicht, was übersehe ich?
ich wollte schon eine geraume Zeit mit dem Programmieren beginnen...und jetzt habe ich endlich einen Java-Kurs an meiner Uni. Wir arbeiten mit GreenFoot, hab selbst aber auch schon ein wenig Erfahrung im Umgang mit Eclipse gesammelt. Stehe trotzdem noch ziemlich am Anfang... und habe folgendes Problem:
Das Huhn soll in die obere rechte Ecke laufen, Schritt für Schritt, falls es da nicht bereits ist.
Mein Plan war jetzt durch die Variable reachedNBorder dem Huhn mitzuteilen, dass es bereits dort angekommen ist. Dadurch möchte ich verhindern, dass es sich wieder dem Norden zuwendet, nachdem es sich, bereits angekommen, nach Osten dreht. Aber wenn die obere Grenze erreicht ist wird weder reachedNBorder auf false gesetzt, noch dreht das Huhn sich nach rechts.
Mir geht es jetzt nicht um die optimalste Lösung für die Aufgabe (nach oben rechts gehen), sondern nur um das eben beschriebene Problem. Ich find die Lösung nicht, was übersehe ich?
Java:
/**
* Lets Chicken walk to the
* upper right corner
*/
public void goToURCorner() {
if (getX() != 7 && getY() != 0) {
if (! facingNorth() && ! reachedNBorder) {
switch (direction) {
case EAST:
turnLeft();
break;
case SOUTH:
turn();
break;
case WEST:
turnRight();
break;
}
}
if (canMove()) {
move();
} else if (getY() == 0 && ! reachedEBorder){
reachedNBorder = true;
turnRight();
}
}
}