Gruppe: Schaltnetze |
mit Mechaniken |
mit Redstone |
Hier: mit Befehlen |
Verfügbar in: Redstone-Welt |
Ein Kodierer und Dekodierer kann Zahlenwerte eines bestimmten Zahlensystems in ein anderes umwandeln, wie zum Beispiel von Dual in Oktal.
Variante 1[]
Folgende Voraussetzungen werden benötigt: | ||
---|---|---|
|
Folgende Materialien werden benötigt: | |
---|---|
|
Mit diesem Zahlensystemumrechner lassen sich Zahlen aus dem Dezimalsystem in das Dualsystem umrechnen.
- Einschalten
- Befehl 1.1 Wenn der Hebel umgelegt wird, wird die Start-Funktion gestartet.
- Wiederholen
- Befehl 1.2 Beim Einschalten wird auch der Wiederhol-Befehlsblock gestartet, der jeden Tick die Zyklus-Funktion lädt.
- Ausschalten
- Befehl 1.3 Wenn der Hebel wieder in Ausgangsstellung zurück gelegt wird, wird die Stopp-Funktion ausgelöst und schaltet alles wieder ab.
Befehlsblöcke mit Befehlen: |
|
Variante 1: Start-Funktion
Die Start-Funktion erstellt das Auslöser-Punktestand-Ziel und alle Variablen die benötigt werden.
kodierer_und_dekodierer:v1start.mcfunction
|
# Punktestand-Ziel wird erstellt. scoreboard objectives add PZKoDe.1Wert trigger ["Kodierer und Dekodierer.1: ",{"text":"Wert der Variable","bold":true}] # Interne Variablen für die Berechnung werden gesetzt. scoreboard players set #VarKoDe.1Zahl PZKoDe.1Wert 0 scoreboard players set #VarKoDe.1Potenz PZKoDe.1Wert 1 scoreboard players set #VarKoDe.1Rest PZKoDe.1Wert 0 scoreboard players set #VarKoDe.1Term PZKoDe.1Wert 0 # Öffentliche Variablen für die sichtbare Ausgabe im Chat werden gesetzt. scoreboard players set VarKoDe.1Variable1 PZKoDe.1Wert 0 scoreboard players set VarKoDe.1Variable2 PZKoDe.1Wert 0 scoreboard players set KonstKoDe.1ZEHN PZKoDe.1Wert 10 scoreboard players set KonstKoDe.1ZWEI PZKoDe.1Wert 2 |
Variante 1: Zyklus-Funktion
Die Zyklus-Funktion wartet auf die Eingabe des Spielers und ruft zur Berechnung der Werte die Ein- und Ausgabe-Funktionen auf. Die Ergebnisse werden im Chat ausgegeben.
kodierer_und_dekodierer:v1zyklus.mcfunction
|
# Wenn Spieler in einem Umkreis von 25 Metern den Wert eins besitzen, wird die Variable 1 um eins erhöht und das Ergebnis in die Zahl-Variable gespeichert. execute if entity @a[distance=..25,scores={PZKoDe.1Wert=1}] store result score #VarKoDe.1Zahl PZKoDe.1Wert run scoreboard players add VarKoDe.1Variable1 PZKoDe.1Wert 1 # Wenn die Zahl-Variable einen Wert ab eins besitzt, so wird die Eingaben-Funktion aufgerufen. In ihr wird sie wieder auf null gesetzt wodurch die Ausgaben-Funktion danach ausgeführt wird. execute if score #VarKoDe.1Zahl PZKoDe.1Wert matches 1.. run function kodierer_und_dekodierer:v1eingabe execute if score #VarKoDe.1Zahl PZKoDe.1Wert matches 0 run function kodierer_und_dekodierer:v1ausgabe # Wenn die Zahl-Variable exisitiert, wird nach Spielern in einem Umkreis von 25 Metern geschaut, ob sie einen Wert außer null besitzen und erhalten dann die Chat-Nachricht. execute if score #VarKoDe.1Zahl PZKoDe.1Wert matches -1.. as @a[distance=..25] unless entity @s[scores={PZKoDe.1Wert=0}] run tellraw @s ["Kodierer und Dekodierer.1: ",{"text":"\nvar1 == ","bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für [var1 + 1]10"} },"clickEvent":{"action":"run_command","value":"/trigger PZKoDe.1Wert set 1"} },{"text":"[","color":"gray","bold":true},{"score":{"name":"VarKoDe.1Variable1","objective":"PZKoDe.1Wert"},"color":"dark_purple","bold":true},{"text":"]","color":"gray","bold":true},{"text":"10","bold":true,"italic":true},{"text":"\nvar2 == ","bold":true},{"text":"[","color":"gray","bold":true},{"score":{"name":"VarKoDe.1Variable2","objective":"PZKoDe.1Wert"},"color":"dark_purple","bold":true},{"text":"]","color":"gray","bold":true},{"text":"2","bold":true,"italic":true}] # Wenn Spieler keinen Wert hatten oder irgendeinen anderen Wert außer null, erhalten sie die Erlaubnis für den Auslöser und ihr Wert wird auf null gesetzt. execute as @a[distance=..25] unless entity @s[scores={PZKoDe.1Wert=0}] run scoreboard players enable @s PZKoDe.1Wert execute as @a[distance=..25] unless entity @s[scores={PZKoDe.1Wert=0}] run scoreboard players set @s PZKoDe.1Wert 0 |
Variante 1: Eingabe-Funktion
Die Eingabe-Funktion erhält den Dezimalzahlenwert und rechnet ihn in einen dualen Zahlenwert um.
kodierer_und_dekodierer:v1eingabe.mcfunction
|
# Der Wert von Variable 1 vom Zehnersystem wird in das Dualsystem umgerechnet und in die Term-Variable gespeichert. scoreboard players operation #VarKoDe.1Rest PZKoDe.1Wert = #VarKoDe.1Zahl PZKoDe.1Wert scoreboard players operation #VarKoDe.1Rest PZKoDe.1Wert %= KonstKoDe.1ZWEI PZKoDe.1Wert scoreboard players operation #VarKoDe.1Zahl PZKoDe.1Wert /= KonstKoDe.1ZWEI PZKoDe.1Wert scoreboard players operation #VarKoDe.1Rest PZKoDe.1Wert *= #VarKoDe.1Potenz PZKoDe.1Wert scoreboard players operation #VarKoDe.1Term PZKoDe.1Wert += #VarKoDe.1Rest PZKoDe.1Wert scoreboard players operation #VarKoDe.1Potenz PZKoDe.1Wert *= KonstKoDe.1ZEHN PZKoDe.1Wert # Falls die Zahl-Variable größer gleich eins ist wird diese Funktion nochmals aufgerufen. execute if score #VarKoDe.1Zahl PZKoDe.1Wert matches 1.. run function kodierer_und_dekodierer:v1eingabe |
Variante 1: Ausgabe-Funktion
Die Ausgabe-Funktion nimmt das Ergebnis und setzt alle Variablen auf den Startwert zurück.
kodierer_und_dekodierer:v1ausgabe.mcfunction
|
# Der duale Wert von der Term-Variable wird in die Variable 2 gespeichert und die drei anderen Variablen werden wieder auf ihre Startwerte gesetzt. scoreboard players operation VarKoDe.1Variable2 PZKoDe.1Wert = #VarKoDe.1Term PZKoDe.1Wert scoreboard players set #VarKoDe.1Term PZKoDe.1Wert 0 scoreboard players set #VarKoDe.1Potenz PZKoDe.1Wert 1 scoreboard players set #VarKoDe.1Zahl PZKoDe.1Wert -1 |
Variante 1: Stopp-Funktion
Die Stopp-Funktion löscht das Punktestand-Ziel und somit alle Variablen.
kodierer_und_dekodierer:v1stopp.mcfunction
|
# Das Punktestand-Ziel wird entfernt. scoreboard objectives remove PZKoDe.1Wert |
Variante 2[]
Folgende Voraussetzungen werden benötigt: | ||
---|---|---|
|
Folgende Materialien werden benötigt: | |
---|---|
|
Dieser Zahlensystemumrechner kann zwei Zahlen in beliebigen Zahlensystem zwischen dual und dezimal umrechnen und ausgeben.
- Einschalten
- Befehl 2.1 Wenn der Hebel umgelegt wird, wird die Start-Funktion gestartet.
- Wiederholen
- Befehl 2.2 Beim Einschalten wird auch der Wiederhol-Befehlsblock gestartet, der jeden Tick die Zyklus-Funktion lädt.
- Ausschalten
- Befehl 2.3 Wenn der Hebel wieder in Ausgangsstellung zurück gelegt wird, wird die Stopp-Funktion ausgelöst und schaltet alles wieder ab.
Befehlsblöcke mit Befehlen: |
|
Variante 2: Start-Funktion
Die Start-Funktion erstellt das Auslöser-Punktestand-Ziel und alle Variablen, die für das Berechnen der Zahlenwerte benötigt werden.
kodierer_und_dekodierer:v2start.mcfunction
|
# Punktestand-Ziel wird erstellt scoreboard objectives add PZKoDe.2Wert trigger ["Kodierer und Dekodierer.2: ",{"text":"Wert der Variable","bold":true}] # Interne Variablen für die Berechnung werden gesetzt scoreboard players set #VarKoDe.2AusgabeSystem PZKoDe.2Wert 2 scoreboard players set #VarKoDe.2EingabeZahl PZKoDe.2Wert 1 scoreboard players set #VarKoDe.2AusgabeZahl PZKoDe.2Wert 1 scoreboard players set #VarKoDe.2Potenz PZKoDe.2Wert 1 scoreboard players set #VarKoDe.2Rest PZKoDe.2Wert 0 scoreboard players set #VarKoDe.2Term PZKoDe.2Wert 0 # Öffentliche Variablen für die sichtbare Ausgabe im Chat werden gesetzt scoreboard players set VarKoDe.2SystemVariable1 PZKoDe.2Wert 0 scoreboard players set VarKoDe.2SystemVariable2 PZKoDe.2Wert 0 scoreboard players set VarKoDe.2Variable1 PZKoDe.2Wert 0 scoreboard players set VarKoDe.2System1 PZKoDe.2Wert 10 scoreboard players set VarKoDe.2System2 PZKoDe.2Wert 2 scoreboard players set KonstKoDe.2ZEHN PZKoDe.2Wert 10 |
Variante 2: Zyklus-Funktion
Die Zyklus-Funktion prüft ob der Spieler im Chat auf eine Variable oder Zahlensystem geklickt hat und berechnet dann die neuen Werte in den jeweiligen Zahlensystemen um.
kodierer_und_dekodierer:v2zyklus.mcfunction
|
# Für dne Wert eins wird die Variable 1 um eins ehröht. Für die Werte zwei und drei die System-Variablen, wobei sie größer zehn wieder auf zwei gesetzt werden. execute if entity @a[distance=..25,scores={PZKoDe.2Wert=1}] run scoreboard players add VarKoDe.2Variable1 PZKoDe.2Wert 1 execute if entity @a[distance=..25,scores={PZKoDe.2Wert=2}] run scoreboard players add VarKoDe.2System1 PZKoDe.2Wert 1 execute if entity @a[distance=..25,scores={PZKoDe.2Wert=2}] if score VarKoDe.2System1 PZKoDe.2Wert matches 11.. run scoreboard players set VarKoDe.2System1 PZKoDe.2Wert 2 execute if entity @a[distance=..25,scores={PZKoDe.2Wert=3}] run scoreboard players add VarKoDe.2System2 PZKoDe.2Wert 1 execute if entity @a[distance=..25,scores={PZKoDe.2Wert=3}] if score VarKoDe.2System2 PZKoDe.2Wert matches 11.. run scoreboard players set VarKoDe.2System2 PZKoDe.2Wert 2 # Der Wert der Variable 1 wird in die Eingabe-Variable gespeichert und das erste Zahlensystem ebenfalls in die System-Variable. Anschließend wird mit diesen Variablen die Zahl im vorgegebenen Zahlensystem ausgerechnet. execute if entity @a[distance=..25,scores={PZKoDe.2Wert=1..}] run scoreboard players operation #VarKoDe.2EingabeZahl PZKoDe.2Wert = VarKoDe.2Variable1 PZKoDe.2Wert execute if entity @a[distance=..25,scores={PZKoDe.2Wert=1..}] run scoreboard players operation #VarKoDe.2AusgabeSystem PZKoDe.2Wert = VarKoDe.2System1 PZKoDe.2Wert execute if score #VarKoDe.2EingabeZahl PZKoDe.2Wert matches 1.. run function kodierer_und_dekodierer:v2eingabe execute if score #VarKoDe.2EingabeZahl PZKoDe.2Wert matches 0 run function kodierer_und_dekodierer:v2ausgabe execute if entity @a[distance=..25,scores={PZKoDe.2Wert=1..}] run scoreboard players operation VarKoDe.2SystemVariable1 PZKoDe.2Wert = #VarKoDe.2AusgabeZahl PZKoDe.2Wert # Der Wert der Variable 1 wird nochmal in die Eingabe-Variable gespeichert und das zweite Zahlensystem ebenfalls in die System-Variable. Anschließend wird mit diesen Variablen die Zahl im vorgegebenen Zahlensystem ausgerechnet. execute if entity @a[distance=..25,scores={PZKoDe.2Wert=1..}] run scoreboard players operation #VarKoDe.2EingabeZahl PZKoDe.2Wert = VarKoDe.2Variable1 PZKoDe.2Wert execute if entity @a[distance=..25,scores={PZKoDe.2Wert=1..}] run scoreboard players operation #VarKoDe.2AusgabeSystem PZKoDe.2Wert = VarKoDe.2System2 PZKoDe.2Wert execute if score #VarKoDe.2EingabeZahl PZKoDe.2Wert matches 1.. run function kodierer_und_dekodierer:v2eingabe execute if score #VarKoDe.2EingabeZahl PZKoDe.2Wert matches 0 run function kodierer_und_dekodierer:v2ausgabe execute if entity @a[distance=..25,scores={PZKoDe.2Wert=1..}] run scoreboard players operation VarKoDe.2SystemVariable2 PZKoDe.2Wert = #VarKoDe.2AusgabeZahl PZKoDe.2Wert # Wenn die Variable 1 existiert werden Spieler im Umkreis von 25 Metern ausgewählt, welche nicht den Wert null besitzen und erhalten die Chat-Nachricht. In ihr können sie die Variable 1 festlegen und die beiden Zahlensysteme nach belieben ändern. execute if score VarKoDe.2Variable1 PZKoDe.2Wert matches 0.. as @a[distance=..25] unless entity @s[scores={PZKoDe.2Wert=0}] run tellraw @s ["Kodierer und Dekodierer.2: ",{"text":"\nvar1 == ","bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für [var1 + 1]System1"} },"clickEvent":{"action":"run_command","value":"/trigger PZKoDe.2Wert set 1"} },{"text":"[","color":"gray","bold":true},{"score":{"name":"VarKoDe.2SystemVariable1","objective":"PZKoDe.2Wert"},"color":"dark_purple","bold":true},{"text":"]","color":"gray","bold":true},{"score":{"name":"VarKoDe.2System1","objective":"PZKoDe.2Wert"},"color":"gold","bold":true,"italic":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für das Zahlensystem1"} },"clickEvent":{"action":"run_command","value":"/trigger PZKoDe.2Wert set 2"} },{"text":"\nvar2 == ","bold":true},{"text":"[","color":"gray","bold":true},{"score":{"name":"VarKoDe.2SystemVariable2","objective":"PZKoDe.2Wert"},"color":"dark_purple","bold":true},{"text":"]","color":"gray","bold":true},{"score":{"name":"VarKoDe.2System2","objective":"PZKoDe.2Wert"},"color":"gold","bold":true,"italic":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für das Zahlensystem2"} },"clickEvent":{"action":"run_command","value":"/trigger PZKoDe.2Wert set 3"} }] # Spieler die noch keinen Wert besitzen oder nicht den Wert null besitzen, erhalten die Auslöser-Erlaubis und den Wert null. execute as @a[distance=..25] unless entity @s[scores={PZKoDe.2Wert=0}] run scoreboard players enable @s PZKoDe.2Wert execute as @a[distance=..25] unless entity @s[scores={PZKoDe.2Wert=0}] run scoreboard players set @s PZKoDe.2Wert 0 |
Variante 2: Eingabe-Funktion
Die Eingabe-Funktion berechnet mit der Eingabe-Variable den Wert des festgelegten Zahlensystems und gibt diese in die Term-Variable.
kodierer_und_dekodierer:v2eingabe.mcfunction
|
# Die Eingabe-Variable wird in das andere Zahlensystem umgerechnet. scoreboard players operation #VarKoDe.2Rest PZKoDe.2Wert = #VarKoDe.2EingabeZahl PZKoDe.2Wert scoreboard players operation #VarKoDe.2Rest PZKoDe.2Wert %= #VarKoDe.2AusgabeSystem PZKoDe.2Wert scoreboard players operation #VarKoDe.2EingabeZahl PZKoDe.2Wert /= #VarKoDe.2AusgabeSystem PZKoDe.2Wert scoreboard players operation #VarKoDe.2Rest PZKoDe.2Wert *= #VarKoDe.2Potenz PZKoDe.2Wert scoreboard players operation #VarKoDe.2Term PZKoDe.2Wert += #VarKoDe.2Rest PZKoDe.2Wert scoreboard players operation #VarKoDe.2Potenz PZKoDe.2Wert *= KonstKoDe.2ZEHN PZKoDe.2Wert # Solange noch nicht die Variable kleiner eins ist, wird diese Funktion erneut aufgerufen. execute if score #VarKoDe.2EingabeZahl PZKoDe.2Wert matches 1.. run function kodierer_und_dekodierer:v2eingabe |
Variante 2: Ausgabe-Funktion
Die Ausgabe-Funktion speichert das Ergebnis in die Ausgabe-Variable und setzt die drei Variablen wieder auf ihren Start-Wert.
kodierer_und_dekodierer:v2ausgabe.mcfunction
|
# In die Ausgabe-Variable wird der Wert der Term-Variable gespeichert. Die drei anderen Variablen werden wieder auf ihre Startwerte gesetzt. scoreboard players operation #VarKoDe.2AusgabeZahl PZKoDe.2Wert = #VarKoDe.2Term PZKoDe.2Wert scoreboard players set #VarKoDe.2Term PZKoDe.2Wert 0 scoreboard players set #VarKoDe.2Potenz PZKoDe.2Wert 1 scoreboard players set #VarKoDe.2EingabeZahl PZKoDe.2Wert -1 |
Variante 2: Stopp-Funktion
Die Stopp-Funktion löscht das Punktestand-Ziel. Die Variablen werden dadurch ebenfalls gelöscht.
kodierer_und_dekodierer:v2stopp.mcfunction
|
# Das Punktestand-Ziel wird entfernt. scoreboard objectives remove PZKoDe.2Wert |
|
Zähler => Redstone (erweitert), Befehle; Halbaddierer => Redstone; Volladdierer => Redstone; Halbsubtrahierer => Redstone; Vollsubtrahierer => Redstone; Bitschieber => Redstone; Kodierer und Dekodierer => Redstone, Befehle; Zahlen-Anzeige => Redstone; Vergleicher => Redstone, Befehle; Abzweig-Konstrukt => Befehle; Schleifen-Konstrukt => Befehle; Nur-Lese-Speicher => Redstone (erweitert); Direktzugriffsspeicher => Redstone, Befehle (erweitert); |
|