Python coding for Minecraft (13 / 17 schritt)

Schritt 13: Erweiterte Noten 3: Knoten


Parametrische Gleichung für Knoten finden Sie im Netz. Diesmal gehen wir auf die Dinge etwas anders zu tun. Vorher hatten wir Schleifen direkt Anrufe auf mc.setBlock() fahren. Aber in unserer Oberfläche Parzellen, wie z. B. die Kleinsche Flasche, oft der gleichen Block würde gezeichnet mehrmals, das ist langsam und ineffizient. Ein besserer Weg ist, den Satz von genauen Blöcke nachzuverfolgen, die bereits erstellt wurden, um zu vermeiden, das gleiche nochmal.

Lassen Sie mich ein Beispiel wie das (in knot.py) durchlaufen, um einen Knoten zu ziehen. Beginnen Sie mit einem standard-Header wie:

Jetzt müssen wir unsere Knoten zu generieren. Ich habe die Fingerkraut Formeln aus hier. Dies erfordert Schleifen eine Parameter t von 0 bis 2 * pi, mit kleinen genug Schritte um sicherzustellen, dass wir keine Lücken. Ich habe 10000 Schritte. Da dies im Arbeitsspeicher geschieht Computer schnell sind und überlappende Blöcke an Minecraft nur einmal gesendet werden, ist es einfacher, einfacher, mehr Schritte als zu denken, wie viel ist genug zu tun. Es ist wichtig, dass die Koordinaten, die im Wörterbuch Ganzzahlen zu sein, so dass wir sagen können, dass der gleiche Block als Zeichnung gehen (ein Block (1.1,1.2,1.4) und eines Blocks an (1,1,1) sind die gleiche Sache in Minecraft).

Wir zunächst initialisieren und legen Sie die Position des Knotens im Verhältnis zu der Spieler. Beachten Sie, dass die Position des Spielers nicht Integer sein muss (Sie können nicht stehen genau ausgerichtet mit einem Block) und in eine ganze Zahl umgewandelt werden soll.

Jetzt machen wir eine leere Menge benannt getan , um die Koordinaten zu speichern, die wir bereits erstellt haben:

Und wir ziehen den Satz:

Dies zieht nur Daten, die bereits gezeichnet ist nicht. Beachten Sie, dass wir die x-, y- und Z-Koordinaten mit der Funktion int() abzurunden. Das ist die Magie hinter der Überlappung entfernen: Wenn die abgerundeten Koordinaten identisch sind, nur einen Block wird gezeichnet. (Hinweis: die doppelte Klammer in der done.add((x,y,z)) -Linie sind aufgrund der Tatsache, dass was wir hinzufügen, um den Satz der Koordinate dreifach (X, y, Z)ist.)

Der obige Code ist in knot.py.

Der Knoten würde besser aussehen, wenn das Seil dicker waren. Es gibt viele Möglichkeiten, wie man das machen kann. Eine ineffiziente Art, aber einfach, weil Computer schnell in diesen Tagen sind soll nur eine kleine Kugel anstelle eines Punktes bei jedem Pixel zu zeichnen. Dazu mache ich zuerst eine kleine Hilfsfunktion, einen Ball zu ziehen, während Check-in die getan um sicherzustellen, dass es keine doppelten Blöcke gesetzt:

Dies nutzt die Ungleichheit-Methode zum Ausfüllen einer Kugel am (X0, y0, z0), der Radius R.

Dann ändern Sie einfach unsere Knoten-Herstellung- while -Schleife um einen Ball anstatt nur einen Punkt zu machen:

Das Ergebnis ist in knot2.py in der Beispielskripts.

Andere Beispiel Knoten sind in trefoil.py, trefoil2.py und borromean.py. Wenn Sie mit mehreren Materialien zeichnen, können Sie verwenden Sie ein Wörterbuch anstelle von einem Satz oder nur sequentiell durchlaufen die verschiedenen Materialien und klaren das Set vor jedem (das ist, was ich im trefoil2.py und borromean.py).

In Verbindung stehende Artikel

Sommer-camp-Klasse auf Python Codierung mit Minecraft

Sommer-camp-Klasse auf Python Codierung mit Minecraft

Letzten Sommer habe ich gelernt einen fünftägiges 1,5 Stunden pro Tag Sommer camp Mini-Kurs auf Python-Programmierung mit Minecraft für begabte Kinder als Teil der Baylor University for Young People. Die meisten Kinder waren ein Teil des Projekts ver
Realen Welt Minecraft

Realen Welt Minecraft

Wir alle wissen- Minecraft ist ein fantastisches Spiel, und Raspberry Pi hat es mehr awesome. Mit der Minecraft-API können wir nun einfach Python-Skripten Schnittstelle lesen Welt Sensoren und Schaltflächen für die Minecraft-Welt schreiben.Schritt 1:
Raspberry Pi Internetradio mit Kolben

