Kodierer und Dekodierer (Befehle)

Aus Technik Wiki
Wechseln zu: Navigation, Suche
Gruppe: Grid Redstone-Verstärker.png
Schaltnetze

Grid Roter Sand blass.png mit Mechaniken

Grid Redstone.png mit Redstone
                Hier:
Grid Befehlsblock.png mit Befehlen
Verfügbar in:
Wiki Redstone-Welt.png Redstone-Welt

Ein Kodierer und Dekodierer kann Zahlenwerte eines bestimmten Zahlensystems in ein anderes umwandeln, wie zum Beispiel von Dual in Oktal.

Inhaltsverzeichnis

Variante 1[Bearbeiten | Quelltext bearbeiten]

Kodierer und Dekodierer (Befehle) Bild 1.1.png

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.

Editor Icon.png 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.

Editor Icon.png 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.

Editor Icon.png 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.

Editor Icon.png 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.

Editor Icon.png kodierer_und_dekodierer:v1stopp.mcfunction
# Das Punktestand-Ziel wird entfernt.
scoreboard objectives remove PZKoDe.1Wert

Variante 2[Bearbeiten | Quelltext bearbeiten]

Kodierer und Dekodierer (Befehle) Bild 1.2.png

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.

Editor Icon.png 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.

Editor Icon.png 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.

Editor Icon.png 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.

Editor Icon.png 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.

Editor Icon.png kodierer_und_dekodierer:v2stopp.mcfunction
# Das Punktestand-Ziel wird entfernt.
scoreboard objectives remove PZKoDe.2Wert


Disambig color.svg