Aus Das deutschsprachige Scratch-Wiki
Ein Unterprogramm ist ein Teil eines Scratch-Projekts, das von Skripten der Figur aufgerufen werden kann, um eine Aufgabe zu übernehmen. Nach der Ausführung des Unterprogramms wird das aufrufende Skript weiter ausgeführt. Mit Unterprogrammen kann man die Scratch-Blöcke somit um weitere Funktionen erweitern. Ab Scratch 2.0 kannst du Unterprogramme mit den Weiteren Blöcken erstellen und verwenden. Man spricht daher auch von benutzerdefinierten Blöcken.
Es gibt folgende verschiedene Möglichkeiten, die in diesem Artikel näher erläutert werden:
- Einskriptig mit Parameter
- Mehrskriptig ohne Parameter
- Mehrskriptig mit Parameter
Einskriptig mit Parameter
Diese Methode ist die einfachste Methode. Allerdings hast du im Unterprogramm nur ein Skript (in der Informatik "thread" genannt) zur Verfügung.
Dazu wechselst du erstmal zur Blockkategorie "Weitere Blöcke". Dort klickst du auf "Block erstellen". Dann kannst du bestimmen, wie der Block aussehen soll, also wie er heißt und welche Lücken für andere Blöcke (Parameter) dort sein sollen.
Wenn du das getan hast erscheint ein lila Block "Definiere blablub". An diesen kannst du ganz normal Blöcke anhängen. Diese werden immer ausgeführt, wenn du den Block "blablub" verwendest.
Zum Beispiel soll die Katze sich zu einem bestimmten Ort bewegen. Dazu erstellen wir den Block "Katze zu x: (x) und y: (y) bewegen".
An den "Definiere"-Block hängen wir "gehe zu x: (), y:()". In die Lücken ziehen wir die kleinen Blöcke (x) und (y), die wir aus dem "Definiere"-Block rausnehmen.
definiere Katze zu x: (x) y: (y) bewegen gehe zu x: (x) y: (y) Katze zu x: (100) y: (50) bewegen::custom
Zugegeben, dieser Block ist relativ unnütz, weil wir sowieso den "gehe zu ()"-Block haben, ist aber auch nur ein Beispiel.
Mehrskriptig ohne Parameter
Bei mehrskriptigen Unterprogrammen laufen mehrere Skripte gleichzeitig, die von einem einzigen Block aus gestartet werden. Für diese Methode brauchen wir einfach nur die Nachrichten-Blöcke. Das Unterprogramm wird durch einen "Sende (Unterprogramm)"-Block aufgerufen. Die Skripte kommen unter "Wenn ich (Unterprogramm) empfange"-Blöcke.
wenn ich [Unterprogramm v] empfange wiederhole fortlaufend ... end wenn ich [Unterprogramm v] empfange warte bis <... :: grey> wenn ich [Unterprogramm v] empfange sage (...) sende [Unterprogramm v] an alle
Mehrskriptig mit Parameter
Diese Methode ist die umfangreichste von den dreien. Sie funktioniert mit Elementen aus den beiden anderen. Man erstellt einen Block, in dem die Parameter vorhanden sind. Statt die Skripte direkt an den "Definiere"-Block zu hängen, überträgt man zuerst die Parameter in Variablen. Dann triggert ("auslösen") man die Skripte mit einem "sende () an alle"-Block.
definiere spiele Akkord (1) (2) (3) setze [Ton 1 v] auf (1 :: custom) setze [Ton 2 v] auf (2 :: custom) setze [Ton 3 v] auf (3 :: custom) sende [Spiele Akkord v] an alle wenn ich [Spiele Akkord v] empfange::hat spiele Ton (Ton 1) für (0.5) Schläge::extension wenn ich [Spiele Akkord v] empfange::hat spiele Ton (Ton 2) für (0.5) Schläge::extension wenn ich [Spiele Akkord v] empfange::hat spiele Ton (Ton 3) für (0.5) Schläge::extension spiele Akkord (60) (64) (67)::custom
Siehe auch
[wiki=de:Unterprogramme]Unterprogramme[/wiki]