Der Roboter soll alle markierten Felder
färben.
Hinweis: Die markierten Felder liegen alle unter einem bereits eingefärbten dunkelgrünen Feld.
Hinweis: Die untere Zeile entspricht der oberen Zeile, bloß, dass sie von links nach rechts vertauscht ist. Das untere Feld an der Stelle 2 ist markiert, wenn das obere Feld an der Stelle 15 dunkelgrün eingefärbt ist, das an der Stelle 3, wenn das an der Stelle 14 dunkelgrün markiert ist, und so weiter.
Hinweis: Ein Feld in der untere Zeile ist markiert, wenn es darüber mehr dunkelgrün eingefärbte Felder gibt, als ungefärbte Felder.
Die Schwierigkeit besteht darin, dass der Roboter, sobald er in die zweite Zeile gegangen ist, nicht mehr nach oben gehen kann.
Dein Programm muss sich also merken, welche Felder in der ersten Zeile markiert sind, und dann mit diesem
Speicher bestimmen, welche Felder in der zweiten Zeile gefärbt werden sollen.
Ein mögliches Vorgehen wird hier hergeleitet:
Zum Beispiel kann man eine Variable pro Zelle zu erstellen, um die Sensorwerte zu speichern:
In den Variablen wird ein Wahrheitswert (Boolean) gespeichert. Ist das Feld gefärbt, hat die Variable den
Wert True.
Ist das Feld nicht gefärbt, hat die Variable den Wert False.
Dann könnte man für jedes Feld in der zweiten Zeile die entsprechende Variable lesen, um festzustellen, ob
das Feld gefärbt werden soll.
Falls die Variable den Wert True hat, wird die Anweisung im falls-mache-Baustein ausgeführt.
Anstatt 15 verschiedene Variablen für jedes der 15 Felder vor dem Roboter zu speichern, soll der Roboter
eine
Liste verwenden, um sich zu merken, ob das Feld gefärbt ist oder nicht. Eine Liste ist eine Variable, die
mehrere Elemente
enthalten kann. Die Elemente sind durchnummeriert, beginnend mit 1. Wir beginnen mit der Erstellung
einer Liste
mit 16 mal dem Element False, die wir einer Variablen zuweisen:
Die Werte können dann als Elemente in der Liste gespeichert werden, indem man ihre Nummer und den Wert, den man an der Position mit dieser Nummer speichern möchte, angibt.
Hier wollen wir den Sensorwert für jede der 15 Felder vor dem Roboter speichern. Daher wird ein Sensor,
der
die Nummer der Spalte des Roboters auf dem Gitter angibt, als Positionsnummer in der Liste verwendet. Der
Baustein Farbe auf Feld gibt
True zurück, falls Farbe auf dem Feld ist und False, falls keine Farbe auf dem
Feld ist. Für jede Spalte speichern wir in der Liste
alleSpalten also die Information True oder False:
Sobald der Roboter dann in der zweiten Zeile ist, kann er die gespeicherten Werte wieder aus der Liste
lesen. Falls in
der Liste True gespeichert wurde, so muss das Feld markiert werden:
Dein Programm muss daher einfache Berechnungen mit den Positionsangaben der Spalten machen.
Beachte: Dein Programm muss mit allen Testfällen zurechtkommen.