Aus Das deutschsprachige Scratch-Wiki

Viele Scratch- Projekte erfordern die Verwendung von Rastern. Ein Raster ist ein organisiertes Muster von Objektplatzierungen. Die Gitter haben den gleichen Abstand zwischen den Kacheln, die auf die Bühne gelegt werden. Raster halten ein Projekt mathematisch geordnet. In diesem Tutorial wird erläutert, wie Sie eine Rasterplatzierungstechnik in ein Projekt implementieren.

Mathematische Begründung

Wenn eine Kachel in einem Raster 50 Pixel breit ist, sollte der Abstand so ausgerichtet werden, dass jede Kachel 50 Pixel horizontal von der anderen entfernt ist. Der Grund dafür ist, dass sich die Kacheln nicht überlappen. Die Breite und Höhe der Kacheln sind in einem Rasterskript entscheidend.

Hinweis: In einem Raster hat jede Kachel normalerweise dieselbe Auflösung für die Anordnung und Organisation. Hinweis: Ein Raster ist normalerweise nicht in der Mitte der Bühne zentriert, sondern eine Ecke berührt es.

Programmieren

Das folgende Skript kann in das Kachel-Sprite implementiert werden, um die Welt, den Hintergrund usw. auf die Bühne zu stempeln. Nehmen Sie für das Skript an, dass jede Kachel 50 Pixel breit ist.

wenn die grüne flagge angeklickt
wiederhole fortlaufend
gehe zu x: ((((maus x-position) / [50]) gerundet) * [50]) y: ((((maus y-position) / [50]) gerundet) * [50]) //platziert die Figur möglichst nah an den mauszeiger
falls <Maustaste gedrückt?> ,dann
warte bis <nicht <Maustaste gedrückt?>>
hinterlasse Abdruck //platziert die Figur im Raster
end
end

Der Schlüsselaspekt der Skripterstellung ist der Block "Gehe zu x () y ()". Die darin enthaltenen mathematischen Funktionen platzieren die Kachel korrekt im Raster. Die Funktionsweise besteht darin, dass zuerst ermittelt wird, wie viele "50" vom Mauszeiger bis zur Bühnenmitte sind. es tut dies durch Abrunden. Wenn sich an der x-Position der Maus ungefähr 4 "50" befinden, muss diese "4" mit einer "50" multipliziert werden, um sie entsprechend dem nächsten "50" -Intervall zu platzieren.

Angenommen, die x-Position der Maus liegt zwischen 50 und 54 Pixel von der Bühnenmitte entfernt . Unabhängig davon, welche dieser Zahlen durch 50 geteilt und gerundet wird, ist sie in beiden Fällen gleich "1". Dann wird diese 1 mit "50" multipliziert, um die x-Koordinate der Kachel auf "50" zu setzen. Wenn sich die Maus "55" Pixeln nähert, wechselt die Kachel dann zu x: "100", da durch Abrunden der durch "50" geteilten Mausposition die nächste 50-Pixel-Intervallposition festgelegt wird.

Festlegen wo die Mitte vom Raster ist

Um eine Kachel in einem Raster visuell so auszurichten, dass sie in das imaginäre Raster passt, kann das Kostümzentrum ein Schlüsselaspekt sein. Angenommen, nach dem Lesen oben beträgt die Breite der Kachel 50 Pixel. Wenn die Kachel auf das x-Koordinatenraster von 50 verschoben wird, ist dies möglicherweise optisch nicht der Fall, obwohl sie sich technisch an dieser Koordinate befindet. Befindet sich das Kostüm der Kachel ganz in der Mitte, erstrecken sich 25 Pixel links von der "50" -Koordinate. In einem Raster berührt der Rand der Kachel den Rand des Rasters. Für diesen Fall gibt es zwei Lösungen. Das Kostümzentrum kann auf eine der Ecken eingestellt werden, oder das Skript kann geändert werden, um es korrekt zu platzieren:

wenn die grüne flagge angeklickt
wiederhole fortlaufend
gehe zu x: (((((maus x-position) / [50]) gerundet) * [50]) - [25]) y: (((((maus y-position) / [50]) gerundet) * [50]) - [25]) //platziert die Figur möglichst nah an den mauszeiger
falls <Maustaste gedrückt?> ,dann
warte bis <nicht <Maustaste gedrückt?>>
hinterlasse Abdruck //platziert die Figur im Raster
end
end

Diese Methode verschiebt die Kachel um die Hälfte ihrer Pixelbreite und platziert sie korrekt, bevor sie sich zwischen einer Gitterlinie befand.

Hinweis : Im obigen Skript kann die "- 25" in "+ 25" geändert werden. Es wirkt sich nur darauf aus, in welches benachbarte Gitterfeld es platziert wird.

Diamantgitter

Ein Gitter auf Diamantbasis ist weitaus komplexer als ein quadratisches Gitter. Dies liegt daran, dass beim Platzieren von Diamanten in einem Raster jede zweite Spalte / Zeile um die Hälfte der Dimension des Diamanten selbst verschoben wird. Obwohl dies verwirrend sein kann, kann das folgende Skript das Platzieren eines Objekts in der Raute des Gitters replizieren, die der Maus am nächsten liegt. Angenommen, die Breite und Höhe der Diamanten beträgt 24 Pixel (die Hälfte ist 12).

wenn die grüne flagge angeklickt
wiederhole fortlaufend
falls <<((((maus x-position) / [12]) gerundet) mod [2]) = [1]> und <((((maus y-position) / [12]) gerundet) mod [2]) = [1]>> ,dann
gehe zu x: ((((maus x-position) / [12]) gerundet) * [12]) y: ((((maus y-position) / [12]) gerundet) * [12])
sonst
gehe zu x: ((((maus x-position) / [24]) gerundet) * [24]) y: ((((maus y-position) / [24]) gerundet) * [24])
end
end

Original(auf englisch)