Hoved Streamingtjenester Hacking Minecraft på Raspberry Pi

Hacking Minecraft på Raspberry Pi



Raspberry Pi 2 er en overraskende dyktig enhet, med tanke på prisen under £ 30. Den leveres med en forhåndsinstallert versjon av Minecraft, sammen med en API som lar deg skrive kode som skal kjøres i den virtuelle verdenen. Du gjør dette i Python, som er enkelt å lære. Kombinasjonen av Pi, Python og Minecraft gir en flott mulighet til å begynne å utforske mulighetene for programmering. Og spenningen ved å se et hus bygge seg på et virtuelt landskap er heller ikke bare for barn.

hvordan du endrer Netflix fra spansk til engelsk

Skripting i Minecraft

Minecraft er et åpent sandkassespill som ikke har en plottelinje å følge. Noen ganger blir det beskrevet som virtuell Lego, ettersom spilleren kan bygge alle slags strukturer ved hjelp av blokkene de har til rådighet. Versjonen som følger med Raspberry Pi har et begrenset funksjonssett som passer til den pedagogiske rollen - slik at du ikke trenger å bekymre deg for å bli forfulgt av zombier, for eksempel. Å samhandle med denne verdenen krever ingen spesielle oppsett, bare en nylig bygging av Raspbian OS pluss et programmeringsmiljø. Jeg velger Geany, som du kan installere ved å åpne LXTerminal og skrive:

sudo apt-get install geany

La oss starte med å lage et manus for å bygge et hus foran spilleren - men i stedet for bare å slå et på plass, skal vi animere det. Vi skal også bygge inn forskjellige konfigurerbare innstillinger, som gjør det mulig for spilleren å eksperimentere med forskjellige dimensjoner og materialer. Dette vil også gjøre programmet modulært, slik at det kan brukes som grunnlag for å skape mer sofistikerte brønner.

For å få koden til å fungere, last den inn i Geany, start Minecraft og skape en ny verden. Trykk på Tab-tasten for å frigjøre markøren fra Minecraft-vinduet, og klikk på tannhjulikonet i Geany (eller trykk på F5) for å starte skriptet. Du bør se et hus magisk montere seg selv. Hvis du ikke gjør det, kan du prøve å snu - det kan være bak deg! Du kan se skriptet i aksjon her . Så hvordan fungerer manuset? Først åpner den en lenke til Minecraft:

importer mcpi.minecraft som minecraft, tid mc = minecraft.Minecraft.create ()

I Python er det viktig å være oppmerksom på innrykk, siden det er slik koden er delt inn i blokker. I dette tilfellet er begge linjene i flukt med venstre marg: den første linjen importerer Minecraft og Time-bibliotekene, og den andre oppretter et Minecraft-objekt som vi kan bruke hele veien. De neste 25 linjene setter noen variabler for blokkene vi skal bruke, slik at vi kan referere til dem som for eksempel wood_planks i stedet for med blokk-IDen deres (5, i dette tilfellet). Vi indikerer deretter hvilke av disse blokkene som skal brukes til veggene, hvilke til taket og så videre. Vi kan enkelt endre konstruksjonen av huset fullstendig ved å bytte murstein mot brostein, for eksempel. Til slutt setter vi bredden, lengden og høyden på ønsket bolig.

Vi kaller nå Minecraft-funksjonen mc.player.getTilePos () for å finne spilleren i landskapet, og verdiene som kommer tilbake blir deretter brukt til å lage to variabler, venstre og bunn, for å beskrive hvor det første hjørnet av boligen vil være .

Deretter samsvarer strukturen til manuset med Minecraft-prosessen med å bygge et hus manuelt. Vi begynner med å rydde et rom slik at hvis spilleren velger å bygge huset inne, for eksempel et fjell, vil ikke boområdet være solid stein. Her er kodeblokken - funksjonen i Python - som gjør dette:

def clear_house (kjernefysisk):
hvis kjernefysisk == Sant:
blast_zone = 20
ellers:
blast_zone = 0
mc.setBlocks (left-blast_zone, player_
bakken, bunn + blast_zone, venstre + bredde + blast_
zone, player_ground + høyde + blast_
zone + 10, bottom-length-blast_zone, air_block)

Når vi kaller clear_house, sender vi inn parameteren atom. Den har verdien Sann eller Usann. Du kan prøve å kalle det med True for å fjerne et større volum rundt målområdet, eller ringe det med False for å begrense klaring til husets indre dimensjoner. I Minecraft brukes mc.setBlocks-funksjonen til å lage en terning av blokker ved å sende den koordinatene, i tre dimensjoner, av motsatte hjørner etterfulgt av blokkeringen du vil bruke. I dette tilfellet rydder vi et rom, så vi bruker luft.

Når vi har ryddet plassen, er det på tide å gå videre til konstruksjon. Hver av disse byggetrinnene foregår i sin egen funksjon. På slutten av skriptet ser du en funksjon som kalles main (), som styrer programflyten ved å kalle hver fase av konstruksjonen etter tur. Ved å navngi funksjonene våre fornuftig og ringe dem fra main (), er det lett å forstå hva programmet gjør:

def main ():
clear_house (False)
start_pos = [venstre, nederst, spiller_
bakke]
build_floor (start_pos)
kurs = build_walls (start_pos)
add_door (door_posisjon)
time.sleep (forsinkelse * 10)
build_roof (start_pos, kurs)

Den neste funksjonen som kalles main () bygger gulvet - dette bruker mc. setBlocks igjen for å skjære ut et fundament (for kunstnerisk effekt) og deretter legge til en terning av gulvfliser med en dybde på en blokk for å skape et solid gulv i huset vårt.

