Bedingter Inhalt
Ein Block Bedingter Inhalt (Typ CONDITIONAL) lässt eine Lektion sich an die lernende Person anpassen. Er fasst Blöcke in Zweigen zusammen, und jeder Zweig hat eine Bedingung darüber, was die lernende Person in einer Simulation desselben Inhalts getan hat: wie viele Punkte sie erreicht hat, bei welchem Ende sie gelandet ist, welche Variable die Simulation führt. Die lernende Person sieht die Blöcke des ersten Zweigs, dessen Bedingung erfüllt ist; ist keiner erfüllt, sieht sie die Blöcke des letzten Zweigs, Sonst.
Typische Einsätze: ein Vertiefungstext nur für alle, die schlecht abgeschnitten haben, ein Lob für alle, die das beste Ende erreicht haben, ein anderer nächster Schritt je nach Entscheidung.
Was Sie zuerst brauchen
Bedingungen lesen Simulationen, der Inhalt braucht also mindestens eine:
- Einen Block Code einbetten mit einem hochgeladenen Paket, das Fortschritt oder eine Note sendet.
- Eine Simulationskennung an diesem Block, im Inhalt eindeutig (Kleinbuchstaben, Ziffern und
_, beginnend mit einem Buchstaben, zum Beispielsim_u1). Die Bedingung bezieht sich über diese Kennung auf die Simulation. - Diese Simulation muss außerhalb jedes Zweigs liegen. Eine Simulation innerhalb eines Zweigs lässt sich nicht benennen und auch nicht als Bewertet markieren (sie wäre ausgeblendet und würde nie abgeschlossen).
Im Editor aufbauen
Den Block anlegen
Im Einfügebereich steht Bedingter Inhalt in der Familie Struktur. Er entsteht mit einem leeren Bedingungszweig, der erst erfüllt sein kann, wenn Sie seine Bedingung schreiben, und dem Zweig Sonst. Er wird weder am Einfügepunkt eines Zweigs angeboten (es gibt nur eine Ebene) noch im Prüfungs- oder Bank-Editor.
Der Rahmen und seine Zweige
Auf der Arbeitsfläche ist der Block ein Rahmen. Oben stehen das Etikett Bedingter Inhalt und, Zweig für Zweig, die Bedingung in Worten („Zweig 1: wird angezeigt, wenn sim_u1.trust größer oder gleich 3 ist“). Darunter liegt ein Bereich pro Zweig: die Bedingungszweige in ihrer Reihenfolge und Sonst am Ende, jeweils mit Etikett (Zweig 1, Zweig 2 …, Sonst) und seinen Blöcken.
- Zweig hinzufügen am Fuß des Rahmens fügt einen Bedingungszweig hinzu (höchstens 10).
- Die Kopfzeile jedes Bedingungszweigs hat Schaltflächen, um ihn nach oben und nach unten zu verschieben und ihn zu entfernen. Das Umordnen ändert, welcher Zweig zuerst geprüft wird; kein Block wechselt den Zweig.
- Ein leerer Zweig wird einfach entfernt. Enthält er Blöcke, fragt der Editor: Mit seinen Bausteinen entfernen oder Bausteine behalten – sie bleiben direkt hinter dem bedingten Inhalt in der Lektion und sind immer sichtbar (sie wechseln nie in einen anderen Zweig).
- Ein leerer Zweig zeigt „Dieser Zweig hat noch keine Bausteine“ und die Schaltfläche Baustein hinzufügen. Jeder Zweig hat außerdem seinen eigenen Einfügepunkt.
Blöcke hinein- und herausbewegen
- Per Ziehen: Legen Sie einen Block auf einem Block eines Zweigs ab, um ihn an diese Stelle zu setzen, oder auf dem Bereich eines Zweigs (auch eines leeren), um ihn ans Ende zu setzen. Wenn Sie den Rahmen ziehen, bewegt sich der bedingte Inhalt mit allen Zweigen.
- Ohne Ziehen (per Tastatur oder auf schmalen Bildschirmen): In der Leiste des Blocks listet Verschieben nach… jeden Zweig jedes bedingten Inhalts der Lektion (mit Nummer, wenn es mehrere gibt) und, aus einem Zweig heraus, Aus dem bedingten Inhalt heraus, das den Block direkt dahinter setzt. Der Block kommt ans Ende des Zweigs.
- Nach oben und Nach unten verschieben einen Block innerhalb seines Zweigs. Die Blöcke eines Zweigs werden pro Zweig nummeriert: „Aktionen für Baustein 2 in Zweig 1“.
Löschen, duplizieren und Vorlagen
- Baustein löschen bei einem bedingten Inhalt mit Blöcken fragt: Mit seinen Bausteinen löschen oder Bausteine behalten (sie bleiben in der Lektion, an ihrer Stelle und immer sichtbar). Beides lässt sich mit Rückgängig zurücknehmen.
- Baustein duplizieren dupliziert den bedingten Inhalt mit allen Zweigen und Blöcken. Ein innerhalb eines Zweigs duplizierter Block bleibt in diesem Zweig.
- Wenn Sie Blöcke für eine Vorlage oder für die KI auswählen, nimmt der bedingte Inhalt seine Blöcke mit; ein Block eines Zweigs lässt sich nicht allein auswählen. Eine aus einem Zweig eingefügte Vorlage kommt in diesen Zweig.
Die Bedingung jedes Zweigs
Baustein bearbeiten öffnet das Panel des bedingten Inhalts mit einem Abschnitt pro Bedingungszweig:
- Das Feld Bedingung von Zweig N, in das Sie die Bedingung schreiben (siehe „Eine Bedingung schreiben“ weiter unten). Ist sie nicht verständlich, erscheinen darunter der Grund und das Zeichen, an dem das Lesen stoppte, etwa „Unerwartetes „)“ bei Zeichen 12“; sonst die Bedingung in Worten, dieselbe wie in der Kopfzeile des Rahmens.
- Die Warnungen dieses Zweigs (siehe „Warnungen“ unten).
- Ein Assistent, der sie für Sie schreibt. Wählen Sie die Simulation (die dieser Lektion und die der anderen Lektionen des Inhalts, die außerhalb aller Zweige liegen), die Variable (die das Paket deklariert, mit ihrem Typ, und die aus dem Ergebnis:
grade,score,maxScore,endingundkind), den Vergleich und den Wert (ein Kontrollkästchen für wahr oder falsch, eine Zahl, ein Text fürendingund eine Liste mitgood,mixedundbadfürkind) und klicken Sie auf Zur Bedingung hinzufügen. Steht schon etwas da, wählen Sie vorher, ob es mit und (&&, beide müssen erfüllt sein) oder oder (||, eine genügt) verbunden wird. Deklariert das Paket seine Variablen nicht, können Sie den Namen von Hand eingeben, mit dem Hinweis, dass er sich nicht prüfen lässt. Der Assistent schreibt den Vergleich an die Stelle des Cursors im Feld (oder anstelle des markierten Texts), lässt den Cursor direkt dahinter stehen und gibt den Fokus zurück; hatte das Feld noch keinen Cursor, hängt er ihn ans Ende an.
Warnungen
Was einen Zweig nie anzeigen oder eine Simulation nicht funktionieren ließe, erscheint als Warnung im Panel und unter Prüfungen, mit dem Etikett Inhalt. Warnungen verhindern nie das Speichern, Exportieren oder Teilen:
- kein Zweig hat Blöcke, auch „Sonst“ nicht;
- ein Zweig hat keine Bedingung oder eine, die nicht verständlich ist;
- eine Bedingung liest eine Simulation, die es im Inhalt nicht gibt (passiert beim Kopieren zwischen Inhalten), oder eine Variable, die ihr Paket nicht deklariert;
- eine Bedingung liest Variablen einer Simulation, deren Paket seinen Stand (
state) nicht sendet; - eine Bedingung verwendet eine Variable mit einem Typ, der diese Operation nicht zulässt, gemäß dem, was das Paket deklariert (zum Beispiel eine Wahr/Falsch-Variable mit einer Zahl vergleichen);
- die Simulation steht in der Lesereihenfolge nach dem bedingten Inhalt: Wenn die lernende Person dort ankommt, hat sie sie noch nicht gespielt;
- eine bewertete Simulation steht in einem Zweig, oder eine Simulation in einem Zweig wird von einer Bedingung gelesen.
Ein über MCP verbundener Assistent erhält dieselben Warnungen in warnings, wenn er den Block anlegt, ändert oder Blöcke verschiebt.
Eine Bedingung schreiben
Eine Bedingung ist ein kurzer Ausdruck, der wahr oder falsch ist. Sie liest Variablen, geschrieben als simulation.name:
sim_u1.reused
sim_u1.trust >= 3
sim_u1.kind == "good" && sim_u1.grade >= 70
!(sim_u1.reused) || sim_u2.ending == "agreement"
Variablen
| Name | Was er enthält | Typ |
|---|---|---|
grade | Die vom Paket gesendete Note (0–100) | Zahl |
score | Die vom Paket gesendete Punktzahl | Zahl |
maxScore | Die maximale Punktzahl | Zahl |
ending | Die Kennung des erreichten Endes | Text |
kind | good, mixed oder bad | Text |
| jeder andere Name | Eine Variable, die das Paket in seinem Zustand führt (zum Beispiel trust) | Zahl oder Wahr/Falsch |
grade, score, maxScore, ending und kind sind reserviert: Sie lesen immer das letzte vom Paket gesendete Ergebnis. Die übrigen Namen sind die Variablen, die das Paket in seiner slxd-embed.json deklariert; fragen Sie die Person, die das Paket gebaut hat, welche es anbietet.
Operatoren
| Was | Wie | Beispiel |
|---|---|---|
| Zahlen vergleichen | < <= > >= | sim_u1.trust >= 3 |
| Gleich / ungleich | == != | sim_u1.kind != "bad" |
| Und | && | sim_u1.trust >= 3 && sim_u1.reused |
| Oder | || | sim_u1.kind == "good" || sim_u1.grade > 80 |
| Nicht | ! | !sim_u1.reused |
| Addieren / subtrahieren | + - | sim_u1.score + sim_u2.score >= 10 |
| Gruppieren | ( ) | (a.x || b.y) && c.z |
- Zahlen werden mit optionalem Dezimalpunkt geschrieben (
3,2.5), ohne Exponent. Negative Zahlen nutzen-. - Texte stehen in doppelten Anführungszeichen:
"good". Darin sind nur\"und\\besonders, und es gibt keine Zeilenumbrüche. trueundfalsestehen als Werte zur Verfügung.- Es gibt keine Umwandlungen: Eine Zahl lässt sich nicht mit einem Text vergleichen, und ein Text wird nur mit einem anderen Text verglichen, mit
==oder!=.sim_u1.trust == "3"ist ein Fehler. - Vergleiche lassen sich nicht verketten:
1 < sim_u1.trust < 3ist ein Fehler; schreiben Siesim_u1.trust > 1 && sim_u1.trust < 3. &&und||brechen ab, sobald die Antwort feststeht, wie in JavaScript.- Der gesamte Ausdruck muss wahr oder falsch sein.
Grenzen
Eine Bedingung ist höchstens 500 Zeichen lang. Schreiben Sie etwas Unverständliches, nennt der Editor das Zeichen, an dem er stehen geblieben ist.
Mehrere Zweige und „Sonst“
Ein Block Bedingter Inhalt kann bis zu 10 Zweige mit Bedingung haben, dazu den Zweig Sonst, den es immer gibt und der keine Bedingung hat. Die Zweige werden der Reihe nach geprüft, und der erste mit erfüllter Bedingung gewinnt; setzen Sie daher den spezifischsten zuerst:
sim_u1.kind == "good" && sim_u1.trust >= 3→ Lobsim_u1.kind == "good"→ kurzes positives Feedback- Sonst → Vertiefung
Blöcke in einem Zweig sind gewöhnliche Blöcke: beliebigen Typs und in beliebiger Anzahl. Regeln, die man im Kopf behalten sollte:
- Nur eine Ebene: Ein Block Bedingter Inhalt darf nicht im Zweig eines anderen liegen.
- Eine Bedingung kann bis zu 8 verschiedene Simulationen benennen.
- Ein Zweig darf leer sein.
Nie in Prüfungen oder Fragenbanken. Bedingter Inhalt gibt es nur in normalen Lektionen. Der Editor bietet ihn in Prüfungen und Banken nicht an, eine Lektion, die ihn enthält, lässt sich weder in eine Prüfung umwandeln noch in eine Bank verschieben, und über MCP gilt dasselbe.
Was die lernende Person sieht
Die lernende Person sieht nur die Blöcke des Zweigs, der gilt, an ihrem Platz, als gäbe es den Block Bedingter Inhalt nicht. Die anderen Zweige existieren für sie nicht: Sie zählen nicht für den Fortschritt, halten sie nicht auf und senden kein xAPI.
Einige Details:
- Ein Zweig kann nur erfüllt sein, wenn die Simulationen, die er liest, beendet sind. Eine Simulation ist beendet, wenn ihr Paket meldet, dass es fertig ist (
completeoder ein Endzustand). Bis dahin sind diese Bedingungen falsch, und die lernende Person sieht den nächsten Zweig oder Sonst. Fehlt eine Variable noch oder hat sie einen anderen Typ, ist diese Bedingung ebenfalls falsch. - Die Auswertung erfolgt live. Spielt die lernende Person eine Simulation erneut und ändert sich das Ergebnis, aktualisiert sich die Lektion. Screenreader erhalten eine höfliche Ansage, dass sich der Inhalt geändert hat; der Fokus bewegt sich nicht.
- Bereits Erledigtes bleibt erhalten. Ändert sich der sichtbare Zweig oberhalb der Stelle, an der sich die lernende Person befindet, muss eine ausstehende Sperre im neuen Zweig weiterhin erfüllt werden, und bereits Abgeschlossenes bleibt abgeschlossen.
- Bei der Rückkehr (SCORM): Hat die lernende Person die Lektion in einem Zweig verlassen, der nicht mehr gilt, setzt sie am Anfang des geltenden Zweigs fort oder beim nächsten Block, falls dieser leer ist.
- Die Variablen des Pakets werden mit dem Fortschritt der lernenden Person gespeichert. Passt der Fortschritt nicht in den Platz des LMS, schützt Creator die Variablen, die Bedingungen lesen.
Vorschau
Autorinnen und Autoren müssen alle Zweige sehen, nicht nur den, der zu ihrem Testlauf passt.
- In der Vorschau, in einer Version (Snapshot) und im Review hat die Leiste den Schalter Alle Zweige anzeigen. Ist er an, zeigt der Player alle Zweige nacheinander in Lesereihenfolge: die Zweige des bedingten Blocks der Reihe nach, dann Sonst, ohne Ansage. Im Review schaltet das Öffnen eines Kommentars zu einer Lektion mit bedingtem Inhalt ihn ein.
- Nur in dieser Ansicht steht vor jedem Zweig ein Etikett mit der Zusammenfassung seiner Bedingung in Worten („Zweig 1: wird angezeigt, wenn sim_u1.trust mindestens 3 ist“) oder Sonst, und der Zweig, den die lernende Person gerade sehen würde, trägt eine weitere Zeile, die das sagt. Die lernende Person sieht diese Etiketten nie.
- Freigabelinks haben den Schalter nicht: Sie zeigen, was die lernende Person sieht.
Das PDF ist Nachschlagematerial ohne lernende Person und druckt daher alle Zweige in Lesereihenfolge. Vor dem ersten Block jedes Zweigs steht die Beschriftung „Wird angezeigt, wenn: …“ mit der Bedingung in Worten, in der Sprache des Kurses (zum Beispiel sim.trust größer oder gleich 3 ist und sim.reused wahr ist; lässt sie sich nicht lesen, genau so, wie Sie sie geschrieben haben), und „Wird angezeigt, wenn keine der obigen Bedingungen erfüllt ist“ vor Sonst. Leere Zweige werden nicht beschriftet.
Fehler in Bedingungen verstehen
Das Panel markiert eine nicht verständliche Bedingung mit dem Grund und dem Zeichen, an dem das Lesen stoppte, und warnt vor einer Simulation, die es im Inhalt nicht gibt. Schreibt ein Assistent den Block über MCP, wird die gesamte Bedingung zusätzlich anhand der obigen Regeln geprüft, bevor etwas gespeichert wird. Typische Fehler:
| Problem | Beispiel | Lösung |
|---|---|---|
| Text mit Zahl verglichen | sim_u1.ending == 3 | sim_u1.ending == "agreement" |
| Zahl mit Text verglichen | sim_u1.trust == "3" | sim_u1.trust == 3 |
| Wahr/Falsch-Variable mit einer Zahl verglichen | sim_u1.reused == 3 | sim_u1.reused |
!, && oder || auf einer Zahl, oder Wahr und Falsch ordnen | !sim_u1.trust | sim_u1.trust == 0 |
! auf einen Text | !sim_u1.kind | sim_u1.kind != "bad" |
| Verketteter Vergleich | 1 < sim_u1.trust < 3 | sim_u1.trust > 1 && sim_u1.trust < 3 |
| Weder wahr noch falsch | sim_u1.trust + 1 | sim_u1.trust + 1 > 3 |
| Nicht vorhandene Simulation oder eine innerhalb eines Zweigs | sim_x.trust | die Kennung einer Simulation außerhalb jedes Zweigs verwenden |
Deklariert das Paket den Typ seiner Variablen (Zahl oder wahr/falsch), prüfen das Panel und der MCP auch, dass Sie sie mit diesem Typ verwenden: sim_u1.reused == 3 ist ein Fehler, wenn reused wahr/falsch ist. Eine Variable, die das Paket nicht deklariert, lässt sich nicht prüfen.
Nächste Schritte
- Einbettungspakete und Simulationen: wie ein Paket seinen Zustand und seine Note sendet.
- Inhalts-Bricks: der Block „Code einbetten“ und seine Bewertung.
- MCP-Server: bedingten Inhalt mit einem Assistenten erstellen.