En savoir python et électronique avec minecraft édition pi
Avez-vous toujours voulu apprendre à coder mais je ne savais pas par où commencer? Apprenez à contrôler Minecraft sur le Raspberry Pi en utilisant Python et certains appareils électroniques simples. Voici le résultat final:
Contenu
Vous aurez besoin d`un Pi 2 ou plus récent pour ce projet, et pendant que vous pouvez remplir la plupart de ces tâches par ligne de commande via SSH (Secure Shell), ce tutoriel va se concentrer sur le codage directement sur le Pi.
Raspberry PI 3 Modèle B A1.2GHz quad-core 64 bits ARMv8 CPU, RAM 1 GoRaspberry PI 3 Modèle B A1.2GHz quad-core 64 bits ARMv8 CPU, RAM 1 Go1.2GHz quad-core CPU ARMv8 64 bits, 1 GB RAM Acheter sur Amazon 30,39 $Nouveau sur Minecraft? Ne vous inquiétez pas - voici notre Guide de Minecraft Débutant.
Video: Tutoriel Python - Les bases
Introduction à Minecraft Pi
Minecraft pour le Raspberry Pi a été développé pour l`apprentissage et bricoler (et il est gratuit). Il est livré avec une interface de programmation d`application (API) qui fournit un moyen de code pour parler facilement à Minecraft. Il est génial pour apprendre à coder en Python, ainsi que commencer avec l`électronique.Beginner électronique: 10 Compétences Vous devez savoirBeginner électronique: 10 Compétences Vous devez savoirBeaucoup d`entre nous ont même jamais touché un fer à souder - mais faire des choses peuvent incroyablement gratifiant. Voici dix des compétences les plus élémentaires de l`électronique de bricolage pour vous aider à démarrer.Lire la suite
Qu`est-ce que Python?
Python est un langage de programmation. C`est interprété, ce qui signifie que lorsque vous exécutez un fichier Python ou d`un programme, l`ordinateur doit faire un petit peu de travail pour le premier fichier. Les inconvénients sont qu`il peut être considéré comme lent par rapport aux langages compilés.
Les avantages des langues interprétées sont la vitesse de codage et leur convivialité. Vous n`êtes pas obligé de dire à l`ordinateur quelle les données que vous souhaitez stocker, juste que vous voulez stocker quelque chose et l`ordinateur de savoir quoi faire. Il y a des exceptions, bien sûr, ce qui est une vue quelque peu simplifiée, la programmation devrait toutefois être amusant! Si vous commencez à creuser dans les détails techniques complexes, il peut devenir un peu laborieux.
Python est sensible à la casse. Il est important de savoir, comme Python ne reconnaîtra pas les objets même si elles sont correctement orthographiés si le cas est erroné. « DoSomething () » ne fonctionnera pas si la méthode est en fait appelé « DoSomething () ». Python utilise également indentation. D`autres langages de programmation ne se soucient pas combien de indentations votre code a, alors que Python Est-ce que se soucier. Retraits sont utilisés pour dire Python où appartient le code. D`autres langues peuvent utiliser « Accolades » ({}) au code de groupe - Python ne les utilise pas. Python utilise un dièse (#) pour les commentaires et les commentaires sont utilisés pour dire aux autres développeurs ou personnes consultent le code ce qu`une partie particulière fait, ou pourquoi il est nécessaire. Python ignore quoi que ce soit après un hachage.
Enfin, il y a deux versions principales de Python - 2.7.x Python et Python 3.x. Il y a quelques différences entre les deux (quelles sont les différences?). Ce tutoriel va utiliser Python 3.
La configuration initiale
Pi est votre fournit déjà l`installation et le fonctionnement Raspbian, il n`y a pas beaucoup de la configuration initiale nécessaire.Comment faire pour installer un système d`exploitation à votre Raspberry PiComment faire pour installer un système d`exploitation à votre Raspberry PiVoici comment obtenir un nouveau système d`exploitation installé et en cours d`exécution sur votre Pi - et comment cloner votre configuration idéale pour la reprise après incident rapide.Lire la suite
Terminal (OpenMenu gt; Accessoires gt; Terminal) Et exécuter cette commande. Il est toujours bon de garder la liste des référentiels à jour, et cela télécharger la dernière liste des programmes (il ne téléchargera pas les programmes eux-mêmes, cela aide le Pi savoir quels programmes sont appelés et où les trouver).
sudo apt-get mettre à jour
Maintenant, mettez à jour le Pi (cela peut prendre un certain temps):
sudo apt-get surclassement
Python et Minecraft Pi sont déjà installés, si Minecraft Pi est pas installé pour une raison quelconque, il est simple à installer:5 façons d`installer le logiciel sur Raspberry Pi5 façons d`installer le logiciel sur Raspberry PiPour ce faire quoi que ce soit avec un Raspberry Pi, vous aurez besoin de savoir comment installer un système d`exploitation et les logiciels d`exécuter sur elle. Si vous êtes nouveau à Linux, cela peut être difficile.Lire la suite
sudo apt-get installer minecraft-pi
Accédez aux documents et créer un nouveau dossier appelé « Minecraft »:
CD documents /mkdir Minecraft
Vous pouvez afficher le contenu de ce nouveau dossier:
ls
Voici une astuce - si vous commencez à taper et appuyez sur la touche TAB, la ligne de commande tentera de compléter automatiquement la déclaration pour vous.
Vous pouvez examiner le chemin vers le répertoire courant en utilisant PWD, qui signifie Imprimer le répertoire de travail:
PWD
Démarrez Minecraft en allant Menu gt; Jeux gt; Minecraft Pi. Vous aurez besoin de cette course, mais va revenir plus tard.
Ouvert Python 3 de Menu gt; La programmation gt; Python 3 (IDLE). Ce programme offre un moyen pour vous d`exécuter des commandes Python et d`écrire des programmes.
Maintenant, vous pouvez taper votre commande Python, mais ce n`est pas très pratique. Aller à Fichier gt; Nouveau fichier et alors Fichier gt; sauvegarder et enregistrez ce dans le dossier que vous avez créé précédemment. (documents gt; Minecraft). Appelons-le «hello_world.py« . Vous ne devez pas utiliser l`extension .py, ce sera automatiquement ajouté, mais il est une bonne pratique.
Si vous revenez au terminal, et de naviguer dans le dossier Minecraft, vous devriez voir le fichier que vous venez de créer:
CD Minecraft/ls
Vous pouvez exécuter ce fichier comme ceci:
python hello_world
Remarquez comment « python » est tout en minuscules. Ce doit être avant le nom du fichier, car il indique la Pi que le fichier suivant est Python, il doit être exécuté en tant que tel.
Revenez à l`éditeur Python et tapez:
impression "Bonjour le monde!"
Enregistrez ce fichier et l`exécuter à nouveau - vous devriez maintenant voir « Bonjour, monde! » Apparaissent dans la ligne de commande - propre! La commande d`impression indique simplement Python à la sortie le texte suivant dans des guillemets doubles. Ce qui est bon, mais pas très utile pour Minecraft, laissez lien de it up:
de MCPI.Minecraft importer Minecraftmc = Minecraft.créer()mc.postToChat("Bonjour le monde!")
Maintenant, si vous enregistrez et exécutez ce fichier, vous devriez voir apparaître « Bonjour, monde! » Dans le jeu Minecraft. Laissez rupture de le code:
de MCPI.Minecraft importer Minecraft
Cette ligne indique Python que vous voulez utiliser le code d`un autre fichier. Ce fichier mcpi.minecraft a été développé pour permettre un contrôle facile de Minecraft.
mc = Minecraft.créer()
Cette ligne crée un objet appelé « mc » (Minecraft). Vous devez créer ce pour permettre la communication au jeu Minecraft - il ne suffit pas seulement d`inclure le fichier.
mc.postToChat("Bonjour le monde!")
Enfin, cette ligne indique Minecraft d`écrire un texte pour le chat. Essayez de changer « Bonjour, monde! » À autre chose et de voir ce qui se passe, mais rappelez-vous d`inclure à la fois les guillemets doubles. Si vous rencontrez des problèmes logiciels, ce sont des erreurs Python communes et Minecraft Pi:
- AttributeError - c`est une faute de frappe, comme pinte ou Prnt au lieu d`imprimer
- NameError: nom « Minecraft » est pas défini - ne pas oublier d`importer les modules dont vous avez besoin
- NameError: nom « true » est pas défini - Python est sensible à la casse, le changement « True »
- socket.error: [Errno 111] Connexion refusée - Assurez-vous que Minecraft est en cours d`exécution
Projets
Maintenant que vous connaissez les bases de Python et Minecraft, nous allons faire des projets sympas. Toutes les codecan être téléchargés à partir Github.
Builder automatisé Pont
Ce programme renforcera efficacement un pont sur l`eau. Lorsque le joueur obtient près d`un plan d`eau, le programme permet de convertir plusieurs blocs en pierre. Comme Minecraft utilise un système de coordonnées, il est très facile d`obtenir l`emplacement du lecteur, ainsi que le type de blocs autour du joueur. Minecraft Pi est un peu limité, il est donc impossible de mettre à jour plusieurs blocs différents en vrac. Vous pouvez coder facilement ce comportement vous-même, cependant.
Créer un nouveau fichier (Fichier gt; Nouveau fichier) Et l`enregistrer comme «bridge_builder.py« .
de MCPI.Minecraft importer Minecraftmc = Minecraft.créer() # Créer Minecraft objettandis que Vrai:X, y, z = mc.joueur.getPos() # Magasin position du joueur# Stocker les blocs environnantsune = mc.getBlock(X, y - 1, z + 1)b = mc.getBlock(X, y - 1, z - 1)c = mc.getBlock(X - 1, y - 1, z)ré = mc.getBlock(X + 1, y - 1, z)si une == 8 ou une == 9 ou b == 8 ou b == 9 ou c == 8 ou c == 9 ou ré == 8 ou ré == 9:# 8 ou 9 est l`eau. Régler les blocs autour sur le plancher à un solide (pierre) si l`eau se trouvemc.setBlocks(X, y - 1, z, X + 1, y - 1, z + 1, 1)mc.setBlocks(X, y - 1, z, X - 1, y - 1, z - 1, 1)mc.setBlocks(X, y - 1, z, X - 1, y - 1, z + 1, 1)mc.setBlocks(X, y - 1, z, X + 1, y - 1, z - 1, 1)
Remarquez comment la valeur y est actuellement à la recherche à y - 1. Ceci est le niveau du sol. Si la valeur de y est utilisé, le script regarderait des blocs au niveau du genou au sujet - il ne serait pas très bien fonctionner! Mc.getBlock () renvoie l`ID d`un bloc de coordonnées données. Comme x, y et z sont les coordonnées du joueur, vous pouvez ajouter ou soustraire d`eux pour obtenir des positions autour du joueur. Vous ne devez pas utiliser les x, y et z des valeurs, vous pouvez utiliser un certain nombre, mais vous ne pouvez pas savoir comment ce bloc particulier se rapporte au joueur - il est préférable d`utiliser des valeurs par rapport au joueur. Exécutez ce fichier à partir de la ligne de commande et de voir ce qui se passe.
Vous devriez voir qu`une petite surface de terrain se transforme en pierre une fois que le joueur atteint un plan d`eau. Ce n`est pas grand - vous êtes capable de marcher assez vite pour causer un problème. Vous pouvez résoudre ce problème en convertissant un plus grand volume d`eau à la terre. La dernière partie de la méthode mc.setBlocks () est l`identifiant de bloc. L`un est l`identifiant du bloc de pierre. Vous pouvez choisir ce bois, herbe, ou quoi que ce soit. Si vous voulez, vous pouvez convertir facilement à un plan complexe - peut-être un pont suspendu!
Super Bouton Mining
Video: Tuto : Le sexage par sonde pour les serpents . Savoir le sexe , boa , python , couleuvre
Cet exemple fera le travail à court de l`exploitation minière. Il se compose d`un bouton physique, que lorsqu`il est pressé, sera le mien 10 blocs cubes. Commençons par le bouton. Similaire aux boutons sur l`Arduino, vous aurez besoin d`une petite quantité de l`électronique, qui devraient tous être trouvés dans un kit de démarrage de base:Ce qui est dans votre Arduino Starter Kit? [Arduino débutants]Ce qui est dans votre Arduino Starter Kit? [Arduino débutants]Face à une boîte pleine de composants électroniques, il est facile d`être submergé. Voici un guide pour exactement ce que vous trouverez dans votre trousse.Lire la suite
- 1 x Breadboard
- 1 x interrupteur momentané
- 1 x 220 ohms résistance
- Femelle gt; câbles mâles saut
- Mâle gt; câbles mâles saut
Voici le circuit:
Cette résistance est appelée une résistance « tirer vers le bas ». Il aide à faire en sorte que ce que le Pi pense est le bouton est pressé, est vraiment le bouton enfoncé. Vous ne devez pas utiliser, mais il est recommandé, que vous pouvez trouver beaucoup de bruit et de fausses lectures sans elle.
Le bouton est relié à la broche d`entrée à usage général de sortie (GPIO) 14. Vous pouvez utiliser une broche GPIO, regardez cependant au Brochage d`abord, car ils ne sont pas tous contrôlés par Pi et varient légèrement entre les modèles.
Maintenant que le bouton est connecté, il est temps de le tester. Créez un nouveau fichier et l`enregistrer comme «button_test.py« . Ajouter ce code, enregistrez-le puis exécutez-le dans le Terminal.
importer RPi.GPIO comme GPIOimporter timeGPIO.mode réglages(GPIO.BCM) # Dire Pi à utiliser ce que les en-têtesGPIO.installer(14, GPIO.DANS) # Dire Pi cette broche est une entréetandis que Vrai:si GPIO.contribution(14) == Vrai: # Look pour appuyer sur le boutonimpression "TRAVAUX bouton!" # Résultat journaltemps.dormir(0,5) # Attendre 0,5 seconde
presse Ctrl + C pour arrêter le script. Si tout fonctionne correctement, vous devriez voir « WORKS bouton! » Dans le terminal. Remarquez comment, comme le module Minecraft, ce test utilise les modules RPi.GPIO et de temps. Ceux-ci permettent d`accéder aux Pi broches matérielles et de fournir des fonctions de synchronisation utiles.
Maintenant passons à terminer le reste du code. Créer un nouveau filecalled «super_mine.py« . Voici le code:
importer RPi.GPIO comme GPIOimporter tempsde MCPI.Minecraft importer Minecraftmc = Minecraft.créer() # Créer Minecraft objetGPIO.mode réglages(GPIO.BCM) # Dire Pi à utiliser ce que les en-têtesGPIO.installer(14, GPIO.DANS) # Dire Pi cette broche est une entréetandis que Vrai:si GPIO.contribution(14) == Vrai: # Look pour appuyer sur le boutonX, y, z = mc.joueur.getPos() # Lire la position du joueurmc.setBlocks(X, y, z, X + dix, y + dix, z + dix, 0) # 10 mines blocs mc.setBlocks(X, y, z, X - dix, y + dix, z - dix, 0) # 10 mines blocstemps.dormir(0,5) # Attendre 0,5 seconde
mc.player.getPos () renvoie les lecteurs de coordonnées actuelles, qui sont ensuite stockés en x, y, et z. le setBlocks () Procédé indique Minecraft pour remplir tous les blocs entre le début et la fin de la séquence suivante. Le zéro est le bloc-id pour l`air. Vous pouvez changer cela à un autre bloc-id pour remplir une zone solide. Vous pouvez également modifier les coordonnées à +100 ou même +1000 blocs, mais le Pi peut commencer à se battre si vous êtes trop fou. Remarquez comment y + 10 est la même pour les deux lignes. Vous pouvez changer cela y - 10 si vous voulez supprimer les blocs sous terre.
téléportation
Une autre utilisation simple pour ce bouton pourrait être de « téléporter ». Le Minecraft Pi fournit un moyen api pour régler la position du joueur. Le code suivant « téléporter » le joueur à un emplacement prédéfini:
mc.joueur.setPos(0, 0, 0)
Notez que sa méthode accepte trois x Paramètres-, y et z - pour que vous puissiez paramétrés quoi que ce soit de se téléporter instantanément le joueur à cet endroit.
Créez une copie du fichier super_mine (Fichier gt; Enregistrer une copie sous) Et de le modifier en remplaçant le cas de ce qui suit:
si GPIO.contribution(14) == Vrai: # Look pour appuyer sur le boutonmc.joueur.setPos(0, 0, 0) # Joueur de téléportationtemps.dormir(0,5) # Attendre 0,5 seconde
Ce fichier devrait ressembler à ceci:
importer RPi.GPIO comme GPIOde MCPI.Minecraft importer Minecraftimporter timemc = Minecraft.créer() # Créer Minecraft objetGPIO.mode réglages(GPIO.BCM) # Dire Pi à utiliser ce que les en-têtesGPIO.installer(14, GPIO.DANS) # Dire Pi cette broche est une entréetandis que Vrai:si GPIO.contribution(14) == Vrai: # Look pour appuyer sur le boutonmc.joueur.setPos(0, 0, 0) # Joueur de téléportationtemps.dormir(0,5) # Attendre 0,5 seconde
Enregistrer comme «teleport.py" et courir.
Vous trouverez peut-être le joueur est coincé à l`intérieur des blocs lorsque vous utilisez ce, dans ce cas, vous devrez ajuster les coordonnées à un espace ouvert connu (en haut à gauche de l`écran indique votre position actuelle).
Construire une maison
Une dernière tâche pour ce bouton est de construire une maison. Tout comme l`exemple rapide minière ci-dessus, cela remplacera simplement les blocs entourant le joueur pour faire une maison. Différents blocs-ids seront utilisés pour différents matériaux (fenêtres, murs, etc.). Pour rendre les choses plus faciles à coder, un bloc solide sera créé, puis l`intérieur enlevé (avec bloc à l`air), cela va créer une coquille vide. Vous pouvez ajouter des extras comme un lit ou une porte, mais le projet Minecraft Pi est un peu incomplet, et bien que ces objets fonctionnent lorsqu`ils sont placés par le joueur, ils ne sont pas brillant lors de l`utilisation de Python.
de MCPI.Minecraft importer Minecraftimporter RPi.GPIO comme GPIOimporter timemc = Minecraft.créer() # Créer Minecraft objetGPIO.mode réglages(GPIO.BCM) # Dire Pi à utiliser ce que les en-têtesGPIO.installer(14, GPIO.DANS) # Dire Pi cette broche est une entréetandis que Vrai:si GPIO.contribution(14) == Vrai:X, y, z = mc.joueur.getPos()mc.setBlocks(X + 2, y - 1, z + 2, X + 7, y + 3, z + 8, 5) # Make shellmc.setBlocks(X + 3, y, z + 3, X + 6, y + 2, z + 7, 0) # Supprimer l`intérieurmc.setBlocks(X + 2, y, z + 5, X + 2, y + 1, z + 5, 0) # Make portemc.setBlocks(X + 4, y + 1, z + 8, X + 5, y + 1, z + 8, 102) # Make fenêtre 1mc.setBlocks(X + 4, y + 1, z + 2, X + 5, y + 1, z + 2, 102) # Make fenêtre 2mc.setBlocks(X + 7, y + 1, z + 4, X + 7, y + 1, z + 6, 102) # Make fenêtre 3
Enregistrer ce que «house.py" et courir. Si tout va bien, vous devriez voir une petite maison apparaît (vous devrez peut-être retourner pour le trouver). Il est très simple, une ouverture et des fenêtres. En théorie, il n`y a pas de limite à la taille ou un bâtiment complexe, vous pouvez construire.
Video: TERRARIUM PYTHON - EUBLEPHARIS
Faire un mini-jeu
Ensuite, nous allons faire un mini-jeu! Ce sera assez simple, lorsque les étapes du joueur sur un bloc de sable, il va se transformer en lave après un certain laps de temps aléatoire. Ceci est un bon jeu à faire, comme vous pouvez concevoir vos propres niveaux ou de le modifier pour rendre les choses plus difficiles. Vous ne aurez pas besoin sur le bouton pour cet exemple.
Créez un nouveau fichier et l`enregistrer comme «mini_game.py« . Voici le code:
de MCPI.Minecraft importer Minecraftimporter au hasardimporter timemc = Minecraft.créer() # Créer Minecraft objettandis que Vrai:X, y, z = mc.joueur.getPos()block_under_player = mc.getBlock(X, y - 1, z)si block_under_player == 12:# Joueur debout sur le sable, démarrer la minuterierandom_time = au hasard.uniforme(0,1, 2,5) # Générer un nombre aléatoiretemps.dormir(random_time)- # attendezmc.setBlock(X, y - 1, z, 11) # Transformer en lave
Ce code est un bon départ sur la au hasard() fonction: random.uniform (0.1, 2.5) va générer un nombre aléatoire compris entre 0,1 (1 / 10e de seconde) et 2,5 (2 1/2 seconde). L`augmentation de ces chiffres rendra le jeu plus facile.
Essaye le! Tenez-vous sur un bloc de sable, et il va bientôt se transformer en lave. Cela pourrait être la base d`un jeu plus complexe.
Faire un autre mini-jeu
La prémisse de ce jeu est simple - ne pas être debout sur le plancher en bois lorsque le temps imparti. Le joueur est téléporté dans un « arène ». Ils sont obligés de rester immobile jusqu`à ce que le jeu commence. Une fois démarré, le sol se met à l`eau une fois que le temps ne soit écoulé. Le joueur doit être debout dans la zone de sécurité (blocs de diamant) pour survivre. Chaque niveau réduit la minuterie par une seconde. Après chaque niveau avec succès la zone de sécurité devient plus grande. Consultez le code ci-dessous:
importer tempsimporter au hasardde MCPI.Minecraft importer Minecraftmc = Minecraft.créer() # Créer Minecraft objet# zone dégagéemc.setBlocks(-dix, 1, -dix, 25, 5, 25, 0)# Créer coquille d`arènemc.setBlocks(0, 0, 0, 25, dix, 25, 17)# Évider arènemc.setBlocks(1, 1, 1, 24, dix, 24, 0)# Joueur de déplacement arenamc.joueur.setPos(14, 25, 20) # Joueur de téléportation # Les faire rester sur place# Joueur de téléportation à la position de départ tous les 1 / 10e de seconde.# Faire pendant 5 secondes puis démarrez le jeutemps.dormir(2)total_wait = 0mc.postToChat("En attendant de démarrer")tandis que total_wait lt; 5:mc.joueur.setPos(14, 1, 20) # Joueur de téléportationtemps.dormir(0,1)total_wait += 0,1mc.postToChat("COMMENCER!")# 10 niveauxpour niveau dans gamme(dix):X, y, z = mc.joueur.getPos()level_time = dix - niveau # Réduire le temps de 1 seconde pour chaque niveaumc.postToChat("Niveau - " + str(niveau + 1) + " début")# Étage de constructionmc.setBlocks(0, 0, 0, 25, 0, 25, 17)# Make zone de sécuritésafe_area_start = au hasard.uniforme(0, 22)safe_area_end = au hasard.uniforme(0, 22)mc.setBlocks(safe_area_start, 0, safe_area_end, safe_area_start + niveau, 0, safe_area_end + niveau, 57)temps écoulé = 0tandis que temps écoulé lt; dix:X, y, z = mc.joueur.getPos()temps.dormir(0,25)temps écoulé += 0,25# joueur de contrôle est toujours sur le planchersi y lt; 0,75:mc.postToChat("Jeu terminé")Pause-autre:# Supprimer étagemc.setBlocks(-dix, 0, -dix, 25, 0, 25, 8)# Mettre zone de sécurité arrièremc.setBlocks(safe_area_start, 0, safe_area_end, safe_area_start + niveau, 0, safe_area_end + niveau, 57)temps.dormir(2,5)continuerPause
Enregistrer ce que «mini_game_2.py» Et lui donner une course.
Le Pi 2 a des problèmes de performances tout en exécutant Minecraft. Le graphique d`utilisation Unité centrale de traitement (CPU) (le coin supérieur droit) Montre jamais lourde charge, donc cela doit être réduit à une mauvaise conception et optimisations par les développeurs. Ces problèmes ne sont pas liés à l`exécution de code (car ils continuent quand Python ne fonctionne pas), mais ils sont aggravés par ce mini-jeu. Si votre Pi est vraiment du mal que vous pouvez réduire la taille de l`arène ou overclocker votre Pi.Pas assez de jus? Pincez vos Raspberry Pi Par OverclockingPas assez de jus? Pincez vos Raspberry Pi Par OverclockingS`il y a tout matériel publié en 2012 que vous êtes susceptible de tomber amoureux, c`est le doux comme sucre Raspberry Pi, un mini-ordinateur conçu et co