Hilfe bei PythonKara?
Ausgangssituation:
Guten Tag, ich benötige Hilfe bei einer Aufgabenstellung von meinem Lehrer, die Aufgabe lautet
Kara steht vor einem Bau mit vielen Kleeblättern. Erstellen Sie ein Programm, welches Kara in den Bau schickt und ihn alle Kleeblätter einsammeln lässt (remove.Leaf()-Anweisung). Kara sollte einen Bau beliebiger Höhe oder Breite in ähnlicher Form mit dem Programm säubern können. Bis dato habe ich nur einen Code programmiert der den Rand wegsammelt, jedoch nicht in die mitte kommt
while kara.treeLeft():
kara.move()
kara.removeLeaf()
if not kara.treeLeft():
kara.turnLeft()
kara.move()
kara.removeLeaf()
if kara.treeFront():
kara.turnRight()
if not kara.onLeaf() and not kara.treeLeft() or kara.treeFront():
kara.move()
kara.turnRight()
kara.move()
kara.removeLeaf()
1 Antwort
Ich habe zwar noch nie mit Kara gearbeitet, aber ich würde das Problem eher mit Reihen und nicht mit Umdrehungen lösen. Das wäre um einiges einfacher, da Kara nur ein geringes Sensorraster hat und man nur schwer lokalisieren kann, wo man sich gerade befindet.
Ich habe für dich mal ein Beispielscript zusammengeschrieben.
def backwards():
if kara.treeLeft() and kara.treeFront():
return True
for i in range(2):
kara.turnLeft()
while not kara.treeFront():
kara.move()
kara.turnRight()
kara.move()
kara.turnRight()
def row():
while kara.onLeaf() and not kara.treeFront():
kara.removeLeaf()
kara.move()
if kara.onLeaf():
kara.removeLeaf()
kara.move()
kara.move()
kara.turnLeft()
for i in range(2):
while not kara.treeFront():
kara.move()
kara.turnRight()
kara.turnRight()
end = False
while not end:
row()
end = backwards()
Es ist zwar nicht perfekt, aber du kannst vielleicht die Theorie dahinter verstehen (man kann bestimmt auch deine Methode verwenden, aber es ist schwieriger) und so auch dein eigenes Programm schreiben.
Ich hoffe ich konnte dir weiterhelfen und wenn du noch Fragen hast dann kannst du mich natürlich fragen.
LG
Du kannst es auch ohne Funktionen und for-Schleifen lösen.
kara.move()
kara.move()
kara.turnLeft()
while not kara.treeFront():
kara.move()
kara.turnRight()
while not kara.treeFront():
kara.move()
kara.turnRight()
kara.turnRight()
end = False
while not end:
while kara.onLeaf() and not kara.treeFront():
kara.removeLeaf()
kara.move()
if kara.onLeaf():
kara.removeLeaf()
if kara.treeLeft() and kara.treeFront():
break
for i in range(2):
kara.turnLeft()
while not kara.treeFront():
kara.move()
kara.turnRight()
kara.move()
kara.turnRight()
Hallo ich habe auch so eine Aufgabe aber habe noch nicht so komplexe Schreibweisen hätten sie auch eine nicht so komplexe Lösung
LG und Vielen Dank schon mal
Was ich dir geschrieben habe ist jetzt auch nicht perfekt. Das ist nur ein Beispiel/Denkhilfe, wie man das Problem lösen könnte
Könnten sie mir vielleicht eine Lösung geben ?