Raspberry Pi Internetradio mit Kolben

Dieses Tutorial soll Ihnen zeigen, wie Sie bauen einen Radio, der Audio aus dem Internet streamen kann über eine einfache Web-Oberfläche um zu bedienen. Wir benötigen Folgendes:Raspberry PiEinige Lautsprecher können Sie Ihre Raspberry Pi Haken bis zu
Smart-Garage, angetrieben von PcDuino

Smart-Garage, angetrieben von PcDuino

wie viele Male haben Sie Gefahren Weg von Haus und Frage mich, wenn Sie Ihre Garage, oder nicht geschlossen haben?Hier präsentieren wir eine intelligente Garage durch PcDuinoangetrieben. Die Garage benachrichtigt Sie per e-Mail, wenn das Tor offen ge
Fahrrad-Blinker aus Rucksack Deckel

Fahrrad-Blinker aus Rucksack Deckel

Dieses Projekt entstand während des CCA Rad gut Design Sprint abzielen, Biker besser sichtbar für Fahrzeuge auf der Straße war. Früher habe ich ein Material, das hatte ich schon die eine Rucksack-Regenhülle war. Der ganzen Beitrag über das Projekt fi
Arduino 1-Wire Sniffer

Arduino 1-Wire Sniffer

Während der Arbeit auf einem 1-Draht-Bus-System - Aufbau z.B. ein Arduino Uno 1-Wire-Slave-Gerät mithilfe einer OneWireSlave Bibliothek oder allgemeine Entwicklung und debugging - eine Logik Analysator, Auswertung und Interpretation den Bit-Datenverk
Spidern eine Ajax-Website mit einem asynchronen Login-Formular

Spidern eine Ajax-Website mit einem asynchronen Login-Formular

das Problem: Spidern Tools nicht AJAX Login-Authentifizierung zu ermöglichen.Diese instructable zeigen Ihnen, wie durch ein AJAX-Formular mit Python und einem Modul namens limitierte anmelden.Spinnen sind Web-Automatisierung-Programme, die zunehmend
Raspberry Pi und ein bisschen darüber

Raspberry Pi und ein bisschen darüber

In diesem instructable werde ich erklären, was eine Raspberry Pi ist und ein wenig über sie. Auch kann was Sie Projekte drauf tun.Schritt 1: Was ist ein Raspberry Pi?Der Raspberry Pi ist ein low-cost, Scheckkarten Format Computer, die an einem Comput
Python Programmierung für Android Minecraft PE

Python Programmierung für Android Minecraft PE

Die Raspberry PI-Version von Minecraft können Sie Skripts in Python Fraktale Entwürfe, Zeichnungen, Turtle-Grafik, einfache Spiele zu machen. Das gleiche lässt sich auf eine Desktop-Version mit meinem Himbeer Jam Mod (hier ist meine Instructable wie,
Python-Programmierung - Wörterbücher (for-Schleifen)

Python-Programmierung - Wörterbücher (for-Schleifen)

# Wörterbücher in Python; Übung aus Kapitel 3 in "Python schnell lernen"# Haben ein paar for-Schleifen in diesen, die Werte vertikal drucken könnenDrucken Sie ("Creating Wörterbuch jetzt.")Telnums = {}Drucken Sie ("bevölkern das W
Rechner-Coded mit Python

Rechner-Coded mit Python

nach dem lernen etwas über die Programmiersprache Python, ich aber, daß es nett wäre, um zu versuchen und einige der Mathematik zu replizieren, dass sie Python Shell hat mit einem GUI. Während ich eindeutig nicht die Schale Leistung entsprach fügt me
Zapfen der Minecraft Server Mod Schöpfung

Zapfen der Minecraft Server Mod Schöpfung

Minecraft-Server sind genial. Sie können Sie Freunde auf der ganzen Welt bauen mit Leuten reden und Herumspielen mit den Befehlen Zapfen und alle Plugins, die für sie zur Verfügung stehen. Wenn Sie dazu beitragen, die Plugins für Zapfen und allen Use
Star Wars und Star Trek in Minecraft mit Himbeer Marmelade Mod

Star Wars und Star Trek in Minecraft mit Himbeer Marmelade Mod

Ich werde erklären, wie man Star Wars (a) leicht zu machen und Star Trek (und anderen) 3D-Modelle Minecraft und (b) fliegt ein Raumschiff in Minecraft (oder sogar haben ein anderes Gebilde wie eine Fledermaus oder ein Zombie fliegen!), mit dem Beispi
Minecraft TNT Tissue Box Cover

Minecraft TNT Tissue Box Cover

Minecraft ist genial! Es sieht genial und es macht Spaß zu spielen. Seine pixelig Stil passt perfekt zu Handarbeiten wie Kunststoff Leinwand. Ich beschloss, ein Gewebe Kastendeckel mit Kunststoff Leinwand im Stil von Minecraft TNT-Block bilden. Viel