Vigtigste Streaming Services Hacking Minecraft på Raspberry Pi

Hacking Minecraft på Raspberry Pi



Raspberry Pi 2 er en overraskende dygtig enhed i betragtning af dens pris under £ 30. Den leveres med en version af Minecraft forudinstalleret sammen med en API, der giver dig mulighed for at skrive kode, der skal køres i den virtuelle verden. Du gør dette i Python, som er let at lære. Kombinationen af ​​Pi, Python og Minecraft giver en god mulighed for at begynde at udforske mulighederne for programmering. Og spændingen ved at se et hus bygge sig på et virtuelt landskab er heller ikke kun for børn.

fjern skrivebeskyttelse fra USB-drev

Scripting i Minecraft

Minecraft er et åbent sandkassespil, der ikke har en plotlinje at følge. Det er undertiden beskrevet som virtuel Lego, da spilleren kan bygge enhver form for struktur ved hjælp af de blokke, de har til rådighed. Den version, der følger med Raspberry Pi, har et begrænset funktionssæt, der passer til dets uddannelsesmæssige rolle - så du behøver ikke at bekymre dig om at blive forfulgt af zombier, for eksempel. Interaktion med denne verden kræver ingen speciel opsætning, kun en nyere version af Raspbian OS plus et programmeringsmiljø. Jeg vælger Geany, som du kan installere ved at åbne LXTerminal og skrive:

sudo apt-get install geany

Lad os starte med at oprette et script til at bygge et hus foran afspilleren - men i stedet for bare at slå et på plads, vil vi animere det. Vi vil også bygge forskellige konfigurerbare indstillinger, som gør det muligt for spilleren at eksperimentere med forskellige dimensioner og materialer. Dette vil også gøre programmet modulært, så det kan bruges som grundlag for at skabe mere sofistikerede brønde.

For at få koden til at fungere skal du indlæse den i Geany og derefter starte Minecraft og skabe en ny verden. Tryk på Tab-tasten for at frigøre markøren fra Minecraft-vinduet, og klik på tandhjulsikonet i Geany (eller tryk på F5) for at starte scriptet. Du skal se et hus samle sig selv magisk. Hvis du ikke gør det, kan du prøve at vende dig om - det kan være bag dig! Du kan se scriptet i aktion her . Så hvordan fungerer scriptet? Nå åbner det først et link til Minecraft:

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

I Python er det vigtigt at være opmærksom på indrykning, da det er sådan, kode er opdelt i blokke. I dette tilfælde flugter begge linjer med venstre margen: den første linje importerer Minecraft og Time-bibliotekerne, og den anden opretter et Minecraft-objekt, som vi kan bruge hele vejen igennem. De næste 25 linjer angiver et par variabler for de blokke, vi skal bruge, så vi kan henvise til dem som f.eks. Træplanker snarere end ved deres blok-ID (5, i dette tilfælde). Vi angiver derefter, hvilke af disse blokke der skal bruges til væggene, hvilke til taget osv. Vi kan nemt ændre husets opførelse fuldstændigt ved f.eks. At bytte mursten mod brosten. Endelig indstiller vi bredden, længden og højden af ​​vores ønskede bolig.

Vi kalder nu Minecraft-funktionen mc.player.getTilePos () for at finde afspilleren i landskabet, og de værdier, der kommer tilbage, bruges derefter til at oprette to variabler, venstre og nederste, for at beskrive, hvor det første hjørne af boligen vil være .

Derefter svarer strukturen til scriptet til Minecraft-processen med manuel bygning af et hus. Vi begynder med at rydde et rum, så hvis afspilleren vælger at bygge huset inde i f.eks. Et bjerg, vil boligarealet ikke være massiv sten. Her er kodeblokken - funktionen i Python - der gør dette:

def clear_house (nuklear):
hvis nuklear == Sand:
blast_zone = 20
andet:
blast_zone = 0
mc.setBlocks (venstre-blast_zone, spiller_
jorden, bunden + blast_zone, venstre + bredden + blast_
zone, player_ground + højde + blast_
zone + 10, bundlængde-blast_zone, air_block)

Når vi kalder clear_house, sender vi parameteren nuklear. Det har værdien Sand eller Falsk. Du kan prøve at kalde det med True for at rydde et større volumen omkring målområdet eller kalde det med False for at begrænse clearance til husets indre dimensioner. I Minecraft bruges mc.setBlocks-funktionen til at oprette en terning af blokke ved at sende den koordinaterne, i tre dimensioner, af modsatte hjørner efterfulgt af den bloktype, du ønsker at bruge. I dette tilfælde rydder vi et rum, så vi bruger luft.

Når vi har ryddet plads, er det tid til at gå videre til byggeri. Hver af disse konstruktionstrin finder sted i sin egen funktion. I slutningen af ​​scriptet vil du se en funktion kaldet main (), som styrer programflowet ved at kalde hver enkelt byggefase igen. Ved at navngive vores funktioner fornuftigt og kalde dem fra main () er det let at forstå, hvad programmet laver:

def hoved ():
clear_house (Falsk)
start_pos = [venstre, nederst, spiller_
jord]
build_floor (start_pos)
kursus = build_walls (start_pos)
add_door (door_position)
time.sleep (forsinkelse * 10)
build_roof (start_pos, kursus)

Den næste funktion kaldet main () bygger gulvet - dette bruger mc. setBlocks igen for at skære et fundament (for kunstnerisk effekt) og derefter tilføje en terning af gulvfliser med en dybde på en blok for at skabe et solidt gulv i vores hus.

hvordan man sender e-mails til en mappe i Outlook

Opbygning af væggene

