Wir nutzen Cookies, um das allgemeine Benutzerelebnis zu verbessern. Mit der Nutzung unseres Wikis stimmst du der Nutzung von Cookies zu.

Liste von Block-Workarounds

Stub.png Dieser Artikel (oder Abschnitt) ist noch sehr kurz (oder unvollständig!). Hilf mit, ihn ausführlicher zu gestalten, indem du Informationen, Bildmaterial oder Texte hinzufügst.


Dieser Artikel umfasst eine Liste von Block-Workarounds, also Alternativen zu Scratch-Blöcken, die die gleiche oder eine ähnliche Auswirkung wie das Original haben und mit den vorhandenen Blöcken definiert werden können.

Bewegung

drehe dich () um () Grad

drehe dich @turnRight um (15) Grad

drehe dich @turnLeft um (15) Grad

Das Drehen und die Richtung von Figuren stehen im Zusammenhang miteinander, weswegen sie durch Änderung ihrer Richtung gedreht werden.

setze Richtung auf ((Richtung) + (15))

setze Richtung auf ((Richtung) - (15))

gehe zu x: () y: ()

gehe zu x: (0) y: (0)

Dieser Scratch-Block wird sehr häufig verwendet, da er die genaue Position einer Figur festlegt. Stattdessen kann man aber auch die x- und die y-Position einzeln bestimmen.

setze x auf (0)
setze y auf (0)

Alternativ kann man die Figur in 0 Sekunden zu der gewünschten Position gleiten lassen.

gleite in (0) Sek. zu x: (0) y: (0)

gehe zu ()

gehe zu [Mauszeiger v]

gehe zu [Zufallsposition v]

gehe zu [Figur v]

Diese Optionen gehen alle auf einen einzigen Block zurück, dessen Funktionen man leicht mit anderen Blöcken erzielen kann.

gehe zu x: (Maus x-Position) y: (Maus y-Position)

gehe zu x: (Zufallszahl von (-240) bis (240)) y: (Zufallszahl von (-180) bis (180))

gehe zu x: ([x-Position v] von [Figur v]) y: ([y-Position v] von [Figur v])

ändere () um ()

ändere x um (10)

ändere y um (10)

Diese Blöcke erhöhen oder verringern die x- oder y-Position einer Figur, je nachdem, ob der Änderungswert positiv oder negativ ist.

setze x auf ((x-Position) + (10))

setze y auf ((y-Position) + (10))

setze () auf ()

setze x auf (0)

setze y auf (0)

Diese Blöcke bestimmen entweder die horizontale x-Position oder die vertikale y-Position. Er wird verwendet, wenn nur eine Änderung von den genannten Möglichkeiten erfolgen soll.

gehe zu x: (0) y: (y-Position)

gehe zu x: (x-Position) y: (0)

Aussehen

() () für () Sek.

sage [Hallo!] für (2) Sek.

denke [Hmm…] für (2) Sek.

Man kann diese Scratch-Blöcke umgehen, indem man den Text der Sprech- oder Denkblase bestimmt, eine bestimmte Zeit lang wartet und anschließend den Inhalt der Sprechblase leert.

sage [Hallo!]
warte (2) Sek.
sage []

denke [Hmm…]
warte (2) Sek.
sage []

() ()

sage [Hallo!]

denke [Hmm…]

Wie lange die Sprechblase mit diesem Text sichtbar sein soll, ist nicht bestimmt, weswegen hier folgendes Workaround verwendbar ist.

sage [Hallo!] für (verbinde [Infinity] []) Sek.

denke [Hmm…] für (verbinde [Infinity] []) Sek.

verstecke dich

verstecke dich

Dieser Block lässt eine Figur unsichtbar werden, was auch erreicht wird, wenn man die Transparenz auf das Maximum setzt. Hierbei bleibt die Figur allerdings klickbar, so dass sie eventuell andere Figuren überdeckt unddiese so nicht angeklickt werden können. Außerdem werden sie nach Stoppen des Programms wieder sichtbar.

setze [Durchsichtigkeit v]-Effekt auf (100)%

nächstes ()

nächstes Kostüm

nächstes Bühnenbild

Die Figur wechselt zu ihrem nächsten Kostüm oder die Bühne zu ihrem nächsten Bühnenbild, was man auch folgendermaßen definieren kann.

wechsle zu Kostüm ((Kostümnummer) + (1))

wechsle zu Bühnenbild ((Bühnenbildnummer) + (1))

nächstes Bühnenbild

nächstes Bühnenbild

wechsle zu Bühnenbild [nächstes Bühnenbild v]

Für dieses Workaround kann man das gleiche Prinzip anwenden wie bei dem Wechsel zum nächsten Kostüm.

wechsle zu Bühnenbild ((Bühnenbildnummer) + (1))

wechsle zu Bühnenbild ()

