Grid
initialize
Rendert das Hintergrundbild entsprechend der Breite und Höhe.
blockAt: aPoint
Nimmt aPoint in Punkt-Notation (z.B. (10 @ 7)) und gibt den Block, der auf dem entsprechenden Quadrat platziert wurde zurück. Liegt dort kein Block, so wird nil zurückgegeben.
INFO
Wir übernehmen hierbei der Einfachheit halber die von Squeak verwendete Orientierung des Koordinatensystems (soweit ich mich erinnern kann: Ursprung unten links, x nach oben, y nach rechts).
placeBlock: aBlock at: aPoint
Nimmt aPoint in Punkt-Notation (z.B. (10 @ 7)) und fügt den Block in die Instanz-Variable blocks ein. Dabei müssen zunächst die 2D-Koordinaten in Indizes für blocks umgerechnet werden (Achtung: Squeak-Indizierung beginnt bei 1). Außerdem wird position: auf dem Block aufgerufen, damit dieser sich selbsständig rendern kann.
DANGER
Redundanz bezüglich der Position eines Blocks vermeidbar?
clear: aPoint
Entfernt den Block am gegebenen Punkt aPoint.
Instanz-Variablen
blocks
Eine Collection aus Blöcken bzw. nil, die für jedes Quadrat den dort platzierten Block enthält. blocks speichert die y-Reihen in aufsteigender Reihenfolge und darin die x-Einträge wiederum aufsteigend (also z.B. (0 @ 0), (1 @ 0), (2 @ 0), (0 @ 1), (1 @ 1), (2 @ 1), (0 @ 2), (1 @ 2), (2 @ 2))
width
Speichert die Anzahl der Quadrate im Grid entlang der Horizontale.
height
Speichert die Anzahl der Quadrate im Grid entlang der Vertikale.
squareSize
Speichert die Seitenlänge der einzelnen Quadrate.
Getter und Setter
Es sollten Getter für width, height und squareSize vorfügbar sein.