Python coding for Minecraft (13 / 17 steg)

Steg 13: Avancerad anteckningar 3: knop



På nätet kan du hitta parametriska ekvationen för knop. Den här gången, kommer vi att göra saker lite annorlunda från innan. Innan hade vi loopar körning samtal till mc.setBlock() direkt. Men i vår yta tomter, som Klein flaskan, ofta i samma kvarter skulle få flera gånger, som är långsam och ineffektiv. Ett bättre sätt är att hålla reda på uppsättningen exakta block som drogs redan för att undvika göra om samma sak.

Låt mig gå igenom ett exempel som det (i knot.py) rita en knut. Börja med en vanlig rubrik som:

från mc import *

Nu måste vi skapa vår knut. Jag använde FINGERÖRT formlerna från här. Detta kräver looping en parameter t från 0 till 2 * pi, med små tillräckligt åtgärder för att säkerställa att vi inte har luckor. Jag använde 10000 steg. Eftersom detta görs i minnet, och datorer är snabb och överlappande block är bara skickas en gång till Minecraft, är det lättare att lättare att göra fler steg än att tänka hur många räcker. Det är viktigt att koordinaterna som går i ordlistan vara heltal så att vi kan säga att i samma kvarter som ritning (ett block på (1.1,1.2,1.4) och ett block på (1,1,1) är samma sak i Minecraft).

Vi först initiera och ange positionen för Knut i förhållande till spelaren. Observera att spelare position inte behöver vara ett heltal (du inte kan stå exakt linje med ett block) och bör omvandlas till ett heltal.

MC = Minecraft()
playerPos = mc.player.getPos()
skala = 12
x0 = int(playerPos.x)
y0 = int (playerPos.y + 5 * skala)
Z0 = int(playerPos.z)

Nu gör vi en tom mängd heter gjort att lagra de koordinater som vi redan har ritat:

klart = set()

Och vi dra uppsättningen:

t = 0
även om t < 2 * pi:
x = x 0 + int (skala * cos(2*t) * (3 + cos(5*t)))
y = y0 + int (skala * sin(2*t) * (3 + cos(5*t)))
z = z0 + int (skala * sin(5*t))
om (x, y, z) inte gjort:
mc.setBlock(x,y,z,GOLD_BLOCK)
Done.Add((x,y,z))
t + = 2 * pi / 10000

Detta drar endast data som inte är redan dragna. Observera att vi behöver att runda av x, y och z koordinater med funktionen int(). Det är magin bakom överlappning avlägsnande: när de runda koordinaterna är samma, bara ett kvarter dras. (Obs: den dubbla parentesen i done.add((x,y,z)) linjen är på grund av att vi lägger till uppsättningen är koordinaten trippel (x, y, z).)

Ovanstående kod är i knot.py.

Knut skulle se bättre om repet var tjockare. Det finns många sätt man kan göra som. Ett ineffektivt sätt, men lätt eftersom datorer är snabbt dessa dagar, är bara att dra en liten boll inte en punkt på varje pixel. För att göra det, först göra jag lite nytta funktion för att rita en boll medan checkar in den gjort så finns det inga dubbletter block:

def ball(x0,y0,z0,r,block,done):
x i range(-r,r):
för y i range(-r,r):
för z i range(-r,r):
om (x ** 2 + y ** 2 + z ** 2 < = r ** 2):
om inte (x 0 + x, y0 + y, z0 + z) i gjort:
mc.setBlock (x 0 + x, y0 + y, z0 + z, block)
Done.Add((x0+x,y0+y,Z0+z))

Detta används metoden ojämlikheten för att fylla i en boll på (x0, y0, z0), av radien r.

Sedan bara ändra vår Knut-making medan loop för att göra en boll istället för bara en punkt:

skala = 10
x0 = int(playerPos.x)
y0 = int (playerPos.y + 5 * skala)
Z0 = int(playerPos.z)
klart = set()
t = 0
även om t < 2 * pi:
x = x 0 + int (skala * cos(2*t) * (3 + cos(5*t)))
y = y0 + int (skala * sin(2*t) * (3 + cos(5*t)))
z = z0 + int (skala * sin(5*t))
Ball(x,y,z,4,GOLD_BLOCK,Done)
t + = 2 * pi / 10000

Resultatet är i knot2.py i exempelskripten.

Andra provet knop är i trefoil.py, trefoil2.py och borromean.py. Om du ritar med flera material, kan du använda en ordlista i stället för en uppsättning, eller bara gå sekventiellt genom olika material och klart uppsättningen före (det är vad jag gör i trefoil2.py och borromean.py).

Se Steg
Relaterade Ämnen

Summer camp klass på Python kodning med Minecraft

Förra sommaren, lärde jag en femdagars 1,5 timmar per dag sommar läger mini-kurs om Python programmering med Minecraft för begåvade barn som en del av Baylor's University för ungdomar. De flesta av barnen var en del av projektet löfte, en begåvad pro...

Verkliga Minecraft

Vi alla vet att Minecraft är ett fantastiskt spel och Raspberry Pi har gjort det mer awesome. Med Minecraft-API kan vi nu skriva enkla python skript till gränssnittet läsa världen sensorer och knappar till Minecraft världen.Steg 1: Vad du behöver 1....

Hur man gör ett stort fint hus i Minecraft