wechsle zu Bühnenbild [Bühnenbild v]

Um diesen Block zu umgehen, kann man stattdessen auch so lange zum nächsten Bühnenbild wechseln, bis man das richtige erreicht hat.

wiederhole bis <(Bühnenbildname) = [Bühnenbild]>
nächstes Bühnenbild
end

schalte Grafikeffekte aus

schalte Grafikeffekte aus

Dieser Block schaltet alle sieben zur Verfügung stehenden Grafikeffekte aus, was man dementsprechend auch in sieben Blöcken machen kann.

setze [Farbe v]-Effekt auf (0)
setze [Fischauge v]-Effekt auf (0)
setze [Wirbel v]-Effekt auf (0)
setze [Pixel v]-Effekt auf (0)
setze [Mosaik v]-Effekt auf (0)
setze [Helligkeit v]-Effekt auf (0)
setze [Durchsichtigkeit v]-Effekt auf (0)

ändere Größe um ()

ändere Größe um (10)

Anstatt die Figur direkt um einen bestimmten Wert zu ändern, kann die Figurengröße auch auf die Summe der aktuellen Größe und der Differenz gesetzt werden.

setze Größe auf ((Größe) + (10))%

Malstift

hinterlasse Abdruck

hinterlasse Abdruck

Dieser Block lässt durch den Malstift einen Abdruck der Figur mit dem momentanen Aussehen hinterlassen. Also kann stattdessen auch ein Klon erstellt werden.

erzeuge Klon von [mir selbst v]

Daten

ändere () um ()

ändere [Variable v] um (1)

Um diesen Block zu umgehen, kann man den momentanen Variablenwert mit dem gewünschten Änderungswert addieren und setzt die Variable auf diese Summe.

setze [Variable v] auf ((Variable) + (1))

füge () zu () hinzu

füge [Ding] zu [Liste v] hinzu

Dieser Block fügt der bestimmten Liste ein weiteres Element hinzu, das sich unter allen anderen Elementen dieser Liste befindet. Diese Funktion kann man auch anders erreichen, da man auf die Länge der Liste zugreifen kann.

füge [Ding] als ((Länge von [Liste v]) + (1)) in [Liste v] ein

ersetze Element () von () durch ()

ersetze Element (1 v) von [Liste v] durch [Ding]

Möchte man ein Element ersetzen, kann man alternativ das Element auch löschen und dort ein neues einfügen.

lösche (1 v) aus [Liste v]
füge [Ding] als (1 v) in [Liste v] ein

Ereignisse

Wenn () > ()

Wenn [Lautstärke v] > (10)

Wenn [Stoppuhr v] > (10)

Wenn [Videobewegung v] > (10)

Dieser Block prüft, ob der im Dropdown-Menü festgelegte Wert größer ist als der andere.

Wenn @greenFlag angeklickt
wiederhole fortlaufend
warte bis <(Lautstärke) > [10]>
. . .
end

Wenn @greenFlag angeklickt
wiederhole fortlaufend
warte bis <(Stoppuhr) > [10]>
. . .
end

Wenn @greenFlag angeklickt
wiederhole fortlaufend
warte bis <(Video [Bewegung v] auf [diese Figur v]) > [10]>
. . .
end

Steuerung

wiederhole fortlaufend

wiederhole fortlaufend
end

Diese Wiederholungsschleife wiederholt ihren Inhalt so lange, bis das Projekt gestoppt wird. Dies kann durch das Klicken des Roten Stoppschildes oder durch den Stoppe-Block zustande kommen. Diese Schleife kann durch eine Wiederhole-Mal-Schleife, in dessen Input, das die Anzahl der Schleifendurchläufe bestimmt, Infinity gesetzt wird.

wiederhole (verbinde [Infinity][]) mal
. . .
end

Auch kann stattdessen eine Wiederhole-Bis-Schleife benutzt werden, dessen boolescher Inhalt stets false zurückgibt. Zwar kann dies durch einen Wahrheitsblock erreicht werden, dessen Bedingung nie wahr ist, jedoch genügt auch ein leeres boolesches Input, da für ein solches immer false gewertet wird.

wiederhole bis <>
. . .
end

falls () dann

falls <> dann
end

Dieser Klammerblock führt seinen Inhalt nur aus, wenn seine Bedingung wahr ist. Ist dem nicht so, wird das Skript ohne den Klammerninhalt fortgesetzt. Also kann stattdessen auch die Falls-Sonst-Klammer verwendet werden, bei dem zwar der obere Teil mit den gewollten Blöcken gefüllt ist, der untere aber leer ist.

falls <> dann
. . .
sonst
end

falls () dann () sonst

falls <> dann
sonst
end

Welche der bestimmten Aktionen in dieser Klammer durchgeführt werden, hängt davon ab, ob die festgelegte Bedingung wahr oder falsch ist. Diesen Block kann man also auch mit zwei Falls-Dann-Klammern umgehen.

