Python coding for Minecraft (7 / 17 steg)

Steg 7: Avancerade sköldpadda-baserade ritning



Med de left(), right(), up() och down() metoderna för sköldpaddan är lätt. Men för några ritningar behöver vi mer sofistikerad 3D kontroll. Exempelvis kanske du vill rita en donut lutar 45 grader upp. Det är frestande att ta glas donut skriptet från föregående steg, och lägga till före loopen:

t.up(45)

Men som producerar ett oväntat resultat--se bilden. Anledningen till detta är att sköldpaddan kommer att klättra upp hela tiden, medan metoden d.left() roterar det runt den vertikala axeln, och så att du får en spiral.

I stället, vad vi behöver göra är gir/pitch/rulle rotatins sköldpaddan. Se bild från NASA (amerikanska regeringen verk är allmän egendom) förklarar hur de tre vinklarna gå, och bara tro att flygplan är din sköldpadda. (Tyvärr, Minecraft begränsningarna gör rulle vinkeln påverkar inte hur sköldpaddan ser eller perspektiv som du tittar på.) Vad vi behöver göra för att fästa våra sidledes donut är först rulla vår sköldpadda av 45 grader med t.roll(45), och sedan rita donut när använda t.yaw(-angle) istället för t.left(angle). Den reviderade koden finns i skärmdumpen.

Vad är trevligt om de gir/pitch/rulle rotationer är att de är alltid i förhållande till var sköldpaddan pekar, medan left() och right() är i förhållande till Minecraft världen.

Slutligen, här är ett mycket mer avancerat exempel. Låt oss Rita ett träd. Detta innebär att göra en rekursiv funktion. Börja med att se till att ritningen är klar så fort som möjligt

från turtle importera *
t = Turtle()
t.pendelay(0)
t.Turtle(none)

Nu gör vi våra rekursiv trädet funktion. Den grundläggande tanken bakom detta är att en gren är bara ett mindre träd. Så gör vi en funktion som tar en räknare och en grenlängd. Räknaren anger hur många iterationer trädet kommer att gå. Till exempel räknare = 1 innebär bara stammen kommer att dras, och räknare = 1 innebär stammen och en uppsättning grenar kommer att dras.

def tree(counter,branchLen):
om counter == 0:
returnera
t.go(branchLen)
för i i range(4):
t.pitch(30)
Tree(Counter-1,branchLen*0.75)
t.pitch(-30)
t.roll(90)
t.Back(branchLen)

Koden kontrollerar först om våra counter har springa ner till noll. I så fall har inte vi något att dra. Sedan drar vi en stam. Sedan drar vi fyra grenar som sticker upp ur det med en enkel slinga. För att utforma denna bit av koden, jag bara föreställa mig själv som sköldpaddan, har precis flyttat längs stammen. Om du vill rita en gren, jag luta mig själv upp med 30 grader (dvs. t.pitch(30)) och rita ett nytt träd av mindre storlek: dess counter är mindre av en, och dess stam kommer att vara 3/4 av längden på min nuvarande koffert. Jag tror tilt mig själv tillbaka ner med 30 grader. Jag själv roteras 90 grader och upprepa övningen. Slutligen, när jag är klar med grenar, jag gå tillbaka ner stammen.

Slutligen måste jag bara åberopa denna kod. Jag kommer att göra ett träd med en disk i 6 och en inledande grenlängd 20. Och för bra åtgärd, blir nog göra det av trä, och naturligtvis vertikalt uppåt:

t.penblock(Wood)
t.verticalangle(90)
Tree(6,20)

Detta fractal träd ser inte mycket realistisk. Vi bör göra den tjocka stammen och grenarna få tunnare och tunnare eftersom de går utåt (säga, få hälften så tjock, tills de når en enda block), och vi bör växla från trä till lämnar block när vi går ut. Men mest av allt, riktiga träd är inte så vanlig. Vi behöver lite slumpmässighet. Den enklaste formen av slumpmässighet är bara för att ge varje gren en chans att misslyckas att växa, säger 20% chans. Jag genomfört alla dessa i mitt fancytree.py skript. Resulterande trädet ser förvånansvärt realistisk för något produceras av en sådan relativt enkel bit kod. En rolig bieffekt av hur jag genomfört det är att det finns en 20% chans att ingenting kommer att dras--dvs, trädet har en chans att växa, som också är realistiska. Och varje gång du kör skriptet, du får något annat.

En annan användbar funktion i klassen sköldpadda ritning är att kunna rita inte bara linjer utan månghörnigt ytor. Det gör bara göra t.startface(), rita din yta och gör sedan t.endface(). När du är i ansiktet läge, varje gång du drar en linje, koden faktiskt ritar en triangel: en vertex är sköldpaddan var när t.startface() anropades och linjen är den motsatta kanten. Detta drar en pentagon lutas på dess sida vid 45 grader:

t.roll(45)
t.startface()
för i i range(5):
t.go(20)
t.Yaw(360/5)
t.endface()

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...