Das offizielle Minecraft Wiki twittert hier: Wiki-Twitter  –  Chatte im Wiki-Discord  – Noch keinen Server gefunden? Es gibt einen Wiki-Server

Schaltnetze/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

Die vorgestellte Technik kann in der Redstone-Welt angesehen werden.

Ein Kodierer und Dekodierer kann Zahlenwerte eines bestimmten Zahlensystems in ein anderes umwandeln.

Inhaltsverzeichnis

Variante 1[Bearbeiten | Quelltext bearbeiten]

Schaltnetze Kodierer und Dekodierer (Befehle) Bild 1.1.png Schaltnetze Kodierer und Dekodierer (Befehle) Bild 1.2.png

Mit diesem Kodierer lassen sich Zahlen vom Dezimalsystem (10) in das Dualsystem (2) umwandeln. Dafür werden eine Reihe an Variablen benötigt. Beim Einschalten wird zuerst ein Punktestand-Ziel erstelltBefehl 1.1 um die ganzen Variablen fassen zu können. Im Anschluss werden die Variablen "Zahl"Befehl 1.2,"Potenz"Befehl 1.3, "Rest"Befehl 1.4, "Term"Befehl 1.5, "Eingabe"Befehl 1.6 und die zwei Konstanten "ZWEI"Befehl 1.7 und "ZEHN"Befehl 1.8 erstellt. Die Konstanten sind nötig, da man solche nicht in einer Operation direkt einbauen kann. Nun folgt mit dem Wiederhol-Befehlsblock die Berechnung. Zuallererst, wird geprüft ob der Wert der Variable "Zahl" mindestens eins oder größer istBefehl 1.9, denn dann ist das Ergebnis noch nicht berechnet worden. Zuerst muss der Wert von "Zahl" zwischengespeichert werden, dazu wird er in "Rest" gespeichertBefehl 1.10 und erst dann folgt die eigentliche Rechnung mit ModulusBefehl 1.11. Dann wird die Variable "Zahl" halbiertBefehl 1.12 um beim nächsten Durchlauf die nächste rechte Stelle zu erhalten. Daraufhin wird in "Rest" das Ergebnis mal der "Potenz" zwischengespeichertBefehl 1.13. Dann kann dieser Wert auf "Term" addiert werden, welcher nach und nach das Ergebnis der Umwandlung beherbergtBefehl 1.14. Nun muss noch die "Potenz" mit zehn mal genommen werdenBefehl 1.15, damit beim nächsten Durchlauf der Stellenwert von "Term" stimmt. Für die eigentliche Umrechnung ist jetzt alles getan, damit man aber die Werte vor und nach der Umrechnung angezeigt bekommt, müssen nun noch weitere Schritte eingeleitet werden. Hierbei muss mit einem "Immer Aktiv" sichergestellt seinBefehl 1.16, dass geprüft wird, ob der Wert der Variable "Zahl" null erreicht hatBefehl 1.17, wenn das der Fall sein sollte, wird anschließend der Ketten-Befehlsblock auf "Benötigt Redstone" umgestelltBefehl 1.18, was zur Folge hat, das die Überprüfung abgeschaltet wird, sobald sie einmal erfolgreich war. Danach wird der Wert von "Term", der das Ergebnis darstellt in "Ausgabe" gespeichertBefehl 1.19. Nun werden die Variablen "Term" und "Potenz" auf ihre ursprünglichen Werte zurückgesetztBefehl 1.20Befehl 1.21, damit sie bei einer nächten Zahlumwandlung wieder genutzt werden können. Das Ergebnis wird dann im Chat ausgegebenBefehl 1.22. Dies erfolgt einmal, wenn man den Hebel umgelegt hatte, möchte man jetzt weitere Zahlen umgewandelt bekommen, so kann man daneben einen Hebel umlegen, welcher die Variable "Eingabe" um eins erhöhtBefehl 1.23 und anschließend wird dieser Wert in "Zahl" übernommenBefehl 1.24. Natürlich lässt sich die Variable herunter zählen, das erfolgt über einen zweiten Hebel der an einem Befehlsblock befestigt ist, welcher ebenfalls auf den mittleren Ketten-Befehlsblock zeigtBefehl 1.25. Der Wert kann aber nicht negativ berechnet werden, daher wird nur eine Ausgabe erfolgen, solange die Variable positiv ist. Schaltet man das Schaltnetz aus, so wird das Punktestand-Ziel gelöschtBefehl 1.26 und alle Variablen die damit erstellt wurden werden ebenfalls und das automatisch gelöscht.


Befehlsblöcke mit Befehlen:
scoreboard objectives add PZKoDe:1Wert dummy
scoreboard players set #VarKoDe:1Zahl PZKoDe:1Wert 1
scoreboard players set #VarKoDe:1Potenz PZKoDe:1Wert 1
scoreboard players set #VarKoDe:1Rest PZKoDe:1Wert 0
scoreboard players set #VarKoDe:1Term PZKoDe:1Wert 0
scoreboard players set #VarKoDe:1Eingabe PZKoDe:1Wert 1
scoreboard players set #KonstKoDe:1ZWEI PZKoDe:1Wert 2
scoreboard players set #KonstKoDe:1ZEHN PZKoDe:1Wert 10


scoreboard players test #VarKoDe:1Zahl PZKoDe:1Wert 1
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
blockdata ~ ~1 ~ {auto:true}
scoreboard players test #VarKoDe:1Zahl PZKoDe:1Wert * 0
blockdata ~ ~-1 ~ {auto:false}
scoreboard players operation #VarKoDe:1Ausgabe PZKoDe:1Wert = #VarKoDe:1Term PZKoDe:1Wert
scoreboard players set #VarKoDe:1Term PZKoDe:1Wert 0
scoreboard players set #VarKoDe:1Potenz PZKoDe:1Wert 1
tellraw @a[r=15] ["Kodierer:1 ",{"text":"Eingabe: ","bold":true},{"score":{"name":"#VarKoDe:1Eingabe","objective":"PZKoDe:1Wert"} } ,{"text":" (10) Ausgabe: ","bold":true},{"score":{"name":"#VarKoDe:1Ausgabe","objective":"PZKoDe:1Wert"} },{"text":" (2)","bold":true} ]


scoreboard players add #VarKoDe:1Eingabe PZKoDe:1Wert 1
scoreboard players operation #VarKoDe:1Zahl PZKoDe:1Wert = #VarKoDe:1Eingabe PZKoDe:1Wert
scoreboard players remove #VarKoDe:1Eingabe PZKoDe:1Wert 1


scoreboard objectives remove PZKoDe:1Wert


Disambig color.svg