Funktionen build_walls er kernen i programmet. Den mest effektive måde at skabe husets skal på ville være at slå en solid terning af mursten ned og derefter bruge clear_house til at skære interiøret ud. Vi ønsker imidlertid, at huset ser ud til at konstruere sig selv, så vi er nødt til at placere blokke individuelt, den ene efter den anden. Her er en forenklet version af murbygningskoden:

def build_course (start_pos, retning,
Rute):
blokke = 1
current_horiz = start_pos [0]
current_vert = start_pos [1]

hvis retning == op eller
retning == ned:
number_of_blocks = længde
andet:
number_of_blocks = bredde

mens blokkemc.setBlock (nuværende_horiz, spiller_
jorden + kursus, nuværende_vert, wall_block)
hvis retning == op:
nuværende_vert- = 1
elif retning == ned:
nuværende_vert + = 1
elif retning == højre:
nuværende_horiz + = 1
andet:

nuværende_horiz- = 1
blokke = blokke + 1 # gå videre til næste blok
time.sleep (forsinkelse)

Vi begynder med at gemme startpositionen - dette vil være positionen for den sidste blok, der blev lagt fra det foregående blok. Vi specificerer derefter, hvor mange blokke der skal lægges, afhængigt af om vi går langs bygningens længde eller dens bredde.

Bygningsfasen er indeholdt i mens blok - dette fortsætter, indtil vi har lagt alle blokke. mc.setBlock placerer en enkelt blok ved de viste koordinater og forøger derefter en af ​​disse koordinater afhængigt af den retning, vi lægger i. Effekten er, at blokke lægges langs en mur, inden de drejer om et hjørne og fortsætter i et rektangel, indtil banen er afsluttet.

hvordan man flyver i minecraft pe overlevelse

Den endelige version af koden er lidt mere involveret og tilføjer vinduer til hver væg. Vinduerne er dynamisk dimensioneret, så de er halvdelen af ​​væggen og centreret. Det registrerer også dørens position; det tilføjes, når væggene er bygget. Kurser styres fra build_walls-funktionen, som gentager build_course-funktionen for hvert blokforløb, indtil den når den endelige højde.

Du kan endda prøve at bygge dit hus i havet eller i luften - gør dette ved at dobbeltklikke på mellemrumstasten for at flyve, og tryk derefter igen for at hæve dig selv, før du kører scriptet. Ændr variablerne wall_block og roof_block for at se, hvad der sker, hvis du opretter væggene eller taget af guld eller faktisk lava. Du kan tilføje dine egne blokke ved at se hele listen her , og tilføje den tilknyttede variabel til scriptet. Mere udfordrende ændringer kan omfatte tilføjelse af flere etager til strukturen, hvis højdevariablen er indstillet til en stor nok værdi. Find ud af, hvordan du f.eks. Tilføjer tårne, og du har muligheden for et Minecraft-slot.

Disse tweaks lyder måske trivielt, men jeg har programmeret professionelt i mere end 20 år, og jeg får stadig en spænding, når et kodestykke fungerer efter hensigten. Hvis du aldrig har programmeret før, håber jeg, du giver det en chance - og hvis du har en Minecraft-fan i husstanden, foreslår jeg at lade dem løs på koden og se, hvor den fører dem. Du finder links til Minecraft Pi-ressourcer på kevpartner.co.uk/programmering .

Interessante Artikler

Redaktørens Valg

iPad oplader ikke – Prøv disse rettelser
iPad oplader ikke – Prøv disse rettelser
En iPad kan stoppe opladningen af ​​mange forskellige årsager. Mens de fleste brugere reagerer på dette problem ved at gå til den nærmeste Apple-butik, kan nogle problemer løses uden professionel hjælp. Du skal dog identificere, hvorfor din iPad er det
Sådan sletter du en kontakt i WhatsApp
Sådan sletter du en kontakt i WhatsApp
Der er mange grunde til, at du muligvis skal opdatere din telefonkontaktliste. Nogle gange kan din kontakt ændre telefonnumre. I andre tilfælde er du måske bare holdt op med at tale med dem. Uanset årsagen, skal du muligvis slette
Sådan skærmbilleder du på en HP-laptop
Sådan skærmbilleder du på en HP-laptop
Har du brug for at fange skærmen på din HP-enhed? Sådan tager du et skærmbillede eller udskriver skærmen på HP bærbare computere og tablets.
Sådan tilføjes apps til din startskærm i Nova Launcher
Sådan tilføjes apps til din startskærm i Nova Launcher
Nova Launcher er en af ​​de bedste, hvis ikke den bedste tredjeparts launcher til Android-telefoner. Det er meget bedre end standardstarteren, fordi det giver dig mulighed for at tilpasse din startskærm, app-skuffen, temaerne på
Lås Oplæsernøgle i Windows 10
Lås Oplæsernøgle i Windows 10
Sådan låses fortællertasten i Windows 10, så du ikke behøver at trykke på Caps Lock eller Insert for at udføre en Oplæserkommando.
Pixel 3 XL anmeldelse: Googles phablet er en skønhed
Pixel 3 XL anmeldelse: Googles phablet er en skønhed
Lad os få elefanten i rummet ud af vejen først. Ja, Pixel 3 XL har et skærmhak. Ja, dens skærmhak er passende bøffere end den på iPhone Xs, Xs Max, Huawei P20 Pro
GEM Box er en anden Android-konsol, der helt savner mærket
GEM Box er en anden Android-konsol, der helt savner mærket
Googles Android-operativsystem fungerer perfekt på smartphones og tablets, men det har altid haft lidt problemer, når det kommer til tv'et. Googles egen Nexus Player, Nvidias Shield TV og en masse Android