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