Innan vi börjar vill jag varna dig att detta är bara en allmän guide hus byggnad, jag kommer inte ge exakta proportioner som vissa människor vill ha en annan typ av hus.Varning: Denna guide är gjord fore Minecraft 1.8. Andra versioner kan användas, m...

Minecraft tapp Server Mod skapande

Minecraft servrar är awesome. De låter dig bygga vänner över hela världen, prata med människor och röra runt med alla kommandon tapp och alla plugins som finns för den. Om du vill bidra till att utveckla plugins för tapp och alla dess användare, bör...

Raspberry Pi och lite om det

I detta instructable jag kommer att förklara vad en raspberry pi är och lite om den. Också kan vilka projekt du göra på den.Steg 1: Vad är en Raspberry Pi?Raspberry Pi är en låg kostnad, kreditkort storlek dator som ansluts till en datorskärm eller T...

Python kodning för Android Minecraft PE

Raspberry PI version av Minecraft låter du skriptet i Python, att göra fraktala mönster, ritningar, sköldpadda grafik, enkel spel, etc. Samma sak kan göras på en stationär version med min Raspberry Jam Mod (här är min Instructable på hur man använder...

Hämta och installera Mods i Minecraft (for Dummies)

Detta är ett super enkelt sätt att ladda ner och installera mods för Minecraft PCSteg 1: Ladda hem forgeLeta upp"smedjan" i google-sökning och klicka på den första länkenDet blir en skärm med en massa länkar säger minecraft version och rekommend...

Star Wars och Star Trek i Minecraft med hallon sylt Mod

Jag ska förklara hur man a enkelt göra Star Wars och Star Trek (och annan) 3D modeller i Minecraft och (b) flyga ett rymdskepp i Minecraft (eller ens har en annan enhet, som en bat eller en zombie, flyga det!), med hjälp av python exempelskripten ing...

Diskmaskin kassaskåp Minecraft Cookie burkar

Gillar du Minecraft? Gillar du cookie burkar? Gillar du använder diskmaskin för att tvätta din nerdy cookie burkar?Är detta instructable för dig!Dessa Minecraft tema cookie burkar är perfekt gåva for...well någon. Vem älskar inte cookie burkar?Vad du...

Krypteringsalgoritm baserat på glada tal med hjälp av Python 2.7

Hej killar, så vi kommer att göra en algoritm, med hjälp av en grundläggande matematik sekvens och lite programmering.För grunderna, låt mig berätta vad glada siffror är siffrorna som är enskilda siffror square lägger upp till 1.Du kan gå kolla in Wi...

En regnbåge av fraktaler i Minecraft

Jag gjorde en massa Python skript för att generera färgglada fraktaler i Minecraft. För att köra dem med den stationära versionen av Minecraft, du behöver min Raspberry Jam Mod (det finns också en version för Android Pocket Edition), och många av min...

Fighting folkmassor i Minecraft P.E!!!

Mobs är mäktiga varelser på minecraft som försöker skada dig. Vill du inte bara att döda dem? Väl är här vett och etikett att förstöra dem!Steg 1: skelett Skelett är mobs som leker i mörka utrymmen eller natt.Gör: Använda pil och båge mot den. Du kan...

Jätte påskägg i Minecraft

Påskmorgonen bestämde jag mig att generera några jätte påskägg i Minecraft med ett python-skript. Jag använde min Raspberry Jam Mod som gör Raspberry PI Minecraft API på skrivbordet Minecraft. (Du kan också använda skriptet på en Raspberry PI, men fä...

Minecraft PE Nerf Strongarm

Hello and thanks for viewing this! Jag ville visa en Nerf strongarm jag gjorde i minecraft pe. Jag är egentligen inte ett mincraft fan, men jag såg att det skulle vara häftigt att gör en minecraft nerf gun... Om du vill ha en Instructable bara fråga!...

Göra en Wither Plushie från Minecraft

är denna lyckliga lilla födelsedag boy/Minecraft freak håller världens första Wither Plushie? Även om det är högst osannolikt, är det möjligt... Vill veta vad mer är möjligt? Möjlighet att skapa en av din egen. I detta Instructable hjälper jag dig ha...

Python programmering: Del 1 - grunderna

Python är en allmänt använd general-purpose, på hög nivå programmeringsspråk. Dess designfilosofi betonar koden läsbarhet, och dess syntax gör att programmerare kan uttrycka begrepp i färre kodrader än vore möjligt i språk som c eller Java. Språket g...

Minecraft diamond malm lampa (3D tryck)

På en eftermiddag jag var uttråkad och ville skapa något, mindes jag minecraft lyktorna jag hade sett förra veckan och beslutade att skapa mina egna.Jag gick till Sketchup och började skapa filen, från en bild jag skapade mönstret hål och sammanfogad...

Dragon kurva med Python

Dragon kurvan är en intressant och vacker fraktal. Det är faktiskt en familj av själv-liknande fraktaler, men jag kommer att fokusera på den mest kända, Heighway draken, döpt efter en av NASA fysiker som studerat det, John Heighway. Dragon kurvan får...

Hur man gör en Python marionett

att göra dina egna python marionett är lätt. Följ bara dessa enkla steg för 66 och du kommer snart vara underhållande och glädja publiken.Våra dockor heter Guido. Du kan se honom i aktion på http://www.thehelloworldprogram.com.Här är vad du behöver:g...