Robot Karol: Aufräumen (die ganze Fläche): Unterschied zwischen den Versionen
(15 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
... Fortsetzung von '''Aufräumen (rundherum).''' | ... Fortsetzung von '''Aufräumen (rundherum).''' | ||
− | ===Version 5: Wie geht man denn durch den ganzen Raum?=== | + | ===Version 5: Wie geht man denn durch den ganzen Raum zum Aufräumen?=== |
[[Datei: karolraeum5.png |thumb|links|400px|In Schlangenlinien jeden Platz abklappern!]] | [[Datei: karolraeum5.png |thumb|links|400px|In Schlangenlinien jeden Platz abklappern!]] | ||
Zeile 12: | Zeile 12: | ||
Je nach ungerade oder gerade vielen Spalten sieht das Ende völlig anders aus! | Je nach ungerade oder gerade vielen Spalten sieht das Ende völlig anders aus! | ||
+ | |||
+ | Das Räumen bei einer Wende sieht an der Ostseite (Am Ende) anders aus! | ||
+ | |||
+ | Wenn Karol merkt, dass neben ihm eine Wand ist (er also an der Ostseite abbricht), er das aber in Nordrichtung '''und''' Südrichtung merkt (also links oder rechts), dann wird er auch an der Westwand abbrechen und gar nicht erst beginnen! Das heißt, '''wir müssen sicherstellen''', dass er '''die Wiederholungsschleife auf jeden Fall einmal durchläuft''', bevor er testet, ob er an einer Wand entlangläuft. Daher die '''Variante der Wiederholungsschleife mit Abbruchbedingung am Ende'''. | ||
Ihr könnt mit '''Aufräumen_5a.kdw''' und '''Aufräumen_5b.kdw''' Varianten reinladen, um Eure Versuche ausführlich zu testen. | Ihr könnt mit '''Aufräumen_5a.kdw''' und '''Aufräumen_5b.kdw''' Varianten reinladen, um Eure Versuche ausführlich zu testen. | ||
<br style="clear:left; "> | <br style="clear:left; "> | ||
− | |||
//nix Neues - wie bei den vorigen Versionen | //nix Neues - wie bei den vorigen Versionen | ||
Anweisung GeheBisZurWand solange NichtIstWand tue Schritt *solange *Anweisung | Anweisung GeheBisZurWand solange NichtIstWand tue Schritt *solange *Anweisung | ||
Zeile 57: | Zeile 60: | ||
RäumeFläche | RäumeFläche | ||
− | Jetzt geht's | + | Jetzt geht's an's Bauen! :-) |
<br style="clear:left; "> | <br style="clear:left; "> | ||
− | ===Version 6: Jetzt | + | ===Version 6: Jetzt kann - nach eventuellem Aufräumen vorher - komplett gepflastert werden=== |
− | [[Datei: | + | [[Datei: karolraeum6.png |thumb|links|1200px|Die komplette Fläche "unter Kontrolle"!]] |
− | + | <br style="clear:left; "> | |
+ | '''Die Herkulesarbeit ist mit Version 5 erledigt!''' | ||
+ | |||
+ | Nur noch die Anweisungen '''ZiegleWende''' und '''ZiegleFläche''' müssen ergänzt werden. Das geht aber wie beim Räumen nur mit Hinlegen statt Aufheben. Bingo! :-) | ||
<br style="clear:left; "> | <br style="clear:left; "> | ||
− | |||
Anweisung GeheBisZurWand solange NichtIstWand tue Schritt *solange *Anweisung | Anweisung GeheBisZurWand solange NichtIstWand tue Schritt *solange *Anweisung | ||
Anweisung GeheRundHerum wiederhole 4 mal GeheBisZurWand LinksDrehen *wiederhole *Anweisung | Anweisung GeheRundHerum wiederhole 4 mal GeheBisZurWand LinksDrehen *wiederhole *Anweisung | ||
Anweisung Räume solange IstZiegel tue Aufheben *solange *Anweisung | Anweisung Räume solange IstZiegel tue Aufheben *solange *Anweisung | ||
− | Anweisung RäumeBisZurWand solange NichtIstWand tue Räume Schritt *solange *Anweisung | + | Anweisung RäumeBisZurWand solange NichtIstWand tue Räume Schritt *solange *Anweisung<br> |
− | Anweisung RäumeRundHerum wiederhole 4 mal RäumeBisZurWand LinksDrehen *wiederhole *Anweisung | + | 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<br> | ||
+ | Anweisung RäumeRundHerum wiederhole 4 mal RäumeBisZurWand LinksDrehen *wiederhole *Anweisung<br> | ||
+ | Bedingung IstDanebenWand | ||
+ | schnell | ||
+ | falsch | ||
+ | RechtsDrehen wenn IstWand dann wahr *wenn LinksDrehen | ||
+ | LinksDrehen wenn IstWand dann wahr *wenn RechtsDrehen | ||
+ | langsam | ||
+ | *Bedingung<br> | ||
+ | Anweisung RäumeFläche | ||
+ | wiederhole | ||
+ | RäumeBisZurWand | ||
+ | RäumeWende | ||
+ | *wiederhole bis IstDanebenWand | ||
+ | RäumeBisZurWand | ||
+ | wenn IstSüden dann LinksDrehen LinksDrehen GeheBisZurWand *wenn | ||
+ | LinksDrehen GeheBisZurWand LinksDrehen | ||
+ | *Anweisung<br> | ||
Anweisung ZiegleBisZurWand solange NichtIstWand tue Hinlegen Schritt *solange *Anweisung | Anweisung ZiegleBisZurWand solange NichtIstWand tue Hinlegen Schritt *solange *Anweisung | ||
Anweisung ZiegleRundherum wiederhole 4 mal ZiegleBisZurWand LinksDrehen *wiederhole *Anweisung<br> | Anweisung ZiegleRundherum wiederhole 4 mal ZiegleBisZurWand LinksDrehen *wiederhole *Anweisung<br> | ||
− | + | Anweisung ZiegleWende | |
− | + | wenn IstSüden dann | |
− | + | LinksDrehen | |
− | + | wenn NichtIstWand dann Hinlegen Schritt *wenn | |
− | + | LinksDrehen | |
− | + | sonst | |
− | + | RechtsDrehen | |
− | <br | + | wenn NichtIstWand dann Hinlegen Schritt *wenn |
+ | RechtsDrehen | ||
+ | *wenn | ||
+ | *Anweisung<br> | ||
+ | Anweisung ZiegleFläche | ||
+ | Hinlegen Schritt LinksDrehen LinksDrehen Hinlegen LinksDrehen LinksDrehen | ||
+ | wiederhole | ||
+ | ZiegleBisZurWand | ||
+ | ZiegleWende | ||
+ | *wiederhole bis IstDanebenWand | ||
+ | ZiegleBisZurWand | ||
+ | wenn IstSüden dann LinksDrehen LinksDrehen GeheBisZurWand *wenn | ||
+ | LinksDrehen GeheBisZurWand LinksDrehen | ||
+ | *Anweisung<br> | ||
+ | RäumeFläche | ||
+ | ZiegleFläche |
Aktuelle Version vom 19. April 2021, 22:46 Uhr
>>> zurück zur Übersicht von Robot Karol
... Fortsetzung von Aufräumen (rundherum).
Version 5: Wie geht man denn durch den ganzen Raum zum Aufräumen?
Jetzt wird's 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!
Das Räumen bei einer Wende sieht an der Ostseite (Am Ende) anders aus!
Wenn Karol merkt, dass neben ihm eine Wand ist (er also an der Ostseite abbricht), er das aber in Nordrichtung und Südrichtung merkt (also links oder rechts), dann wird er auch an der Westwand abbrechen und gar nicht erst beginnen! Das heißt, wir müssen sicherstellen, dass er die Wiederholungsschleife auf jeden Fall einmal durchläuft, bevor er testet, ob er an einer Wand entlangläuft. Daher die Variante der Wiederholungsschleife mit Abbruchbedingung am Ende.
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 IstDanebenWand 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 IstDanebenWand //Nach Hause gehen RäumeBisZurWand wenn IstSüden dann LinksDrehen LinksDrehen GeheBisZurWand *wenn LinksDrehen GeheBisZurWand LinksDrehen *Anweisung
RäumeFläche
Jetzt geht's an's Bauen! :-)
Version 6: Jetzt kann - nach eventuellem Aufräumen vorher - komplett gepflastert werden
Die Herkulesarbeit ist mit Version 5 erledigt!
Nur noch die Anweisungen ZiegleWende und ZiegleFläche müssen ergänzt werden. Das geht aber wie beim Räumen nur mit Hinlegen statt Aufheben. Bingo! :-)
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ä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
Anweisung RäumeRundHerum wiederhole 4 mal RäumeBisZurWand LinksDrehen *wiederhole *Anweisung
Bedingung IstDanebenWand schnell falsch RechtsDrehen wenn IstWand dann wahr *wenn LinksDrehen LinksDrehen wenn IstWand dann wahr *wenn RechtsDrehen langsam *Bedingung
Anweisung RäumeFläche wiederhole RäumeBisZurWand RäumeWende *wiederhole bis IstDanebenWand RäumeBisZurWand wenn IstSüden dann LinksDrehen LinksDrehen GeheBisZurWand *wenn LinksDrehen GeheBisZurWand LinksDrehen *Anweisung
Anweisung ZiegleBisZurWand solange NichtIstWand tue Hinlegen Schritt *solange *Anweisung Anweisung ZiegleRundherum wiederhole 4 mal ZiegleBisZurWand LinksDrehen *wiederhole *Anweisung
Anweisung ZiegleWende wenn IstSüden dann LinksDrehen wenn NichtIstWand dann Hinlegen Schritt *wenn LinksDrehen sonst RechtsDrehen wenn NichtIstWand dann Hinlegen Schritt *wenn RechtsDrehen *wenn *Anweisung
Anweisung ZiegleFläche Hinlegen Schritt LinksDrehen LinksDrehen Hinlegen LinksDrehen LinksDrehen wiederhole ZiegleBisZurWand ZiegleWende *wiederhole bis IstDanebenWand ZiegleBisZurWand wenn IstSüden dann LinksDrehen LinksDrehen GeheBisZurWand *wenn LinksDrehen GeheBisZurWand LinksDrehen *Anweisung
RäumeFläche ZiegleFläche