falls <> dann
. . .
end
falls <nicht <>> dann
. . .
end

warte bis ()

warte bis <>

Dieser Block hält das Skript an, bis die festgelegte Bedingung eintrifft. Stattdessen kann man auch eine Wiederhole-Bis-Schleife verwenden, in die außer dem booleschen Inhalt nichts eingefügt wird, denn auf diese Weise wird so lange nichts wiederholt und das Skript dadurch pausiert, bis true zurückgegeben wird.

wiederhole bis <>

end

wiederhole bis ()

wiederhole bis <>
end

Auch dieser Steuerungsblock lässt sich umgehen, allerdings nur durch Rekursion.

Definiere Schleife
falls <nicht <>> dann
. . .
Schleife
end

Fühlen

Entfernung von ()

(Entfernung von [Mauszeiger v])

(Entfernung von [Figur v])

Durch den Satz des Pythagoras kann man diesen Block umgehen.

([Wurzel v] von (((([x-Position v] von [Mauszeiger v]) - (x-Position)) * (([x-Position v] von [Mauszeiger v]) - (x-Position))) + ((([y-Position v] von [Mauszeiger v]) - (y-Position)) * (([y-Position v] von [Mauszeiger v]) - (y-Position)))))

([Wurzel v] von (((([x-Position v] von [Figur v]) - (x-Position)) * (([x-Position v] von [Figur v]) - (x-Position))) + ((([y-Position v] von [Figur v]) - (y-Position)) * (([y-Position v] von [Figur v]) - (y-Position)))))

Operatoren

() < ()

<[] < []>

Dieser ist ein boolescher Block, der true zurückgibt, wenn der erste Wert größer ist als der zweite. Logischerweise gibt er false zurück, wenn der erste Wert kleiner als der zweite oder beide Werte gleich groß sind.

<nicht <<[] > []> oder <[] = []>>

() = ()

<[] = []>

Wenn der erste Wert nicht kleiner und auch nicht größer ist als der zweite, sind sie gleich.

<nicht <<[] < []> oder <[] > []>>

() > ()

<[] > []>

Der erste Wert ist größer als der zweite, wenn er nicht kleiner ist als dieser und beide Werte nicht gleich sind.

<nicht <<[] < []> oder <[] = []>>

() und ()

<<> und <>>

Dieser Wahrheitsblock prüft, ob beide Bedingungen zutreffen und gibt in diesem Fall true zurück. Wenn dem so sein soll, darf keine von ihnen unwahr sein.

<nicht <<nicht <>> oder <nicht <>>>

Wenn zwei Falls-Klammern ineinander verschachtelt werden, hat dies die gleiche Auswirkung.

falls <> dann
falls <> dann
. . .
end
end

() oder ()

<<> oder <>>

Dieser Block gibt true zurück, wenn die erste, die zweite oder beide Bedingungen der Wahrheit entsprechen. Trifft dies jedoch auf beide nicht zu, gibt er false zurück.

<nicht <<nicht <>> und <nicht <>>>

Das folgende Workaround bezweckt ebenfalls das Gleiche.

falls <> dann
. . .
sonst
falls <> dann
. . .
end
end

nicht ()

<nicht <>>

Ist die Bedingung eines booleschen Blocks unwahr, gibt er false zurück.

<<> = [false]>

Stattdessen kann man auch eine Falls-Sonst-Klammer benutzen, bei der man nur den unteren Teil verwendet und den oberen leer lässt.

falls <> dann
sonst
. . .
end

Weitere Blöcke

()

benutzerdefinierter Block::custom

Seit Scratch 2.0 ist es möglich, eigene Blöcke zu erstellen. Hierbei lassen sich der neue Block mit dem Senden einer Nachricht mit Wartezeit sowie der Definitionsblock mit dem Nachricht-Kopfblock vergleichen.

sende [Nachricht v] an alle und warte

schalte Motor für () Sek. an

schalte [Motor v] für (1) Sekunden an

Durch diesen Block wird der Motor an- und nach einer bestimmten Zeit wieder ausgeschaltet. Dies lässt sich mithilfe des Warte-Blocks leicht umgehen.

schalte [Motor v] an
warte (1) Sek.
schalte [Motor v] aus

schalte Motor aus

schalte [Motor v] aus

Dieser Block lässt sich umgehen, indem der Motor für 0 Sekunden angeschaltet wird, denn danach wird er automatisch ausgeschaltet.

schalte [Motor v] für (0) Sekunden an

Stattdessen kann auch die Motorstärke auf 0 gesetzt werden.

setze Leistung von [Motor v] auf (0)



Code zum Einbinden ins Forum:
[wiki=de:Liste von Block-Workarounds]Liste von Block-Workarounds[/wiki]