hvordan fortelle når noen sist var online pof

Å bygge veggene

Build_walls-funksjonen er hjertet i programmet. Den mest effektive måten å lage skallet til et hus på ville være å slå ned en solid kube av murstein og deretter bruke clear_house til å skjære ut interiøret. Imidlertid ønsker vi at huset ser ut til å konstruere seg selv, så vi må plassere blokker hver for seg. Her er en forenklet versjon av murbyggekoden:

def build_course (start_pos, retning,
kurs):
blokker = 1
current_horiz = start_pos [0]
current_vert = start_pos [1]

hvis retning == opp eller
retning == ned:
number_of_blocks = lengde
ellers:
number_of_blocks = bredde

mens blokkermc.setBlock (current_horiz, player_
bakken + kurs, gjeldende_vert, veggblokk)
hvis retning == opp:
current_vert- = 1
elif retning == ned:
current_vert + = 1
elif retning == høyre:
current_horiz + = 1
ellers:

current_horiz- = 1
blokker = blokker + 1 # flytt til neste blokk
time.sleep (forsinkelse)

Vi begynner med å lagre startposisjonen - dette vil være posisjonen til den siste blokken som ble lagt fra forrige gang. Deretter spesifiserer vi hvor mange blokker vi skal legge, avhengig av om vi går langs bygningens lengde eller bredden.

Byggefasen er inneholdt i mens blokken - denne fortsetter å løpe til vi har lagt alle blokkene. mc.setBlock plasserer en enkelt blokk ved koordinatene som vises, og øker deretter en av disse koordinatene, avhengig av retningen vi legger. Effekten er at blokker legges langs en vegg før du dreier et hjørne og fortsetter i et rektangel til kurset er fullført.

beste gratis antivirus 2017 for Windows 10

Den endelige versjonen av koden er litt mer involvert, og legger til vinduer i hver vegg. Vinduene er dynamisk dimensjonert slik at de er halve lengden på veggen og sentrerte. Den registrerer også posisjonen for døren; den er lagt til når veggene er bygget. Kurs styres fra build_walls-funksjonen, som gjentar build_course-funksjonen for hvert blokkløp til den når den endelige høyden.

Du kan til og med prøve å bygge huset ditt i havet eller i luften - gjør dette ved å dobbeltklikke på mellomromstasten for å fly, og trykk deretter igjen for å heve deg selv før du kjører skriptet. Endre variablene wall_block og roof_block for å se hva som skjer hvis du lager veggene eller taket av gull eller faktisk lava. Du kan legge til dine egne blokker ved å se hele listen her , og legge til den tilhørende variabelen i skriptet. Mer utfordrende modifikasjoner kan omfatte å legge til flere etasjer i strukturen hvis høydevariabelen er satt til en stor nok verdi. Regn ut hvordan du kan legge til tårn, for eksempel, og du har muligheten til et Minecraft-slott.

Disse tilpasningene kan høres trivielle ut, men jeg har programmert profesjonelt i mer enn 20 år, og jeg får fortsatt en spenning når et kodebit fungerer som det skal. Hvis du aldri har programmert før, håper jeg at du får prøve - og hvis du har en Minecraft-fan i husstanden, foreslår jeg at du slipper dem løs på koden og ser hvor den tar dem. Du finner lenker til Minecraft Pi-ressurser på kevpartner.co.uk/programming .

Interessante Artikler

Redaksjonens

Gratis alternativer til LogMeIn (oppdatert)
Gratis alternativer til LogMeIn (oppdatert)
Dette innlegget ble oppdatert den 28/1 med tilleggsinnhold. Jeg har brukt den gratis LogMeIn-tjenesten for ekstern tilgang i flere år nå. Jeg har aldri følt behov for å betale for den kommersielle tjenesten, som mest hva jeg
Hvordan endre spøkelsen på Snapchat
Hvordan endre spøkelsen på Snapchat
Fra trofeer til vennemojier har Snapchat kommet på flere og flere måter å gamify appen sin på. Det er ikke rart at brukere mistenkte de nye spøkelsesikonene som dukket opp i januar 2016-oppdateringen. Helt siden
SharePoint: Slik legger du til en mappe
SharePoint: Slik legger du til en mappe
Hvis du bruker SharePoint til å dele filer med teamet ditt og vil vite hvordan du legger til en mappe, har du funnet riktig guide. Vi tar deg gjennom trinnene for hvordan du legger til og laster opp
Hvordan gjenopprette lukkede faner i Chrome
Hvordan gjenopprette lukkede faner i Chrome
Enhver vanlig bruker av Chrome-nettleseren vil ofte ha flere faner åpne samtidig. Å lukke faner ved et uhell er noe som kan skje med enhver bruker når som helst mens du surfer på flere faner. Heldigvis har utviklerne forventet det
Hvordan lagre Outlook-e-post på harddisken
Hvordan lagre Outlook-e-post på harddisken
Skyen er vel og bra, men noen ganger er det best å ha sikkerheten til lokalt lagrede e-poster. Enten du driver en bedrift, eller bare vil ha en fullstendig oversikt over elektronisk korrespondanse for andre
Tag Archives: KB3161608 direkte nedlastningskoblinger
Tag Archives: KB3161608 direkte nedlastningskoblinger
Slik kopierer du et ark i Excel
Slik kopierer du et ark i Excel
Når du arbeider i Excel, må du noen ganger lage en eller flere eksemplarer av regnearket. Heldigvis er det ikke vanskelig å lage dupliserte regneark. I denne artikkelen lærer du hvordan du dupliserer et Excel-ark i flere