Greenfoot Planet 2.0 Gestein nehmen funktioniert nicht?
Ich habe das hier bei Greenfoot programmiert.Der Rover geht rumherum, aber das erste Gestein nimmt er nicht mit. Beim Zweiten, also das blaue x(war ein Gestein) hat er ganz normal mitgenommen.Weiß jemand zufällig warum das so ist oder wo mein Fehler liegt?
1 Antwort
Du tust dir mit deiner Art der Codeeinrückung meiner Meinung nach keinen Gefallen, denn sie gestalten den Code aktuell schwer lesbar.
Anhand von Einrückungen soll man eigentlich sehen, welche Operationen sich im gleichen Codeblock befinden. Sobald ein neuer Codeblock beginnt, rücken die Folgezeilen um eine bestimmte Anzahl an Leerzeichen nach rechts (welche Länge da man nimmt, sollte man im Voraus für das gesamte Projekt entscheiden), bis der Codeblock wieder geschlossen wird.
Beispiel:
public void act() {
fahre();
while (!huegelVorhanden("vorne")) {
fahre();
if (gesteinVorhanden()) {
nimmGestein();
}
}
}
Dein Problem lässt sich am besten nachstellen, indem du den Algorithmus Schritt für Schritt durchläufst. Stellen wir das Feld einmal vereinfacht in einem Koordinatensystem dar:
A B C D
1 R - - -
2 H H G -
3 - - H X
R = Rover
H = Hügel
G = Gestein
X = blaues Kreuz
Der Rover startet bei A1, setzt die Marke und fährt zu B1. Dann geht der Programmfluss in die Schleife. Da es kein Gestein gibt, läuft er weiter bis zur inneren Schleife, durch die der Rover bis zu C1 fährt.
Da es auf D1 (Fahrtrichtung) keinen Hügel gibt, dreht der Rover nach rechts und fährt auf C2. Nun wird die letzte Kontrollstruktur (if) abgearbeitet. Vor dem Rover (C3) befindet sich ein Hügel. Der Rover dreht sich also nach links und fährt weiter auf D2.
Erst mit der nächsten Iteration (der äußeren Schleife) wird wieder geprüft, ob sich der Rover auf einem Feld mit Gestein befindet, welches er aufsammeln soll.