Da WIKI CoderDojo Firenze.
(Creata pagina con "TO BE COMPLETED P<br/>M")
 
(Esercizio 2: Seminare funghi...)
 
(32 versioni intermedie di uno stesso utente non sono mostrate )
Riga 1: Riga 1:
TO BE COMPLETED
+
Gli esercizi descitti in questa pagina sono stati adattati a partire da quelli messi a disposizione dal repository [https://github.com/teachthenet/TeachCraft-Challenges TeachCraft-Challenges]. Si ringrazia [https://github.com/teachthenet TeachTheNet] per l'interessante materiale messo a disposizione.
  
 +
== Prerequisiti ==
 +
 +
Deve essere stato installato l'interprete Python e il launcher Minecraft come descritto in [http://kata.coderdojo.it/wiki/index.php?title=Python_-_Minecraft:_Setup_PC_dei_Partecipanti un'altra pagina di questo sito]. Deve essere disponibile un server Minecraft che disponga di un'interfaccia API in Python a cui collegarsi in modalità multiplayer.
 +
 +
Nel caso non lo avessete a disposizione in questo sito è disponibile [http://kata.coderdojo.it/wiki/index.php?title=Python_-_Minecraft:_setup_di_un_server_Minecraft una pagina] che descrive come installarlo e avviarlo.
 +
 +
Nel seguito supponiamo che il server sia disponibile all'indirizzo IP '''192.168.12.10'''.
 +
 +
== Avviare il Launcher Minecraft ==
 +
 +
Per avviare il launcher Minecraft fare doppio click sull'icona '''Minecraft_Launcher.jar''' presente nella directory '''TeachCraft-Challenges''' preparare al punto precedente. In alternaltiva lanciare da terminale con il comando:
 +
<pre>$ java -jar Minecraft_Launcher.jar
 +
</pre>
 +
Una volta che il caricamento del launcher è terminato apparirà la seguente finestra:
 +
 +
[[File:TLauncher 1.964 217.png|600px|File:TLauncher_1.964_217.png]]
 +
 +
=== Configurazione ===
 +
 +
Per evitare che tutte le volte che ci allontaniamo dalla finestra di Minecraft questa si disattivi, occorre modificare la configurazione di Minecraft.
 +
In particolare occorre aprire il file di configurazione e modificare il parametro '''pauseOnLostFocus''' impostandolo al valore '''false''':
 +
 +
<pre>
 +
pauseOnLostFocus:false
 +
</pre>
 +
 +
Per accedere al file di configurazione cliccare sul pulsante "Game Folder" in basso a destra della finestra del Launcher. All'interno della finestra che si aprirà cercare il file '''options.txt'''; aprirlo con un editor e modificare il parametro come indicato sopra.
 +
 +
=== Collegamento al server ===
 +
 +
Cliccare su '''Enter the Game''' in basso a destra. Attendere il caricamento di Minecraft. Apparirà la seguente finestra:
 +
 +
[[File:Minecraft 1.8.8 218.png|600px|File:Minecraft_1.8.8_218.png]]
 +
 +
A questo punto cliccare sul pulsante '''Multiplayer'''. Apparirà una nuova finestra con una serie di pulsanti, scegliere '''Direct connect'''. Appare un'ulteriore finestra dove inserire l'indirizzo IP del server (nel nostro caso, come esempio, 192.168.12.10):
 +
 +
[[File:Minecraft 1.8.8 219.png|600px|File:Minecraft_1.8.8_219.png]]
 +
 +
Cliccare su '''Join Server'''. Se tutto andrà a buon fine ci si troverà all'interno di un paesaggio Minecraft. Possiamo finalmente iniziare gli esperimenti con Python.
 +
 +
== Scrivere il primo programma Python ==
 +
 +
Questo esercizio insegna come aprire una connessione con il server Minecraft per realizzare una semplice operazione di scrittura sulla chat del gioco.
 +
 +
Aprire l'editor che si è scelto per scrivere il programma Python e inserire le seguenti righe:
 +
 +
<syntaxhighlight lang="python" line >
 +
import mcpi.minecraft as minecraft
 +
mc = minecraft.Minecraft.create(address="192.168.12.10", name="rodmcban")
 +
mc.postToChat("Ciao Minecraft!")
 +
</syntaxhighlight>
 +
 +
Al posto dell'indirizzo assegnato alla variabile '''address''' inserire l'indirizzo del server a cui si è collegati (quello inserito nella finestra precedente nel campo server address) e come '''"name"''' utilizzare quello del proprio personaggio (inserito all'inizio nella prima schermata del launcher).
 +
 +
Salvare il file così scritto all'interno della directory '''TeachCraft-Challenges'''.
 +
 +
Eseguire il programma Python con l'interprete che si ha a disposizione. Sulla finestra di Minecraft apparirà una riga di chat con scritto '''"Ciao Minecraft!"'''
 +
 +
[[File:Minecraft 1.8.8 221.png|600px|File:Minecraft_1.8.8_221.png]]
 +
 +
Vediamo nel dettaglio cosa significano le tre righe che abbiamo scritto.
 +
 +
<syntaxhighlight lang="python" line >
 +
import mcpi.minecraft as minecraft
 +
</syntaxhighlight>
 +
 +
Questa prima riga serve per spiegare a Python che abbiamo intenzione di utilizzare la libreria '''mcpi''' che è quella che fornisce le funzionalità per comunicare con il server Minecraft. Non realizza nessuna operazione visibile, ma dice a Python che vogliamo inviare dei comandi a Minecraft.
 +
 +
<syntaxhighlight lang="python" line start="2" >
 +
mc = minecraft.Minecraft.create(address="192.168.12.10", name="rodmcban")
 +
</syntaxhighlight>
 +
 +
Questa seconda riga dice a Python di collegarsi al server Minecraft che si trova all'indirizzo '''192.168.12.10''' e, su questo server, agganciarsi al personaggio di nome '''rodmcban'''.
 +
 +
Queste due righe, che ancora non fanno nulla di visibile, sono obbligatorie per tutti i programmi che scriveremo: senza di queste infatti Python non è in grado di sapere come interpretare i comandi che seguono.
 +
 +
Notare la variabile '''mc''': in questo "contenitore" viene salvata la connessione con il personaggio che abbiamo scelto. D'ora in avanti, quando useremo questa variabile, Python capirà che vogliamo fare un'operazione con quello specifico personaggio.
 +
 +
Con queste prime due righe abbiamo stabilito la comunicazione con Minecraft, ma, se ci fermassimo qui, non succederebbe niente. Diciamo che avremmo scritto un programma inutile: apriamo una connessione ma poi non ci facciamo niente. Il succo di questo semplicissimo programma è nella terza istruzione:
 +
 +
<syntaxhighlight lang="python" line start="3" >
 +
mc.postToChat("Ciao Minecraft!")
 +
</syntaxhighlight>
 +
 +
Con questa istruzione diciamo a Python di eseguire un'operazione con la variabile '''mc''' (e quindi verso il personaggio che abbiamo scelto). In particolare l'operazione che chiediamo di eseguire è '''postToChat''' che mostra un messaggio sulla chat del personaggio.
 +
 +
== Esercizio 1: Teletrasportare il personaggio ==
 +
 +
Con questo secondo programma vediamo come inviare un comando che cambia la posizione del personaggio a cui siamo agganciati. L'esempio è tratto dalla [https://github.com/teachthenet/TeachCraft-Challenges/blob/master/lesson_1.md prima lezione] del sito TeachCraft-Challenges.
 +
 +
Il codice da scrivere stavolta è leggermente di più:
 +
 +
<syntaxhighlight lang="python" line >
 +
# coding=utf-8
 +
import mcpi.minecraft as minecraft
 +
 +
# NOTA - sostituire l'indirizzo IP 192.168.12.10 con quello del server a cui
 +
# si è collegati e "rodmcban" con il nome del proprio personaggio
 +
mc = minecraft.Minecraft.create(address="192.168.12.10", name="rodmcban")
 +
 +
mc.player.setPos(-33, 20, 34)
 +
</syntaxhighlight>
 +
 +
Qui introduciamo i '''commenti''' che sono le righe che iniziano con il carattere '''#'''.
 +
Queste righe servono a noi per ricordarci qualcosa sul codice che stiamo scrivendo ma sono completamente ignorate dall'interprete Python. Di fatto non servono all'esecuzione del programma
 +
 +
A parte i commenti riconosciamo le prime due righe di codice, che altro non sono che quelle che già conosciamo e che servono a stabilire una connessione con un personaggio sul server.
 +
 +
La terza riga che è quella che effettua veramente un'operazione questa volta utilizza il metodo '''setPos''' per impostare la posizione del personaggio a dove vogliamo noi.
 +
 +
Provate a spostarvi per il mondo Minecraft dove volete e poi provate ad eseguire questo nuovo programma: tornerete tutte le volte a una posizione predefinita.
 +
 +
=== Concetto di programmazione: le VARIABILI ===
 +
 +
Usciamo adesso un attimo dal mondo Minecraft e parliamo di un concetto molto importante della programmazione: le '''variabili'''.
 +
 +
Immaginate una variabile come un contenitore che contiene un valore. Per esempio L'istruzione:
 +
 +
<syntaxhighlight lang="python" line >
 +
v = 1000
 +
</syntaxhighlight>
 +
 +
assegna alla variabile '''v''' il valore '''1000'''. Quando nel seguito faremo riferimento alla variabile '''v''' semplicemente otterremo il valore '''1000'''. Per esempio proviamo a scrivere ed eseguire il seguente programma:
 +
 +
<syntaxhighlight lang="python" line >
 +
v = 1000
 +
print "la variabile di nome v vale: ", v
 +
</syntaxhighlight>
 +
 +
Il programma salva dentro la variabile '''v''' il valore '''1000''' e successivamente stampa sulla console un messaggio e il valore della variabile v. (Incidentalmente abbiamo scoperto la funzione '''print''', una funzione molto comoda che stampa messaggi sulla finestra dove eseguiamo il programma (la ''console'')).
 +
 +
Scriviamo adesso una versione leggermente più complicata del programma di teletrasporto utilizzando delle '''variabili''' per indicare le tre componenti della posizione '''x''', '''y''' e '''z''':
 +
 +
<syntaxhighlight lang="python" line >
 +
# coding=utf-8
 +
import mcpi.minecraft as minecraft
 +
 +
# NOTA - sostituire l'indirizzo IP 192.168.12.10 con quello del server a cui
 +
# si è collegati e "rodmcban" con il nome del proprio personaggio
 +
mc = minecraft.Minecraft.create(address="192.168.12.10", name="rodmcban")
 +
 +
x = -33
 +
y = 20
 +
z = 34
 +
 +
mc.player.setPos(x, y, z)
 +
</syntaxhighlight>
 +
 +
 +
=== Esercizi ===
 +
 +
* Provare a modificare i valori dei tre argomenti della funzione '''setPos'''. Cosa succede?
 +
* Quale tra '''x''', '''y''' e '''z''' è quello che cambia la posizione verticale del personaggio?
 +
* Scrivere un programma python che calcola il risultato dell'operazione '''2 + 3''', lo memorizza in una variabile e lo stampa nella console
 +
 +
== Esercizio 2: Seminare funghi... ==
 +
 +
I programmi visti finora facevano una singola cosa e poi terminavano.
 +
Con il nuovo programma che stiamo per scrivere sperimenteremo una istruzione che ci permetterà di ripetere un ciclo di istruzioni più volte.
 +
 +
L'istruzione si chiama '''while''' e significa '''ripeti fino a quando'''. In pratica questa istruzione ripete una o più operazioni finché una condizione rimane vera. Siccome noi in questo primo programma vogliamo ripetere un gruppo di istruzioni '''per sempre''' utilizzeremo un caso particolare del ciclo while che è il '''while True''' dove '''True''' e una variabile logica che significa '''Vero'''. Per questo '''while True''' significa in soldoni '''ripeti per sempre'''.
 +
 +
Adesso dobbiamo capire un'altra cosa: con l'istruzione '''while''' noi non vogliamo ripetere per sempre non una singola cosa, ma un blocco di istruzioni. Come facciamo a riconoscere quali sono le istruzioni che devono essere ripetute? O in parole più tecniche il '''blocco''' di istruzioni da ripetere?
 +
 +
Per questo in Python utilizziamo '''l'indentazione''' e cioè mettiamo all'inizio della riga un carattere '''TAB''' (quello che abbiamo sulla nostra tastiera a sinistra sopra il tasto che ci permettere di stampare i caratteri maiuscoli).
 +
 +
Ecco alla fine come apparirà il nostro programma, con un po' di commenti che ci spiegano cosa sta succedendo:
 +
 +
<syntaxhighlight lang="python" line >
 +
# coding=utf-8
 +
import time
 +
 +
import mcpi.minecraft as minecraft
 +
mc = minecraft.Minecraft.create(address="192.168.12.10", name="rodmcban")
 +
 +
# I blocchi utilizzati in Minecraft hanno un codice numerico.
 +
# L'elenco dei codici è reperibile al seguente indirizzo:
 +
#    http://minecraft-ids.grahamedgecombe.com/
 +
#
 +
# Utilizziamo il blocco 40, che rappresenta dei funghi:
 +
block = 40
 +
 +
print "Prima del ciclo."
 +
 +
while True:
 +
# Recupera la posizione corrente del giocatore (coordinate X, Y e Z)
 +
# e le salva nella variabile pos:
 +
pos = mc.player.getPos()
 +
 +
# Estrae dalla variabile pos il valore delle coordinate
 +
# e le salva nelle variabili x, y, z
 +
x = pos.x
 +
y = pos.y
 +
z = pos.z
 +
 +
#
 +
# Cambia il blocco che si trova immediatamente dietro
 +
# il personaggio al tipo di blocco che abbiamo scelto
 +
# in precedenza
 +
mc.setBlock(x-1, y, z, block)
 +
 +
# Usa la funzione print per stampare la posizione del giocatore
 +
# e quindi torna all'inizio del ciclo
 +
print "Posizione = ", int(x), ", ", int(y), ", ", int(z), " ---  Aspettiamo 0.2 secondi e ripetiamo il ciclo"
 +
time.sleep (0.2)
 +
 +
print "fuori dal ciclo"
 +
 +
</syntaxhighlight>
 +
 +
Provate a muovervi per lo schermo e osservare cosa succede.
 +
 +
=== Esercizi ===
 +
* Provare a cambiare il tipo di blocco che viene generato dietro il personaggio
 +
* Invece di mettere il blocco dietro il personaggio provare a metterlo sotto oppure a destra e a sinistra
 +
 +
Alcuni tipi di blocchi interessanti:
 +
 +
<pre>
 +
1 Stone (minecraft:stone)
 +
9 Still Water (minecraft:water)
 +
11 Still Lava (minecraft:lava)
 +
17 Oak Wood (minecraft:log)
 +
20 Glass (minecraft:glass)
 +
22 Lapis Lazuli Block (minecraft:lapis_block)
 +
37 Dandelion (minecraft:yellow_flower)
 +
41 Gold Block (minecraft:gold_block)
 +
42 Iron Block (minecraft:iron_block)
 +
</pre>
 +
 +
== TO BE CONTINUED ==
  
 
[[Category:Python|P]]<br/>[[Category:Minecraft|M]]
 
[[Category:Python|P]]<br/>[[Category:Minecraft|M]]

Versione attuale delle 00:53, 28 mag 2016

Gli esercizi descitti in questa pagina sono stati adattati a partire da quelli messi a disposizione dal repository TeachCraft-Challenges. Si ringrazia TeachTheNet per l'interessante materiale messo a disposizione.

Prerequisiti

Deve essere stato installato l'interprete Python e il launcher Minecraft come descritto in un'altra pagina di questo sito. Deve essere disponibile un server Minecraft che disponga di un'interfaccia API in Python a cui collegarsi in modalità multiplayer.

Nel caso non lo avessete a disposizione in questo sito è disponibile una pagina che descrive come installarlo e avviarlo.

Nel seguito supponiamo che il server sia disponibile all'indirizzo IP 192.168.12.10.

Avviare il Launcher Minecraft

Per avviare il launcher Minecraft fare doppio click sull'icona Minecraft_Launcher.jar presente nella directory TeachCraft-Challenges preparare al punto precedente. In alternaltiva lanciare da terminale con il comando:

$ java -jar Minecraft_Launcher.jar

Una volta che il caricamento del launcher è terminato apparirà la seguente finestra:

File:TLauncher_1.964_217.png

Configurazione

Per evitare che tutte le volte che ci allontaniamo dalla finestra di Minecraft questa si disattivi, occorre modificare la configurazione di Minecraft. In particolare occorre aprire il file di configurazione e modificare il parametro pauseOnLostFocus impostandolo al valore false:

pauseOnLostFocus:false

Per accedere al file di configurazione cliccare sul pulsante "Game Folder" in basso a destra della finestra del Launcher. All'interno della finestra che si aprirà cercare il file options.txt; aprirlo con un editor e modificare il parametro come indicato sopra.

Collegamento al server

Cliccare su Enter the Game in basso a destra. Attendere il caricamento di Minecraft. Apparirà la seguente finestra:

File:Minecraft_1.8.8_218.png

A questo punto cliccare sul pulsante Multiplayer. Apparirà una nuova finestra con una serie di pulsanti, scegliere Direct connect. Appare un'ulteriore finestra dove inserire l'indirizzo IP del server (nel nostro caso, come esempio, 192.168.12.10):

File:Minecraft_1.8.8_219.png

Cliccare su Join Server. Se tutto andrà a buon fine ci si troverà all'interno di un paesaggio Minecraft. Possiamo finalmente iniziare gli esperimenti con Python.

Scrivere il primo programma Python

Questo esercizio insegna come aprire una connessione con il server Minecraft per realizzare una semplice operazione di scrittura sulla chat del gioco.

Aprire l'editor che si è scelto per scrivere il programma Python e inserire le seguenti righe:

  1. import mcpi.minecraft as minecraft
  2. mc = minecraft.Minecraft.create(address="192.168.12.10", name="rodmcban")
  3. mc.postToChat("Ciao Minecraft!")

Al posto dell'indirizzo assegnato alla variabile address inserire l'indirizzo del server a cui si è collegati (quello inserito nella finestra precedente nel campo server address) e come "name" utilizzare quello del proprio personaggio (inserito all'inizio nella prima schermata del launcher).

Salvare il file così scritto all'interno della directory TeachCraft-Challenges.

Eseguire il programma Python con l'interprete che si ha a disposizione. Sulla finestra di Minecraft apparirà una riga di chat con scritto "Ciao Minecraft!"

File:Minecraft_1.8.8_221.png

Vediamo nel dettaglio cosa significano le tre righe che abbiamo scritto.

  1. import mcpi.minecraft as minecraft

Questa prima riga serve per spiegare a Python che abbiamo intenzione di utilizzare la libreria mcpi che è quella che fornisce le funzionalità per comunicare con il server Minecraft. Non realizza nessuna operazione visibile, ma dice a Python che vogliamo inviare dei comandi a Minecraft.

  1. mc = minecraft.Minecraft.create(address="192.168.12.10", name="rodmcban")

Questa seconda riga dice a Python di collegarsi al server Minecraft che si trova all'indirizzo 192.168.12.10 e, su questo server, agganciarsi al personaggio di nome rodmcban.

Queste due righe, che ancora non fanno nulla di visibile, sono obbligatorie per tutti i programmi che scriveremo: senza di queste infatti Python non è in grado di sapere come interpretare i comandi che seguono.

Notare la variabile mc: in questo "contenitore" viene salvata la connessione con il personaggio che abbiamo scelto. D'ora in avanti, quando useremo questa variabile, Python capirà che vogliamo fare un'operazione con quello specifico personaggio.

Con queste prime due righe abbiamo stabilito la comunicazione con Minecraft, ma, se ci fermassimo qui, non succederebbe niente. Diciamo che avremmo scritto un programma inutile: apriamo una connessione ma poi non ci facciamo niente. Il succo di questo semplicissimo programma è nella terza istruzione:

  1. mc.postToChat("Ciao Minecraft!")

Con questa istruzione diciamo a Python di eseguire un'operazione con la variabile mc (e quindi verso il personaggio che abbiamo scelto). In particolare l'operazione che chiediamo di eseguire è postToChat che mostra un messaggio sulla chat del personaggio.

Esercizio 1: Teletrasportare il personaggio

Con questo secondo programma vediamo come inviare un comando che cambia la posizione del personaggio a cui siamo agganciati. L'esempio è tratto dalla prima lezione del sito TeachCraft-Challenges.

Il codice da scrivere stavolta è leggermente di più:

  1. # coding=utf-8
  2. import mcpi.minecraft as minecraft
  3.  
  4. # NOTA - sostituire l'indirizzo IP 192.168.12.10 con quello del server a cui
  5. # si è collegati e "rodmcban" con il nome del proprio personaggio
  6. mc = minecraft.Minecraft.create(address="192.168.12.10", name="rodmcban")
  7.  
  8. mc.player.setPos(-33, 20, 34)

Qui introduciamo i commenti che sono le righe che iniziano con il carattere #. Queste righe servono a noi per ricordarci qualcosa sul codice che stiamo scrivendo ma sono completamente ignorate dall'interprete Python. Di fatto non servono all'esecuzione del programma

A parte i commenti riconosciamo le prime due righe di codice, che altro non sono che quelle che già conosciamo e che servono a stabilire una connessione con un personaggio sul server.

La terza riga che è quella che effettua veramente un'operazione questa volta utilizza il metodo setPos per impostare la posizione del personaggio a dove vogliamo noi.

Provate a spostarvi per il mondo Minecraft dove volete e poi provate ad eseguire questo nuovo programma: tornerete tutte le volte a una posizione predefinita.

Concetto di programmazione: le VARIABILI

Usciamo adesso un attimo dal mondo Minecraft e parliamo di un concetto molto importante della programmazione: le variabili.

Immaginate una variabile come un contenitore che contiene un valore. Per esempio L'istruzione:

  1. v = 1000

assegna alla variabile v il valore 1000. Quando nel seguito faremo riferimento alla variabile v semplicemente otterremo il valore 1000. Per esempio proviamo a scrivere ed eseguire il seguente programma:

  1. v = 1000
  2. print "la variabile di nome v vale: ", v

Il programma salva dentro la variabile v il valore 1000 e successivamente stampa sulla console un messaggio e il valore della variabile v. (Incidentalmente abbiamo scoperto la funzione print, una funzione molto comoda che stampa messaggi sulla finestra dove eseguiamo il programma (la console)).

Scriviamo adesso una versione leggermente più complicata del programma di teletrasporto utilizzando delle variabili per indicare le tre componenti della posizione x, y e z:

  1. # coding=utf-8
  2. import mcpi.minecraft as minecraft
  3.  
  4. # NOTA - sostituire l'indirizzo IP 192.168.12.10 con quello del server a cui
  5. # si è collegati e "rodmcban" con il nome del proprio personaggio
  6. mc = minecraft.Minecraft.create(address="192.168.12.10", name="rodmcban")
  7.  
  8. x = -33
  9. y = 20
  10. z = 34
  11.  
  12. mc.player.setPos(x, y, z)


Esercizi

  • Provare a modificare i valori dei tre argomenti della funzione setPos. Cosa succede?
  • Quale tra x, y e z è quello che cambia la posizione verticale del personaggio?
  • Scrivere un programma python che calcola il risultato dell'operazione 2 + 3, lo memorizza in una variabile e lo stampa nella console

Esercizio 2: Seminare funghi...

I programmi visti finora facevano una singola cosa e poi terminavano. Con il nuovo programma che stiamo per scrivere sperimenteremo una istruzione che ci permetterà di ripetere un ciclo di istruzioni più volte.

L'istruzione si chiama while e significa ripeti fino a quando. In pratica questa istruzione ripete una o più operazioni finché una condizione rimane vera. Siccome noi in questo primo programma vogliamo ripetere un gruppo di istruzioni per sempre utilizzeremo un caso particolare del ciclo while che è il while True dove True e una variabile logica che significa Vero. Per questo while True significa in soldoni ripeti per sempre.

Adesso dobbiamo capire un'altra cosa: con l'istruzione while noi non vogliamo ripetere per sempre non una singola cosa, ma un blocco di istruzioni. Come facciamo a riconoscere quali sono le istruzioni che devono essere ripetute? O in parole più tecniche il blocco di istruzioni da ripetere?

Per questo in Python utilizziamo l'indentazione e cioè mettiamo all'inizio della riga un carattere TAB (quello che abbiamo sulla nostra tastiera a sinistra sopra il tasto che ci permettere di stampare i caratteri maiuscoli).

Ecco alla fine come apparirà il nostro programma, con un po' di commenti che ci spiegano cosa sta succedendo:

  1. # coding=utf-8
  2. import time
  3.  
  4. import mcpi.minecraft as minecraft
  5. mc = minecraft.Minecraft.create(address="192.168.12.10", name="rodmcban")
  6.  
  7. # I blocchi utilizzati in Minecraft hanno un codice numerico.
  8. # L'elenco dei codici è reperibile al seguente indirizzo:
  9. #    http://minecraft-ids.grahamedgecombe.com/
  10. #
  11. # Utilizziamo il blocco 40, che rappresenta dei funghi:
  12. block = 40
  13.  
  14. print "Prima del ciclo."
  15.  
  16. while True:
  17. 	# Recupera la posizione corrente del giocatore (coordinate X, Y e Z)
  18. 	# e le salva nella variabile pos:
  19. 	pos = mc.player.getPos()
  20.  
  21. 	# Estrae dalla variabile pos il valore delle coordinate
  22. 	# e le salva nelle variabili x, y, z
  23. 	x = pos.x
  24. 	y = pos.y
  25. 	z = pos.z
  26.  
  27. 	# 
  28. 	# Cambia il blocco che si trova immediatamente dietro
  29. 	# il personaggio al tipo di blocco che abbiamo scelto
  30. 	# in precedenza
  31. 	mc.setBlock(x-1, y, z, block)
  32.  
  33. 	# Usa la funzione print per stampare la posizione del giocatore 
  34. 	# e quindi torna all'inizio del ciclo
  35. 	print "Posizione = ", int(x), ", ", int(y), ", ", int(z), " ---  Aspettiamo 0.2 secondi e ripetiamo il ciclo"
  36. 	time.sleep (0.2)
  37.  
  38. print "fuori dal ciclo"

Provate a muovervi per lo schermo e osservare cosa succede.

Esercizi

  • Provare a cambiare il tipo di blocco che viene generato dietro il personaggio
  • Invece di mettere il blocco dietro il personaggio provare a metterlo sotto oppure a destra e a sinistra

Alcuni tipi di blocchi interessanti:

1 	Stone (minecraft:stone)
9 	Still Water (minecraft:water)
11 	Still Lava (minecraft:lava)
17 	Oak Wood (minecraft:log)
20 	Glass (minecraft:glass)
22 	Lapis Lazuli Block (minecraft:lapis_block)
37 	Dandelion (minecraft:yellow_flower)
41 	Gold Block (minecraft:gold_block)
42 	Iron Block (minecraft:iron_block)

TO BE CONTINUED