Robot Karol: Aufräumen (die ganze Fläche): Unterschied zwischen den Versionen

Aus MINT.lentner.net
Zur Navigation springen Zur Suche springen
Zeile 5: Zeile 5:
 
[[Datei: karolraeum5.png |thumb|links|400px|In Schlangenlinien jeden Platz abklappern!]]
 
[[Datei: karolraeum5.png |thumb|links|400px|In Schlangenlinien jeden Platz abklappern!]]
  
Beim Bauen der Schwimmbäder haben wir schon gesehen: Wir wollen, dass '''unser Roboter Karol ja möglichst intelligent wird'''. Er sollte im Kapitel 1 (Version 3) sich auf unterschiedliche Raumgrößen selber einstellen können und entscheiden, wie er sich an die neuen Umstände richtig anpasst.
+
'''Jetzt wird knifflig!'''
  
Im wirklichen Leben (denken wir an das '''autonome Fahren''') kommen noch viel mehr Unwägbarkeiten dazwischen. Ein anderes Auto fährt uns in die Parade! '''Unerwartete Hindernisse stehen im Weg ...'''
+
Wir gehen jetzt in Schlangenlinien durch den Raum und klappern alle Plätze ab. Da gibt's einige Stolperfallen:
  
Karol soll trotzdem sein Schwimmbad bauen. Lassen wir für's Erste mal Ziegelsteine im Weg liegen. Dann kann Karol ja ''nicht einfach draufziegeln''! Wir erwarten, dass Karol die Hindernisse zuerst aus dem Weg räumt und dann erst zu bauen beginnt. Das Bewegen in einer schlampigen Welt, in der wir uns bewegen können und aufräumen müssen, können wir in folgendem Code organisieren. Das ist schon fast sowas, wie '''eine Programmbibliothek'''.
+
Die Wenden im Süden sehen anders aus als im Norden.
  
Karol kennt jetzt: ''GeheBisZurWand, GeheRundHerum, Räume, RäumeBisZurWand, RäumeRundHerum''
+
Je nach ungerade oder gerade vielen Spalten sieht das Ende völlig anders aus!
  
5 neue Befehle, die Karol versteht. Wir werden für eine bestimmte Aufgabe nicht immer alle Befehle benutzen, aber laden sie trotzdem immer als unseren Sprachschatz mit herein. Im Hauptprogramm können wir dann einfach immer benutzen, was grade anfällt:
+
Ihr könnt mit '''Aufräumen_5a.kdw''' und '''Aufräumen_5b.kdw''' Varianten reinladen, um Eure Versuche ausführlich zu testen.
 
 
'''Tipp:''' Standardmäßig lädt das Programm '''Aufräumen_1.kdp''' auch die Welt '''Aufräumen_1.kdw''' ins Programm. Da liegen nur einzelne Ziegel herum. Karol wird damit fertig. Aber probier' mal '''Aufräumen_1a.kdw''' ins Programm zu laden (Welt >>> Öffne Welt). Da liegen ganze Müllstapel rum. Aber auch damit wird Karol fertig!
 
 
<br style="clear:left; ">
 
<br style="clear:left; ">
  

Version vom 19. April 2021, 22:14 Uhr

>>> zurück zur Übersicht von Robot Karol

... Fortsetzung von Aufräumen (rundherum).

Version 5: Wie geht man denn durch den ganzen Raum?

In Schlangenlinien jeden Platz abklappern!

Jetzt wird knifflig!

Wir gehen jetzt in Schlangenlinien durch den Raum und klappern alle Plätze ab. Da gibt's einige Stolperfallen:

Die Wenden im Süden sehen anders aus als im Norden.

Je nach ungerade oder gerade vielen Spalten sieht das Ende völlig anders aus!

Ihr könnt mit Aufräumen_5a.kdw und Aufräumen_5b.kdw Varianten reinladen, um Eure Versuche ausführlich zu testen.

//nix Neues - wie bei den vorigen Versionen 
Anweisung GeheBisZurWand solange NichtIstWand tue Schritt *solange *Anweisung
Anweisung GeheRundHerum wiederhole 4 mal GeheBisZurWand LinksDrehen *wiederhole *Anweisung
Anweisung Räume solange IstZiegel tue Aufheben *solange *Anweisung
Anweisung RäumeBisZurWand solange NichtIstWand tue Räume Schritt *solange *Anweisung
//Wir müssen an der Wand eine Wende machen - im Süden anders als im Norden - auch anders räumen als auf der Geraden //An der Ostwand angekommen, drehen wir uns nur um, ohne weiterzuschreiten Anweisung RäumeWende wenn IstSüden dann LinksDrehen wenn NichtIstWand dann Räume Schritt *wenn LinksDrehen sonst RechtsDrehen wenn NichtIstWand dann Räume Schritt *wenn RechtsDrehen *wenn *Anweisung
//wieder wie in den alten Versionen Anweisung RäumeRundHerum wiederhole 4 mal RäumeBisZurWand LinksDrehen *wiederhole *Anweisung
//Wir müssen an der Ostwand merken, dass wir am Ende sind - mal in Nordrichtung - mal in Südrichtung Bedingung DanebenIstWand schnell falsch RechtsDrehen wenn IstWand dann wahr *wenn LinksDrehen LinksDrehen wenn IstWand dann wahr *wenn RechtsDrehen langsam *Bedingung
Anweisung RäumeFläche //Die hohe Kunst - die Wiederholungsbedingung am Ende, sonst bricht Karol am Anfang schon ab! wiederhole RäumeBisZurWand RäumeWende *wiederhole bis DanebenIstWand //Nach Hause gehen RäumeBisZurWand wenn IstSüden dann LinksDrehen LinksDrehen GeheBisZurWand *wenn LinksDrehen GeheBisZurWand LinksDrehen *Anweisung
RäumeFläche

Jetzt geht's ans's Bauen! :-)

Version 6: Jetzt wird - nach eventuellem Aufräumen vorher - ein Schwimmbad gebaut

Erst Aufräumen -
dann Schwimmbad bauen!

Ihr seht: Es sind nur zwei zusätzliche Anweisungen aus Kapitel 1 nötig und unser Karol kann jetzt schon:
GeheBisZurWand, GeheRundHerum, Räume, RäumeBisZurWand, RäumeRundHerum, ZiegleBisZurWand, ZiegleRundherum


Anweisung GeheBisZurWand solange NichtIstWand tue Schritt *solange *Anweisung
Anweisung GeheRundHerum wiederhole 4 mal GeheBisZurWand LinksDrehen *wiederhole *Anweisung
Anweisung Räume solange IstZiegel tue Aufheben *solange *Anweisung
Anweisung RäumeBisZurWand solange NichtIstWand tue Räume Schritt *solange *Anweisung
Anweisung RäumeRundHerum wiederhole 4 mal RäumeBisZurWand LinksDrehen *wiederhole *Anweisung
Anweisung ZiegleBisZurWand solange NichtIstWand tue Hinlegen Schritt *solange *Anweisung
Anweisung ZiegleRundherum wiederhole 4 mal ZiegleBisZurWand LinksDrehen *wiederhole *Anweisung
RäumeRundherum wiederhole 2 mal ZiegleRundHerum *wiederhole

Aber: Ist es nicht unrealistisch, dass Karol all die Steine tragen kann? Eventuell bekommst Du sogar Fehlermeldungen, dass er das nicht kann. Das kannst Du unter "Einstellungen >>> Karol" einstellen: "Ob er beliebig viel tragen kann" oder "ob er eine Maximalzahl an Ziegeln hat, jenseits derer ihn das Schmalz verlässt"! Also ...

In der nächsten Version legen wir die Ziegel einfach links ab, dann muss er lediglich einen Ziegel immer schleppen. Das wird er ja wohl können! ...