Hackerare Minecraft sul Raspberry Pi

Immagine 1 di 21

I 21 migliori progetti di Minecraft
I 21 migliori progetti di Minecraft
I 21 migliori progetti di Minecraft
I 21 migliori progetti di Minecraft
I 21 migliori progetti di Minecraft
I 21 migliori progetti di Minecraft
I 21 migliori progetti di Minecraft
I 21 migliori progetti di Minecraft
I 21 migliori progetti di Minecraft
I 21 migliori progetti di Minecraft
I 21 migliori progetti di Minecraft
I 21 migliori progetti di Minecraft
I 21 migliori progetti di Minecraft
Cos'è Minecraft?
I 21 migliori progetti di Minecraft
I 21 migliori progetti di Minecraft
I 21 migliori progetti di Minecraft
I 21 migliori progetti di Minecraft
I 21 migliori progetti di Minecraft
I 21 migliori progetti di Minecraft
I 21 migliori progetti di Minecraft

IL Lampone Pi 2 è un dispositivo sorprendentemente capace, considerando il suo prezzo inferiore a £ 30. Viene fornito con una versione di Minecraft preinstallata, insieme a un'API che ti consente di scrivere codice da eseguire nel mondo virtuale. Lo fai in Python, che è semplice da imparare. La combinazione di Pi, Python e Minecraft offre una grande opportunità per iniziare a esplorare le possibilità della programmazione. E l'emozione di vedere una casa costruirsi da sola su un paesaggio virtuale non è solo per i bambini.

Script in Minecraft

Minecraft è un gioco sandbox aperto che non ha una trama da seguire. A volte viene descritto come "Lego virtuale", in quanto il giocatore può costruire qualsiasi tipo di struttura utilizzando i blocchi a sua disposizione. La versione in bundle con Raspberry Pi ha un set di funzionalità limitato adatto al suo ruolo educativo, quindi non devi preoccuparti di essere inseguito dagli zombi, per esempio. Interagire con questo mondo non richiede alcuna configurazione speciale, solo una build recente del sistema operativo Raspbian più un ambiente di programmazione. Opterei per Geany, che puoi installare aprendo LXTerminal e digitando:

sudo apt-get install geany

Iniziamo creando una sceneggiatura per costruire una casa di fronte al giocatore, ma invece di metterne semplicemente una a posto, la animeremo. Costruiremo anche varie impostazioni configurabili, che consentiranno al giocatore di sperimentare dimensioni e materiali diversi. Ciò renderà anche il programma modulare, in modo che possa essere utilizzato come base per creare welling più sofisticati.

Per far funzionare il codice, caricalo in Geany, quindi avvia Minecraft e crea un nuovo mondo. Premi il tasto Tab per rilasciare il cursore dalla finestra di Minecraft e fai clic sull'icona a forma di ingranaggio in Geany (o premi F5) per avviare lo script. Dovresti vedere una casa che si assembla magicamente da sola. In caso contrario, prova a girarti: potrebbe essere dietro di te! Puoi vedere lo script in azione Qui. Allora come funziona la sceneggiatura? Bene, prima apre un collegamento a Minecraft:

importa mcpi.minecraft come minecraft, ora mc=minecraft. Minecraft.create()

In Python è importante prestare attenzione all'indentazione, poiché è così che il codice viene suddiviso in blocchi. In questo caso, entrambe le righe sono allineate con il margine sinistro: la prima riga importa le librerie Minecraft e Time e la seconda crea un oggetto Minecraft da utilizzare ovunque. Le prossime 25 righe impostano alcune variabili per i blocchi che useremo in modo che possiamo riferirci a loro come, diciamo, wood_planks piuttosto che con il loro ID blocco (5, in questo caso). Indichiamo poi quali di questi blocchi verranno utilizzati per le pareti, quali per il tetto e così via. Possiamo facilmente cambiare completamente la costruzione della casa sostituendo i muri di mattoni con i ciottoli, per esempio. Infine, impostiamo la larghezza, la lunghezza e l'altezza della nostra abitazione desiderata.

Ora chiamiamo la funzione Minecraft mc.player.getTilePos() per individuare il giocatore nel panorama e i valori che come back vengono quindi utilizzati per creare due variabili, left e bottom, per descrivere dove andrà il primo angolo dell'abitazione Essere.

Successivamente, la struttura della sceneggiatura corrisponde al processo Minecraft di costruzione "manuale" di una casa. Iniziamo liberando uno spazio in modo che se il giocatore sceglie di costruire la casa all'interno, diciamo, di una montagna, la zona giorno non sarà di solida pietra. Ecco il blocco di codice – la funzione in Python – che fa questo:

def clear_house (nucleare):
se nucleare==Vero:
esplosione_zona=20
altro:
esplosione_zona=0
mc.setBlocks (left-blast_zone, player_
ground, bottom+blast_zone, left+width+blast_
zona, player_ground+height+blast_
zone+10,bottom-length-blast_zone, air_block)

