Das lernst du heute
- Sortieranweisungen im Speicher
- SorterInstruction-Werte
- Regeln kombinieren
Der Sortierer im Logikmodus braucht für jedes Teil eine Entscheidung vom Chip. Der Logiksortierer (StructureLogicSorter) entscheidet selbst – nach Regeln in seinem eigenen Speicher. Der Chip schreibt die Regeln einmal hinein, und danach sortiert die Maschine allein.
Wie er entscheidet
Der Logiksortierer hat einen Speicher mit 32 Plätzen. Jeder Platz ist eine Regel. Passt das Teil im Eingang zu den Regeln, geht es an Ausgang 2, sonst an Ausgang 1. Wie die Regeln zusammenwirken, bestimmt Mode:
| Mode | Name | Ausgang 2, wenn … |
|---|---|---|
| 0 | All | alle Regeln zutreffen |
| 1 | Any | mindestens eine Regel zutrifft |
| 2 | None | keine Regel zutrifft |
Ein Platz mit 0 ist leer und wird übersprungen.
SorterInstruction-Werte
Jede Regel ist eine Zahl, die aus Teilen zusammengesetzt ist. Das unterste Byte ist der Befehl aus dem Namensraum SorterInstruction.:
| Befehl | Zahl | Aufbau der Regel |
|---|---|---|
FilterPrefabHashEquals | 1 | Prefab-Hash · 256 + 1 |
FilterPrefabHashNotEquals | 2 | Prefab-Hash · 256 + 2 |
FilterSortingClassCompare | 3 | Klasse · 65 536 + Vergleich · 256 + 3 |
FilterSlotTypeCompare | 4 | Fachtyp · 65 536 + Vergleich · 256 + 4 |
FilterQuantityCompare | 5 | Menge · 65 536 + Vergleich · 256 + 5 |
Der Vergleich ist 0 für gleich (Equals), 1 für größer (Greater), 2 für kleiner (Less), 3 für ungleich (NotEquals). „Größer“ heißt dabei: Der Wert des Teils ist größer als der Wert in der Regel. „Menge größer 10“ trifft also Stapel ab 11 Stück.
Mal 256 schiebt eine Zahl um ein Byte nach links, mal 65 536 um zwei. Bitbefehle lernst du später im Jahr – für diese Regeln reicht Multiplizieren und Addieren. Auch negative Prefab-Hashes funktionieren so, weil der Sortierer nur die richtigen Bytes ausliest.
mul b1 ERZE ZWEI_BYTE
mul tmp GLEICH BYTE
add b1 b1 tmp
add b1 b1 KLASSE_VGL
ERZE ist 9, KLASSE_VGL ist 3. Die Regel „Klasse gleich Erze“ ist also die Zahl 589 827.
In den Speicher schreiben
Der Speicher eines anderen Geräts wird mit put gerät adresse wert beschrieben. Das Gerät ist hier die ReferenceId:
put id 0 b1
put id 1 b2
Mit Mode 0 (All) und den zwei Regeln „Klasse Erze“ und „nicht schmutziges Erz“ gehen alle echten Erze an Ausgang 2.
Alte Regeln bleiben im Speicher, bis sie überschrieben werden. Stand vorher auf Platz 2 etwas, gilt es weiter. Mit clrd id löschst du den ganzen Speicher – einmal vor dem Neuschreiben, nicht jeden Takt.
Schaubild
Übung
Aufgabe
Programmiere den Logiksortierer „Erzfilter“: Regel 1 (Adresse 0) prüft „Klasse gleich Ores“, Regel 2 (Adresse 1) „Prefab-Hash ungleich ItemDirtyOre“. Berechne die Regeln in b1 und b2, schreibe sie mit put über die ReferenceId und setze Mode 0 (All). Fehlt der Sortierer (bdns), leuchtet „Filterfehler“, sonst ist sie aus.
Hinweise
Hinweis 1
Regel 1: Klasse mal 65536, Vergleich mal 256, dazu der Befehl 3.
Hinweis 2
Regel 2: Hash mal 256 plus Befehl 2 – auch mit negativem Hash.
Hinweis 3
put id 0 b1, put id 1 b2, dann Mode schreiben.
Quiz
5 Fragen. Ab 60 % ist das Quiz bestanden – die Auswertung macht der Server.
Tag abschließen
- Übung im Simulator bestanden
- Quiz mit mindestens 60 % bestanden
Ohne Konto wird der Fortschritt nur in diesem Browser gespeichert.
Fehler in dieser Lektion melden
Zum Melden bitte anmelden. Anmelden