Java Greenfoot Aufgabe?

3 Antworten

Teile dir die Arbeitsschritte des Programms auf.

1) Der Roboter sollte in Schlangenlinien durch das Feld fahren. Das heißt, wenn man sich erst einmal die Hügel wegdenkt: Vom Startpunkt aus fährt er so lange aus vorwärts, bis er auf ein Hindernis trifft. Dann ist er am Zeilenende angekommen und sollte sich drehen. Einmal nach links, dann ein Schritt vorwärts, noch einmal eine Drehung nach links. Auf der anderen Seite wieder angekommen, geht es andersherum: Drehung nach rechts, ein Schritt vorwärts, noch eine Drehung nach rechts.

Schau erst einmal, dass du das hinbekommst. Die Befehle für die Bewegungen und Kollisionsabfrage sind dir sicherlich bereits vorgegeben, ansonsten implementierst du dir sie kurz. Schau dir dazu die in der Actor-Klasse bereits implementierten Methoden an. Ansonsten brauchst du lediglich die üblichen Kontrollstrukturen (Schleife, Verzweigung). Um am jeweiligen Zeilenende zu prüfen, welche Drehung notwendig ist, kannst du dir eine boolsche Variable anlegen, die in der nächsten Zeile angekommen stets ihren Zustand ändert. Der Wert true könnte bedeuten, dass Linksdrehungen notwending sind, der Wert false wiederum weist auf notwendige Rechtsdrehungen hin.

2) Bau dir eine Funktion / eine Abfolge, die beschreibt, wie ein Hügel umrundet werden kann (denke dabei an die Schlangenlinienfahrt durch das Feld). Interessanterweise geht das mit Ausnahme bei der letzten Zeile immer über links oder mit Ausnahme der ersten Zeile immer über rechts.

3) Die beiden obigen Codes müssen miteinander kombiniert werden. Dabei ist die einzige Schwierigkeit, dass während der Fahrt durch eine Zeile unterschieden werden muss, ob es sich gerade um einen Hügel oder das Ende der Zeile handelt, um entsprechend die Umrundung oder den Wechsel zur nächsten Zeile zu triggern). Doch die Vorgaben der Aufgabe lassen genügend Lösungsoptionen zu. Da jede Zeile maximal einen Hügel beheimatet, könnte man die passierten Hügel je Zeile mitzählen (das erste Hindernis muss immer umrundet werden) oder die passierten Felder (für jede Zeile ist die Wegstrecke ja immer gleich).

Und wo ist das Problem?

du startest mit der untersten Zeile von links nach rechts.

stößt du auf ein Hindernis, gehe oben rum vorbei.

Wenn du beim nach rechts gehen am Ende angelangst, gehe die nächst höhere Zeile nach links.

Wenn du beim nach links gehen am Ende angelangst, gehe die nächst höhere Zeile nach rechts.

Wenn du in der letzten Zeile bist, umfahre das Hindernis unten rum.

bis zum Ende

Saustalle 
Fragesteller
 05.05.2021, 11:58

Ich muss einen Algorhytmus entwickeln bei dem der Rover selbstständig erkennt wo die Hügel sind und sie daher umfahren kann

0
DinoMath  05.05.2021, 12:04
@Saustalle

na, diese Information muss ja irgendwo gespeichert sein - entweder wird die vorgegeben oder du sollst sie zufällig erstellen oder das Bild ist die Info und du musst das erstmal in ein geeignetes Datenformat überführen.

Egal wie: wo ist das Problem?

0
Saustalle 
Fragesteller
 05.05.2021, 12:09
@DinoMath

Ich muss es komplett in Java programmieren mit while schleife oder was auch immer und da komme ich nicht voran

0
DinoMath  05.05.2021, 12:19
@Saustalle

sollen wir hier damit anfangen wie eine while Schleife funktionert? wie ein if funktioniert? was eine Variable ist? ein Array?

Hast du einen Computer? eine Textoberfläche in die du schreiben kannst? Einen Compiler mit dem du das Programm kompilieren kannst? (Um es dann auszuführen)

oftmals ist ein erster Schritt sich einen groben Plan zu machen wie man das Problem lösen will - dafür finde ich das was ich in meiner Antwort geschrieben habe schon sehr gut. Aber ja - der erste Anteil des gesamtprojekts wäre erstmal die Daten verfügbar zu machen auf die dann gearbeitet werden soll - dazu siehe Kommentar.

Was hält dich davon ab dir das nun genauer zu überlegen?

Du kannst ja auch andere Projekte schauen wie da Dinge gelöst sind, oder? Und dann schauen was du für parallelen ziehen kannst und wo du was anders machen musst und wie...

0
für Verbesserungsvorschläge bin ich offen und dankbar

*keine Gewähr auf Richtigkeit

Bild zum Beitrag

*Der Rover fährt so lange bis ein Hügel vorhanden ist > ist ein Hügel vorhanden? > dann umfahre diese und erhöhe die Zeile > solange bis du alle durch hast.

Grüße

Woher ich das weiß:Studium / Ausbildung – Lerne Java seit 6 Monaten, noch keine Expertin :)
 - (programmieren, Informatik, Java)