Quando chiamiamo clear_house, passiamo il parametro nuclear. Ha il valore Vero o Falso. Puoi provare a chiamarlo con True per liberare un volume maggiore attorno all'area di destinazione, oppure chiamarlo con False per limitare lo spazio alle dimensioni interne della casa. In Minecraft, la funzione mc.setBlocks serve per creare un cubo di blocchi passandogli le coordinate, in tre dimensioni, degli angoli opposti seguite dal tipo di blocco che si desidera utilizzare. In questo caso stiamo liberando uno spazio, quindi usiamo l'aria.

Una volta liberato lo spazio, è ora di passare alla costruzione. Ognuna di queste fasi costruttive si svolge nella propria funzione. Alla fine dello script, vedrai una funzione chiamata main(), che controlla il flusso del programma chiamando a turno ogni fase di costruzione. Denominando le nostre funzioni in modo sensato e chiamandole da main(), è facile capire cosa sta facendo il programma:

def main():
clear_house (falso)
start_pos=[sinistra, in basso, giocatore_
terra]
build_floor (start_pos)
corso=build_walls (start_pos)
add_door (posizione_porta)
tempo.sleep (ritardo*10)
build_roof (start_pos, corso)

La prossima funzione chiamata in main() costruisce il pavimento – questo usa mc. setBlocks di nuovo per ritagliare una base (per effetto artistico) e quindi aggiungere un cubo di piastrelle del pavimento con una profondità di un blocco per creare un pavimento solido nella nostra casa.

Costruire le mura

La funzione build_walls è il cuore del programma. Il modo più efficiente per creare l'involucro di una casa sarebbe abbattere un solido cubo di mattoni e quindi utilizzare clear_house per ritagliare l'interno. Tuttavia, vogliamo che la casa sembri costruirsi da sola, quindi dobbiamo posizionare i blocchi singolarmente, uno dopo l'altro. Ecco una versione semplificata del codice di costruzione del muro:

def build_course (start_pos, direzione,
corso):
blocchi=1
current_horiz=start_pos[0]
current_vert=start_pos[1]

if direzione==”su” o
direzione==”giù”:
numero_di_blocchi=lunghezza
altro:
numero_di_blocchi=larghezza

mentre blocchi mc.setBlock (current_horiz, player_
terreno+percorso, corrente_vert, muro_blocco)
if direzione==”su”:
current_vert-=1
elif direzione==”giù”:
current_vert+=1
elif direzione==”destra”:
current_horiz+=1
altro:

current_horiz-=1
blocchi=blocchi+1 # passa al blocco successivo
time.sleep (ritardo)

Iniziamo memorizzando la posizione iniziale: questa sarà la posizione dell'ultimo blocco posato dal precedente corso di blocchi. Specifichiamo quindi quanti blocchi posare, a seconda che stiamo percorrendo la lunghezza dell'edificio o la sua larghezza.

La fase di costruzione è contenuta all'interno del blocco while, che continua a funzionare fino a quando non abbiamo posato tutti i blocchi. mc.setBlock posiziona un singolo blocco alle coordinate mostrate, quindi incrementa una di quelle coordinate a seconda della direzione in cui stiamo posando. L'effetto è che i blocchi vengono posati lungo un muro prima di girare un angolo e continuare in un rettangolo fino al completamento del percorso.

La versione finale del codice è un po' più complicata, aggiungendo finestre su ogni parete. Le finestre sono dimensionate dinamicamente in modo da essere lunghe la metà del muro e centrate. Registra anche la posizione della porta; viene aggiunto una volta costruiti i muri. I corsi sono controllati dalla funzione build_walls, che ripete la funzione build_course per ogni corso di blocchi fino a raggiungere l'altezza finale.

Potresti anche provare a costruire la tua casa nell'oceano o in aria: fallo premendo due volte la barra spaziatrice per volare, quindi premi di nuovo per rialzarti prima di eseguire la sceneggiatura. Modifica le variabili wall_block e roof_block per vedere cosa succede se crei i muri o il tetto con l'oro o, in effetti, con la lava. Puoi aggiungere i tuoi blocchi consultando l'elenco completo Quie aggiungendo la variabile associata allo script. Modifiche più impegnative potrebbero includere l'aggiunta di più piani alla struttura se la variabile altezza è impostata su un valore sufficientemente elevato. Scopri come aggiungere torrette, ad esempio, e avrai la stoffa di un castello di Minecraft.

Queste modifiche potrebbero sembrare banali, ma programmo professionalmente da più di 20 anni e provo ancora un brivido quando un frammento di codice funziona come previsto. Se non hai mai programmato prima, spero che ci provi e se hai un fan di Minecraft in casa, ti suggerisco di lasciarlo libero sul codice e vedere dove lo porta. Troverai collegamenti alle risorse di Minecraft Pi su kevpartner.co.uk/programming.