Wie kann ich zufällig eine von mehreren Drähten in Minecraft ausführen?

Bei 5 Drähten (evtl. mehr) möchte ich einen Reset-Taster drücken und genau einen dieser Drähte, zufällig ausgewählt, aktiv werden – und so bleiben (bis zum nächsten Tastendruck). Was ist eine einfache Art, das zu tun?

Diese Q / A ist eigentlich mit einer anderen Frage verwandt , meine Antwort darauf, war ausreichend komplex (und hatte so viele Diagramme), dass ich beschloss, dass es einen separaten Beitrag wert war.

Nun gibt es viele zufällige Zahlengeneratoren da draußen, einige sehr klug (man benutzt ein 13-Bit-lineares Feedback-Schieberegister – wow). Aber ich wollte etwas einfaches, ausziehbares und leicht verständliches. Es gibt wohl bessere da draußen 🙂 Aber ich denke, das funktioniert gut genug, um als Teil der Schaltung in der anderen Frage verwendet zu werden.

Es ist im Grunde eine 5-Uhr (mit den neuen Repeatern – ich liebe diese), verbunden mit einigen Speicher-Flip-Flops, mit einem Reset-Taste.

Top-Level-Schaltplan

Top-Level-Schaltplan

5-takt-Schaltplan

5-takt-Schaltplan

Die Pfeile sind Repeater, eingestellt auf 0,3 oder 0,2 Sekunden Verzögerung (oder keine, wenn leer). Die 0,2 ist, um die Länge des Drahtes vor ihm zu kompensieren, was etwas Verzögerung hinzufügt. Die gesamte Zykluszeit der Uhr beträgt ca. 1,5 Sekunden.

333 Schaltplan

333 Schaltplan

Wie man es benutzt

  • Löschen Sie die 5-Uhr (Repeater gefroren), auf Server Reboot / Game Reload. Dies kann in der Regel durch das Fallenlassen / Entfernen einer Fackel durch die Schaltung und / oder Entfernen und Ersetzen eines Drahtabschnitts erfolgen. Wenn alle Repeater unpowered sind , ist die Schaltung klar.

  • Spritzen Sie einen Puls in die 5-Uhr. Drücken Sie die Taste am Auto-Pulse Injector und starten Sie die Uhr.

  • Drücken Sie die Reset-Taste – genau einer der fünf Drähte, wird nun aktiv. Wenn irgendwelche Drähte vorher aktiv waren, schalten sie ab.

Die Uhr fährt in ca. 1,5 Sekunden durch 5 Fackeln, und wenn man den Reset-Taster drückt, wird der jeweilige Draht neben einem aktiven Fackel in einen aktiven Zustand versetzt.

An diesem Punkt ist jemand zweifellos beschwert, "Sie nennen das zufällig " ??? 🙂 Warum, ja, ich tue – es sei denn, du gehst auf den Knopf in deterministischen Zeitintervallen, es ist sehr zufällig. Manche Leute haben RNGs entworfen, die Mobs herumlaufen – ich benutze den Spieler. 🙂

Allerdings, wenn Sie mehr zufällige hinzufügen wollen, verwenden Sie die TBD-Schaltung – im Grunde, das bedeutet, dass Sie: gehen Sie auf die Schaltfläche, schauen Sie sich die Seconds Ziffer auf Ihrem Armbanduhr, und wenn es auf Null trifft, drücken Sie die Taste. Dies ergibt einen Bereich von 1-10 Sekunden, durchschnittlich 5, in dem die Uhr zyklisch wird, was zu einem unvorhersehbaren Draht führt.

Ich weiß, es gibt andere Möglichkeiten, ein zufälliges Ereignis zu bekommen. In der Tat hatte ich ursprünglich einen schnell-pulsar, der ausgebrannt, dann relit in etwa 5-15 Sekunden erstellt. Ich habe daran gearbeitet, dass das Relight-Event einen JK-Flip-Flop auslöst und einen Puls an die Uhr sendet. Aber es war a) schwieriger als ich dachte, und ich wollte eine Antwort bekommen 🙂 und b) etwas überflüssig. Alles, was ich versuchte zu tun warte auf ein zufälliges Intervall vor der Kommissionierung einer Uhr Fackel – und es ist einfach genug für den Spieler nur auf seine Uhr für ein zufälliges Intervall zu sehen. 🙂

Manchmal ist die beste Lösung, erfordert nicht viel komplexe Maschinen. 🙂

Auch dieses Design ist für eine spezielle Anwendung – in der ursprünglichen Frage, die Person wollte eine Reset-Taste , die den Draht geändert, was bedeutet, sie waren aktiv wählen, wann eine zufällige Zahl zu bekommen. Wenn Ihre Anwendung beinhaltet Disco-Lichter blinken zufällig, dann nein, das würde nicht für das arbeiten. Aber es gibt schon viele Lösungen für blinkende Lichter nach dem Zufallsprinzip.

Die 333-Strecke ist ziemlich banal, ich behaupte keine Originalität – der einzige Grund, warum ich ihm einen Namen gegeben habe, muss ich ihm ein Etikett im Diagramm zur Klarheit geben. 🙂

Update: Obwohl ich ursprünglich nur einen manuell aktivierten Pulse Injector verwendet habe, musste der Spieler den Schalter schnell ein- und ausschalten. Nur zum Spaß habe ich mich entschlossen, einen Auto-Pulse Injector hinzuzufügen, um es einfacher zu machen, die Uhr zu aktivieren. (Das Design, aus dem aus dem Wiki kam ).

Mit dem 1.5 Update mit Trichtern und Komparatoren kannst du einen Spender nach oben in einen nach unten gerichteten Trichter und einen Komparator auf dem Trichter (an der Seite von ihm) machen, dann platziere jeden Gegenstand, der stapeln kann und ein Gegenstand, Spender, dann Macht der Spender, ein zufälliges Element wird in den Trichter gehen. Wenn es ein nicht stapelnder Gegenstand ist, gibt es eine Signalstärke von 2 heraus, wenn es ein stapelbares Einzelteil ist, das es ein Signal von 1 gibt.