Übung 11: Array-basierte Gitterraster

Teil 1

Beginne mit dem Programm am Ende von Array-Backed Grids. Ändere es so, dass nicht nur der Block geändert wird, auf den der Benutzer klickt, sondern auch die Blöcke der Quadrate neben dem Klick des Benutzers. (5 Punkte) Vergewissere dich, dass das Programm nicht abstürzt und den Klick trotzdem entsprechend behandelt, wenn der Benutzer auf eine Kante klickt. (5 Punkte)

../../_images/lab_11_sample.gif

Beispiel einer funktionierenden Übung 11

Teil 2

Erstelle ein anderes Programm, und beginne erneut mit dem Programmcode am Ende von Array-Backed Grids.

Schreibe eine Schleife, in der alle im Raster ausgewählten Zellen gezählt und ausgegeben werden. Füge diesen Programmcode am Ende deiner Funktion on_mouse_press ein. (2 Punkte)

Beispielausgabe
Total of 1 cells are selected.
Total of 2 cells are selected.
Total of 3 cells are selected.
Total of 2 cells are selected.
Total of 3 cells are selected.
Total of 4 cells are selected.
Total of 5 cells are selected.
Total of 6 cells are selected.
Total of 7 cells are selected.
Total of 8 cells are selected.
Total of 9 cells are selected.

Schreibe eine weitere Schleife, die angibt, wie viele Zellen in jeder Zeile ausgewählt sind: (3 Punkte)

Beispielausgabe
Total of 7 cells are selected.
Row 0 has 0 cells selected.
Row 1 has 0 cells selected.
Row 2 has 2 cells selected.
Row 3 has 2 cells selected.
Row 4 has 1 cells selected.
Row 5 has 2 cells selected.
Row 6 has 0 cells selected.
Row 7 has 0 cells selected.
Row 8 has 0 cells selected.
Row 9 has 0 cells selected.

Total of 8 cells are selected.
Row 0 has 0 cells selected.
Row 1 has 0 cells selected.
Row 2 has 3 cells selected.
Row 3 has 2 cells selected.
Row 4 has 1 cells selected.
Row 5 has 2 cells selected.
Row 6 has 0 cells selected.
Row 7 has 0 cells selected.
Row 8 has 0 cells selected.
Row 9 has 0 cells selected.

Aktualisiere den Programmcode so, dass er die Anzahl in Zeilen und Spalten ausgibt: (1 Punkt)

Beispielausgabe
Total of 5 cells are selected.
Row 0 has 1 cells selected.
Row 1 has 1 cells selected.
Row 2 has 1 cells selected.
Row 3 has 1 cells selected.
Row 4 has 1 cells selected.
Row 5 has 0 cells selected.
Row 6 has 0 cells selected.
Row 7 has 0 cells selected.
Row 8 has 0 cells selected.
Row 9 has 0 cells selected.
Column 0 has 5 cells selected.
Column 1 has 0 cells selected.
Column 2 has 0 cells selected.
Column 3 has 0 cells selected.
Column 4 has 0 cells selected.
Column 5 has 0 cells selected.
Column 6 has 0 cells selected.
Column 7 has 0 cells selected.
Column 8 has 0 cells selected.
Column 9 has 0 cells selected.

Aktualisiere den Programmcode, damit das Programm auch ausgibt, wie viele Zellen fortlaufend in einer Reihe ausgewählt sind, wenn diese Anzahl größer als 2 ist. (4 Punkte)

Erstelle dazu eine neue Variable (wie continuous_count), die für jede Zeile auf Null zurückgesetzt wird. Wenn der aktuelle Rasterplatz eins ist, dann addieren Sie eins zu continuous_count. Wenn es Null ist, prüfe, ob continuous_count größer als 2 ist. Wenn ja, gib die Anzahl aus. Setze sie davon unabhängig auf Null zurück.

Du musst auch dasselbe if ausführen, nachdem die Schleife mit der Zeile abgeschlossen ist. Wenn die Reihe bis zur Kante des reicht, werden die Blöcke in dieser Reihe ohne diese zweite Prüfung nicht ausgelöst.

Beispielausgabe
Total of 18 cells are selected.
Row 0 has 0 cells selected.
There are 7 continuous blocks selected on row 1.
Row 1 has 7 cells selected.
Row 2 has 0 cells selected.
There are 4 continuous blocks selected on row 3.
Row 3 has 4 cells selected.
Row 4 has 0 cells selected.
There are 4 continuous blocks selected on row 5.
Row 5 has 4 cells selected.
There are 3 continuous blocks selected on row 6.
Row 6 has 3 cells selected.
Row 7 has 0 cells selected.
Row 8 has 0 cells selected.
Row 9 has 0 cells selected.
Column 0 has 1 cells selected.
Column 1 has 3 cells selected.
Column 2 has 3 cells selected.
Column 3 has 3 cells selected.
Column 4 has 3 cells selected.
Column 5 has 1 cells selected.
Column 6 has 1 cells selected.
Column 7 has 1 cells selected.
Column 8 has 1 cells selected.
Column 9 has 1 cells selected.