Minecraft et Python

publicité
Option:InformatiqueetCréationNumérique
Minecraft et Python
PremièreS
API – Correspond à Application Programming Interface (« interface de programmation », en français). Une API
permet d’accéder en toute sécurité à certaines parties du programme d’une application depuis des programmes
personnels. En l’occurrence, c’est par l’API de Minecraft que l’on peut accéder au jeu dans des programmes Python
personnels.
LignesnécessairespourjouerdansMinecraftavecPython:
#import mcpi.minecraft as minecraft
// import le module minecraft pour python
mc = minecraft.Minecraft.create()
// se connecter au jeu
Les variables :
Une variable est une zone de la mémoire dans laquelle une valeur est stockée. Aux yeux du
programmeur, cette variable est définie par un nom, alors que pour l'ordinateur, il s'agit en fait d'une
adresse (i.e. une zone particulière de la mémoire). En Python, la déclaration d'une variable et son
initialisation (c.-à-d. la première valeur que l'on va stocker dedans) se fait en même temps.
X=2
Y=2.0
Z= « Bonjour »
// déclaration de X en type integer (Nombre entier)
// déclaration de Y en type float (nombre réel)
// déclaration de Z en String (Chaîne de caractères)
Fonction type().
Si vous ne vous souvenez plus du type d'une variable, utilisez la fonction type qui vous le
rappelle.
Afficher des messages :
mc.postToChat("Voici mon message pour Minecrat") // fonction affichant un message dans Minecraft
print(("Voici mon message") // affiche le message dans la fenêtre SHELL Python
Afficherlapositiondujoueur:
Page 1 sur 7
Option:InformatiqueetCréationNumérique
Minecraft et Python
PremièreS
pos = mc.player.getTilePos()
// fonction qui donne les coordonées du joueur
print (pos.x)
// afficher dans le SHELL la valeur de la coordonée x
print (pos.y)
// afficher dans le SHELL la valeur de la coordonée y
print (pos.z)
// afficher dans le SHELL la valeur de la coordonée z
Afficherx,yetzsurunemêmeligne:
print ("X= " + str(pos.x) + "Y= " + str(pos.y) + "Z= " + str(pos.z))
Indentation du code
Les fonctions Python n'ont pas de begin (début) ou end (fin) explicites, ni d'accolades qui pourraient
marquer là ou commence et ou se termine le code de la fonction. Le seul délimiteur est les deux points («:»)
et l'indentation du code lui-même.
Boucles while :
Une série d’instructions est exécutée tant qu’une condition est vraie. Par exemple :
while True: // condition toujours vraie
time.sleep(1)
pos = mc.player.getTilePos()
mc.postToChat(("X= " + str(pos.x) + "Y= " + str(pos.y) + "Z= " + str(pos.z))
Comparaisons
Python est capable d’effectuer toute une série de comparaisons entre le contenu de différentes
variables, telles que :
syntaxe Python
signification
==
!=
>
>=
<
<=
égal à
différent de
supérieur à
supérieur ou égal à
inférieur à
inférieur ou égal à
Tests :
Les tests sont un élément essentiel à tout langage informatique si on veut lui donner un peu de
complexité car ils permettent à l’ordinateur de prendre des décisions si telle ou telle condition est vraie ou
fausse. Pour cela, Python utilise l’instruction if ainsi qu’une comparaison que nous avons abordée au chapitre
précédent.
Page 2 sur 7
Option:InformatiqueetCréationNumérique
Minecraft et Python
PremièreS
En voici un exemple :
Tests multiples :
Test avec deux conditions :
if a>5 and a<10:
// tester si la variable a est comprise entre 5 et 10
print ("La variable a est comprise entre 5 et 10") //affiche message si test VRAI
if a<5 or a>10:
// tester si la variable a n’est pas comprise entre 5 et 10
print ("La variable a n’est pas comprise entre 5 et 10")
Page 3 sur 7
Option:InformatiqueetCréationNumérique
Minecraft et Python
PremièreS
Créer des blocs dans Minecraft:
Créer un bloc en face du joueur, sur les bases de ses coordonnées:
mc.setBlock(pos.x + 3, pos.y, pos.z, block.STONE.id)
Construire avec une bloucle FOR:
La boucle FOR utilise une variable de comptage. Exemple avec la variable a :
for a in range(30):
mc.setBlock(pos.x + 3, pos.y + a, pos.z , block.STONE.id)
L’instruction range() vous permet de créer des listes d’entiers (et d’entiers uniquement) de manière
simple et rapide. Voyez plutôt :
Page 4 sur 7
Option:InformatiqueetCréationNumérique
Minecraft et Python
PremièreS
L’instruction range() fonctionne sur le modèle range([début,] fin[, pas]). Les arguments entre
crochets sont optionnels.
Construire plus vite avec "setBlocks":
L'instruction "setBlocks()" peut être utilisée pour attribuer le même ID à plusieurs blocs au
sein d'un espace rectangulaire tridimensionnel (3D).
L'instruction set.Blocks() s'exécutant sur l'espace en 3D, elle a besoin de deux séries de
coordonnées: celles de l'un des angles du parallélépipède et celles de son opposé.Chaque
coordonnée contient trois nombres donc il faut indiquer six nombres pour définir un espace 3D dans
Minecraft. Exemple :
mc.setBlocks(pos.x, pos.y, pos.z,pos.x+50, pos.y+50, pos.z+50, block.AIR.id)
Saisir des données depuis le clavier:
On utilise l'instruction "raw_input()" pour demander à l'utilisateur de saisir des valeurs:
Exemple, la variable dimention prendra la valeur saisie par l’utilisateur :
dimentions = int(raw_input("dimentions de l'espace 3D ?"))
Page 5 sur 7
Option:InformatiqueetCréationNumérique
Minecraft et Python
PremièreS
EXEMPLES DE PROGRAMMES :
source : Apprendre à coder en PYTHON avec MINECRAFT édition Eyrolles
Construire une maison:
Programme Python « maison.py » :
import mcpi.minecraft as minecraft
import mcpi.block as block
mc = minecraft.Minecraft.create()
DIMENTIONS= int(raw_input("dimentions de l'espace 3D ?"))
pos = mc.player.getTilePos()
x=pos.x+2
y=pos.y
z=pos.z
milieu_x=x+DIMENTIONS/2
milieu_y=y+DIMENTIONS/2
mc.setBlocks(x, y, z, x+DIMENTIONS, y+DIMENTIONS, z+DIMENTIONS, lock.COBBLESTONE.id)
mc.setBlocks(x+1, y+1, z+1, x+DIMENTIONS-2, y+DIMENTIONS-1, z+DIMENTIONS-2, block.AIR.id)
mc.setBlocks(milieu_x-1, y, z , milieu_x+1, y+3, z, block.AIR.id)
mc.setBlocks(x+3, y+DIMENTIONS-3, z, milieu_x-3, milieu_y+3, z, block.GLASS.id)
mc.setBlocks(milieu_x+3, y+DIMENTIONS-3, z, x+DIMENTIONS-3, milieu_y+3, z, block.GLASS.id)
mc.setBlocks(x, y+DIMENTIONS-1, z , x+DIMENTIONS, y+DIMENTIONS-1, z+DIMENTIONS, block.WOOD.id)
mc.setBlocks(x+1, y-1, z+1 , x+DIMENTIONS-2, y-1, z+DIMENTIONS-2, block.WOOD.id,14)
Page 6 sur 7
Option:InformatiqueetCréationNumérique
Minecraft et Python
PremièreS
Jeux de l’enclos :
Programme Python « enclos.py » :
# -*- coding: cp1252 -*import mcpi.minecraft as minecraft
import time
mc = minecraft.Minecraft.create()
X1 = 32
Z1 = -58
X2 = 36
Z2 = -54
X_abri = X2+2
Y_abri = 10
Z_abri = Z2+2
Temps = 0
Temps_max = 20
while True:
time.sleep(1)
pos = mc.player.getTilePos()
print(pos.x,pos.y,pos.z)
if pos.x < X2 and pos.z< Z2 and pos.x > X1 and pos.z > Z1 :
Temps = Temps + 1
mc.postToChat("Tu es dans l enclos depuis :" + str(Temps))
else:
Temps = 0
if Temps > Temps_max :
mc.postToChat("Tu es trop lent")
mc.player.setPos( X_abri , Y_abri , Z_abri)
Page 7 sur 7
Téléchargement