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

Tosh

Das Tosh-Interface
Die "turtle"

Tosh ist eine Scratch Modifikation die von blob8108 entwickelt wurde. Es gibt sie sowohl als kostenlose Browseranwendung (Chrome wird zur Ausführung empfohlen), als auch als kostenpflichtige Mac App. Tosh ist nur auf Englisch erhältlich.

Tosh im Vergleich zu Scratch

Tosh ist als textbasierende Alternative zu Scratch gedacht. Während Scratch auf Blöcken basiert, die zusammengesteckt werden müssen, werden die Befehle, die im Wortlaut den englischen Namen der Blöcke in Scratch entsprechen, eingetippt. Sehr hilfreich: Tosh verfügt über eine Autovervollständigung.

Auch das Userinterface unterscheidet sich von Scratch - die Bühne ist rechts oben, links werden Kostüme, Variablen oder Klänge verwaltet. In der Mitte befindet sich der Skriptbereich. Per default ist die erste Figur in Tosh eine "turtle" (auf deutsch "Schildkröte"), was an Snap! angelehnt ist. Davon abgesehen gibt es weitere Unterschiede im Interface.

Kompatibilität mit Scratch

Tosh-Dateien besitzen dasselbe Format wie Scratch2-Dateien - haben also auch die Endung ".sb2", wodurch sie mit Scratch 2.0 vollständig kompatibel ist. Speichert man ein Tosh-Projekt im Browser, so wird dieses mit dem Scratch 2 Offline Editor, den man heruntergeladen und installiert haben sollte, geöffnet, von wo aus man es dann an den Ort seiner Wahl speichern kann.

Die Tosh-Oberfläche verwendet den Phosphorus-Player zum Abspielen der Projekte. Das bedeutet dass Funktionen wie Grafikeffekte außer Durchsichtigkeit nicht funktionieren, dafür gibt es aber die Möglichkeit, Figuren vollständig in den Rand zu bewegen oder das Scratch-Klonlimit von 301 Klonen zu überschreiten.

Ein Tosh-Projekt kann als Scratch-2.0 Projekt (.sb2) heruntergeladen werden und dann wieder in ein Scratch-Projekt importiert werden. Dort hat das Programm wieder das normale Verhalten von Scratch.

Syntax

Hinweis: In den folgenden Beispielen werden einige Blöcke durch das Scratchblocks-Plugin falsch dargestellt.

Eine ausführliche Anleitung zu korrektem Syntax findet sich unter http://tosh.tjvr.org/help/guide/ . Tosh hat außerdem ein Feature, welches Syntaxfehler findet und markiert.

Anführungzeichen

Text und die Menüoptionen, bei denen Nachrichten, Kostüm-, Klang- und Figurnamen eingegeben werden, müssen in Anführungszeichen gesetzt werden.

Hier ein Beispiel:

say "Hallo Welt!"
broadcast "Starte Spiel"
switch costume to "Viereck"
play sound "Plop"
point towards "Figur1"

Ergibt:

sage [Hallo Welt!]
sende [Starte Spiel v] an alle
wechsle zu Kostüm [Viereck v]
spiele Klang [Plop v]
drehe dich zu [Figur1 v]

Bedingungen

Befehle, die in Scratch hexagonale Blöcke, also Wahrheitsblöcke, sind müssen mit < > umrandet werden.

Zum Beispiel:

if <mouse down? and touching "Katze"?> or score = 0 then

end

Ergibt:

falls <<<Maustaste gedrückt?> und <wird [Katze v] berührt?>> oder <(Punkte) = (0)>> dann
  
Ende

Operatoren

Verschachtelte Operatoren, die nicht in ihrer natürlichen mathematischen Reihenfolge ausgeführt werden sollen, müssen mit Klammern gekennzeichnet werden.

Ein Beispiel:

say 10 + sin of 90 + 15
say 10 + sin of (90 + 15)

Ergibt:

sage (((10) + ([sin v] von (90))) + (15))
sage ((10) + ([sin v] von ((90) + (15)))

Wertblöcke

Wertblöcke müssen nur dann mit Klammern umgeben werden, wenn sie in ein Menü oder einen eigenen Block eingefügt werden. Einen Ausnahmefall bildet der Verbinde()()-Block - hier müssen eingefügte Wertblöcke zwingend mit Klammern ungeben werden. Auch der Listenblock () (Listen Block) muss in Klammern gesetzt werden.

Das folgende Beispiel soll dies verdeutlichen:

say x position for timer secs
broadcast (join "Nachricht-" (Punktestand))
say (Obst)

Ergibt:

sage (X Position) für (Stoppuhr) Sek.
sende (verbinde [Nachricht-](Punktestand)) an alle
sage (Obst::list)

Eigene Blöcke

Bei der Defitition von eigenen Blöcken werden Parameter wie folgt angegeben:

  • < > — umrandet einen Parameter, der den Wert "true" (wahr) oder "false" (falsch) enthält
  • ( ) — umrandet einen Parameter, der eine Zahl enthält
  • [ ] — umrandet einen Parameter, der Text enthält

Folgendes ist ein Beispiel für die Definition eines eigenen Blockes, der alle drei Werttypen als Parameter hat:

define springe (Höhe) [Nachricht] wütend: <wütend?>

Ergibt:

Definiere springe (Höhe) [Nachricht] wütend: <wütend?>

Weblinks



Code zum Einbinden ins Forum:
[wiki=de:Tosh]Tosh[/wiki]