Μάθετε Python και Electronics με την έκδοση Minecraft Pi

Θέλατε πάντα να μάθετε να κωδικοποιείτε αλλά δεν ήξερα από πού να ξεκινήσετε; Μάθετε πώς να ελέγχετε το Minecraft στο Raspberry Pi χρησιμοποιώντας Python και κάποια απλά ηλεκτρονικά.

Θέλατε πάντα να μάθετε να κωδικοποιείτε αλλά δεν ήξερα από πού να ξεκινήσετε;  Μάθετε πώς να ελέγχετε το Minecraft στο Raspberry Pi χρησιμοποιώντας Python και κάποια απλά ηλεκτρονικά.
Διαφήμιση

Θέλατε πάντα να μάθετε να κωδικοποιείτε αλλά δεν ήξερα από πού να ξεκινήσετε; Μάθετε πώς να ελέγχετε το Minecraft στο Raspberry Pi χρησιμοποιώντας Python και κάποια απλά ηλεκτρονικά. Εδώ είναι το τελικό αποτέλεσμα:

Θα χρειαστείτε ένα Pi 2 ή νεότερο για αυτό το έργο και ενώ θα μπορούσατε να ολοκληρώσετε τις περισσότερες από αυτές τις εργασίες μέσω της γραμμής εντολών μέσω του Secure Shell (SSH), αυτό το σεμινάριο θα εστιάσει στην κωδικοποίηση απευθείας στο Pi.

Raspberry Pi 3 Μοντέλο Β Μητρική πλακέτα Raspberry Pi 3 Μοντέλο Β Μητρική πλακέτα Αγοράστε τώρα στο Amazon $ 29.99

Νέα στη Minecraft; Μην ανησυχείτε - εδώ είναι ο οδηγός του Minecraft για αρχάριους Οδηγός για αρχάριους (Latecomer) για τους αρχαρίους του Minecraft Ο οδηγός για αρχάριους (Latecomer) για το Minecraft Αν αργείτε στο πάρτι όμως, μην ανησυχείτε - αυτός ο εκτεταμένος οδηγός για αρχάριους καλύπτεστε. Διαβάστε περισσότερα .

Εισαγωγή στην Minecraft Pi

Minecraft-Pi-Μενού

Το Minecraft για το Raspberry Pi έχει σχεδιαστεί για μάθηση και διακίνηση (και είναι δωρεάν). Έρχεται με μια διεπαφή προγραμματισμού εφαρμογών (Application Programming Interface - API), η οποία παρέχει έναν τρόπο για να μιλήσετε εύκολα στον κώδικα με το Minecraft. Είναι καταπληκτικό για να μάθετε πώς να κωδικοποιείτε στην Python, καθώς και για να ξεκινήσετε με τις ηλεκτρονικές συσκευές Ηλεκτρονικά για αρχάριους: 10 Δεξιότητες που πρέπει να ξέρετε Ηλεκτρονικά για αρχάριους: 10 δεξιότητες που πρέπει να ξέρετε Πολλοί από εμάς δεν έχουν αγγίξει ποτέ ούτε ένα συγκολλητικό σίδερο - απίστευτα ανταμείβοντας. Εδώ είναι δέκα από τις πιο βασικές δεξιότητες ηλεκτρονικών ειδών DIY για να σας βοηθήσουν να ξεκινήσετε. Διαβάστε περισσότερα .

Τι είναι η Python;

Η Python είναι μια γλώσσα προγραμματισμού. Αυτό ερμηνεύεται, πράγμα που σημαίνει ότι όταν εκτελείτε ένα αρχείο Python ή ένα πρόγραμμα, ο υπολογιστής πρέπει να κάνει ένα μικρό κομμάτι εργασίας στο αρχείο πρώτα. Τα μειονεκτήματα είναι ότι μπορεί να θεωρηθεί αργή σε σύγκριση με τις μεταγλωττισμένες γλώσσες.

Τα οφέλη των ερμηνευόμενων γλωσσών είναι η ταχύτητα της κωδικοποίησης και η φιλικότητα τους. Δεν χρειάζεται να πείτε στον υπολογιστή τι δεδομένα θέλετε να αποθηκεύσετε, απλώς θέλετε να αποθηκεύσετε κάτι και ο υπολογιστής θα καταλάβει τι να κάνει. Υπάρχουν εξαιρέσεις, φυσικά, και αυτή είναι μια κάπως απλουστευμένη άποψη, ωστόσο ο προγραμματισμός πρέπει να είναι διασκεδαστικός! Εάν αρχίσετε να σκάβετε στις πολύπλοκες τεχνικές λεπτομέρειες, μπορεί να γίνει λίγο επίπονη.

Η Python έχει διάκριση πεζών-κεφαλαίων. Αυτό είναι σημαντικό να γνωρίζουμε, καθώς η Python δεν αναγνωρίζει αντικείμενα ακόμα κι αν έχουν γραφτεί σωστά εάν η περίπτωση είναι λάθος. "Dosomething ()" δεν θα λειτουργήσει αν η μέθοδος ονομάζεται "DoSomething ()". Η Python χρησιμοποιεί επίσης εσοχή . Άλλες γλώσσες προγραμματισμού μπορεί να μην ενδιαφέρουν πόσες περιπτώσεις έχει ο κωδικός σας, ενώ η Python φροντίζει. Οι εσοχές χρησιμοποιούνται για να πείτε στο Python, όπου ανήκει ο κώδικας. Άλλες γλώσσες μπορούν να χρησιμοποιούν το "Curly Braces" ({}) για να ομαδοποιήσουν τον κώδικα - η Python δεν τις χρησιμοποιεί. Η Python χρησιμοποιεί ένα hash (#) για σχόλια και τα σχόλια χρησιμοποιούνται για να ενημερώσουν άλλους προγραμματιστές ή άτομα που εξετάζουν τον κώδικα τι κάνει ένα συγκεκριμένο κομμάτι ή γιατί είναι απαραίτητο. Η Python αγνοεί τίποτα μετά από ένα hash.

Τέλος, υπάρχουν δύο κύριες εκδόσεις Python - Python 2.7.x και Python 3.x. Υπάρχουν κάποιες διαφορές μεταξύ των δύο (ποιες είναι οι διαφορές;). Αυτό το σεμινάριο θα χρησιμοποιήσει το Python 3.

Αρχική εγκατάσταση

Παρέχοντας το Pi σας είναι ήδη ρυθμίσετε και τρέχει Raspbian Πώς να εγκαταστήσετε ένα λειτουργικό σύστημα στο Raspberry Pi σας Πώς να εγκαταστήσετε ένα λειτουργικό σύστημα στο Raspberry Pi σας Εδώ είναι πώς να πάρετε ένα νέο λειτουργικό σύστημα εγκατεστημένο και τρέχει στο Pi σας και πώς να κλωνοποιήσετε την τέλεια εγκατάσταση σας για γρήγορη αποκατάσταση μετά από καταστροφή. Διαβάστε περισσότερα, δεν απαιτούνται πολλές αρχικές ρυθμίσεις.

Ανοίξτε το τερματικό ( Μενού> Αξεσουάρ> Τερματικό ) και εκτελέστε αυτήν την εντολή. Είναι πάντα καλές πρακτικές να ενημερώσετε τον κατάλογο αποθετηρίων και αυτό θα κάνει λήψη της τελευταίας λίστας προγραμμάτων (δεν θα μεταφορτώσει τα ίδια τα προγράμματα, αυτό βοηθά το Pi να γνωρίζει ποια προγράμματα ονομάζονται και πού να τα βρουν).

sudo apt-get update 

Τώρα ενημερώστε το Pi (αυτό μπορεί να διαρκέσει λίγο):

 sudo apt-get upgrade 

Python και Minecraft Pi έχουν εγκατασταθεί ήδη, ωστόσο, αν το Minecraft Pi δεν είναι εγκατεστημένο για οποιονδήποτε λόγο, είναι απλό να εγκαταστήσετε 5 τρόπους για να εγκαταστήσετε το λογισμικό στο Raspberry Pi 5 τρόποι να εγκαταστήσετε το λογισμικό στο Raspberry Pi Για να κάνετε τίποτα με ένα Raspberry Pi, πρέπει να ξέρετε πώς να εγκαταστήσετε ένα λειτουργικό σύστημα και λογισμικό για να τρέξετε σε αυτό. Εάν είστε νέοι στο Linux, αυτό μπορεί να είναι τρομακτικό. Διαβάστε περισσότερα :

 sudo apt-get install minecraft-pi 

Πλοηγηθείτε στα έγγραφα και δημιουργήστε ένα νέο φάκελο που ονομάζεται "Minecraft":

 cd Documents/ mkdir Minecraft 

Μπορείτε να δείτε τα περιεχόμενα αυτού του νέου φακέλου:

 ls 

Εδώ είναι μια συμβουλή - αν αρχίσετε να πληκτρολογείτε και πατήσετε το πλήκτρο TAB, η γραμμή εντολών θα επιχειρήσει να ολοκληρώσει αυτόματα τη δήλωση για εσάς.

Μπορείτε να εξετάσετε τη διαδρομή προς τον τρέχοντα κατάλογο χρησιμοποιώντας pwd, που σημαίνει Print Directory Directory:

 pwd 

Ξεκινήστε το Minecraft μεταβαίνοντας στο Μενού> Παιχνίδια> Minecraft Pi . Θα χρειαστείτε αυτό το τρέξιμο, αλλά θα επιστρέψετε σε αυτό αργότερα.

Ανοίξτε το Python 3 από το Μενού> Προγραμματισμός> Python 3 (IDLE) . Αυτό το πρόγραμμα παρέχει έναν τρόπο για να εκτελέσετε εντολές Python και να γράψετε προγράμματα.

Τώρα μπορείτε να πληκτρολογήσετε τις εντολές Python εδώ, αλλά αυτό δεν είναι πολύ πρακτικό. Μεταβείτε στο Αρχείο> Νέο αρχείο και, στη συνέχεια, Αρχείο> Αποθήκευση και αποθηκεύστε αυτό στο φάκελο που δημιουργήσατε νωρίτερα. ( Έγγραφα> Minecraft ). Ας το ονομάσουμε " hello_world.py ". Δεν χρειάζεται να χρησιμοποιήσετε την επέκταση .py, αυτό θα προστεθεί αυτόματα, αλλά είναι καλή πρακτική.

Αν γυρίσετε ξανά στο τερματικό και περιηγηθείτε στον φάκελο Minecraft θα δείτε το αρχείο που μόλις δημιουργήσατε:

 cd Minecraft/ ls 

Μπορείτε να εκτελέσετε αυτό το αρχείο ως εξής:

 python hello_world 

Παρατηρήστε πώς το "python" είναι το μικρότερο. Αυτό πρέπει να είναι πριν από το όνομα του αρχείου, καθώς λέει στο Pi ότι το ακόλουθο αρχείο είναι Python, οπότε πρέπει να εκτελείται ως τέτοιο.

Επιστρέψτε στον επεξεργαστή Python και πληκτρολογήστε:

 print "Hello, World!" 

Αποθηκεύστε αυτό το αρχείο και εκτελέστε το ξανά - θα πρέπει να δείτε "Hello, World!" Εμφανίζονται στη γραμμή εντολών - τακτοποιημένο! Η εντολή εκτύπωσης απλά λέει στην Python την έξοδο του παρακάτω κειμένου σε διπλά εισαγωγικά. Αυτό είναι καλό, αλλά δεν είναι εξαιρετικά χρήσιμο για τη Minecraft, ας το συνδέσουμε:

 from mcpi.minecraft import Minecraft mc = Minecraft.create() mc.postToChat("Hello, World!") 

Τώρα, αν αποθηκεύσετε και τρέξετε αυτό το αρχείο, θα πρέπει να δείτε "Hello, World!" Εμφανίζονται στο παιχνίδι Minecraft. Ας αναλύσουμε τον κώδικα:

 from mcpi.minecraft import Minecraft 

Αυτή η γραμμή λέει στην Python ότι θέλετε να χρησιμοποιήσετε κώδικα από άλλο αρχείο. Αυτό το αρχείο mcpi.minecraft αναπτύχθηκε για να επιτρέπει τον εύκολο έλεγχο του Minecraft.

 mc = Minecraft.create() 

Αυτή η γραμμή δημιουργεί ένα αντικείμενο που ονομάζεται "mc" (Minecraft). Πρέπει να δημιουργήσετε αυτό για να επιτρέψετε την επικοινωνία με το παιχνίδι Minecraft - δεν αρκεί μόνο να συμπεριλάβετε το αρχείο.

 mc.postToChat("Hello, World!") 

Τέλος, αυτή η γραμμή λέει στη Minecraft να γράψει κάποιο κείμενο στη συνομιλία. Δοκιμάστε να αλλάξετε "Hello, World!" Σε κάτι άλλο και να δείτε τι συμβαίνει, αλλά θυμηθείτε να συμπεριλάβετε και τα διπλά εισαγωγικά. Εάν αντιμετωπίζετε προβλήματα λογισμικού, αυτά είναι μερικά κοινά σφάλματα Python και Minecraft Pi:

  • AttributeError - αυτό είναι ένα τυπογραφικό λάθος, όπως pint ή prnt αντί για εκτύπωση
  • NameError: Το όνομα 'Minecraft' δεν έχει οριστεί - θυμηθείτε να εισαγάγετε τις μονάδες που χρειάζεστε
  • NameError: το όνομα 'true' δεν έχει οριστεί - η Python κάνει διάκριση πεζών-κεφαλαίων, αλλάζει σε "True"
  • socket.error: [Errno 111] Η σύνδεση απορρίφθηκε - Βεβαιωθείτε ότι λειτουργεί το Minecraft

Εργα

Τώρα που γνωρίζετε τα βασικά της Python και της Minecraft, ας κάνουμε μερικά δροσερά έργα. Όλος ο κωδικοποιητής θα κατεβάσει από το Github.

Αυτοματοποιημένος κατασκευαστής γεφυρών

Minecraft-Pi-Bridge-Builder

Αυτό το πρόγραμμα θα χτίσει αποτελεσματικά μια γέφυρα πάνω από το νερό. Όταν ο παίκτης πλησιάσει σε ένα σώμα νερού, το πρόγραμμα θα μετατρέψει πολλά μπλοκ σε πέτρα. Καθώς το Minecraft χρησιμοποιεί ένα σύστημα συντεταγμένων, είναι πολύ εύκολο να πάρει τη θέση του παίκτη, μαζί με τον τύπο των μπλοκ γύρω από τον παίκτη. Το Minecraft Pi είναι ελαφρώς περιορισμένο, οπότε δεν είναι δυνατή η μαζική ενημέρωση πολλών διαφορετικών μπλοκ. Μπορείτε, ωστόσο, να κωδικοποιήσετε εύκολα αυτή τη συμπεριφορά.

Δημιουργήστε ένα νέο αρχείο ( Αρχείο> Νέο αρχείο ) και αποθηκεύστε το ως " bridge_builder.py ".

 from mcpi.minecraft import Minecraft mc = Minecraft.create() # create Minecraft Object while True: x, y, z = mc.player.getPos() # store player position # store the surrounding blocks a = mc.getBlock(x, y - 1, z + 1) b = mc.getBlock(x, y - 1, z - 1) c = mc.getBlock(x - 1, y - 1, z) d = mc.getBlock(x + 1, y - 1, z) if a == 8 or a == 9 or b == 8 or b == 9 or c == 8 or c == 9 or d == 8 or d == 9: # 8 or 9 is water. Set surrounding blocks on floor to a solid (stone) if water is found 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) mc.setBlocks(x, y - 1, z, x + 1, y - 1, z - 1, 1) 

Παρατηρήστε πώς η τιμή y στην πραγματικότητα κοιτάζει y - 1. Αυτό είναι το επίπεδο δαπέδου. Εάν χρησιμοποιήθηκε η τιμή του y, το σενάριο θα ψάχνει για μπλοκ σε επίπεδο γόνατος - δεν θα λειτουργούσε πολύ καλά! Το Mc.getBlock () επιστρέφει το id ενός μπλοκ για τις δεδομένες συντεταγμένες. Δεδομένου ότι τα x, y και z είναι οι συντεταγμένες του παίκτη, μπορείτε να προσθέσετε ή να αφαιρέσετε από αυτά για να πάρετε θέσεις γύρω από τον παίκτη. Δεν χρειάζεται να χρησιμοποιείτε τις τιμές x, y και z, μπορείτε να χρησιμοποιήσετε οποιονδήποτε αριθμό, ωστόσο ίσως να μην γνωρίζετε πώς σχετίζεται αυτό το συγκεκριμένο μπλοκ με τον παίκτη - είναι προτιμότερο να χρησιμοποιήσετε τιμές σχετικές με τον παίκτη. Εκτελέστε αυτό το αρχείο από τη γραμμή εντολών και δείτε τι συμβαίνει.

Θα πρέπει να δείτε ότι μια μικρή περιοχή εδάφους μετατρέπεται σε πέτρα μόλις ο παίκτης φτάσει σε ένα σώμα νερού. Δεν είναι υπέροχο - είστε σε θέση να περπατήσετε αρκετά γρήγορα για να προκαλέσετε κάποιο πρόβλημα. Θα μπορούσατε να λύσετε αυτό με τη μετατροπή ενός μεγαλύτερου όγκου νερού στη γη. Το τελευταίο μέρος της μεθόδου mc.setBlocks () είναι το id μπλοκ. Το ένα είναι το block id για πέτρα. Θα μπορούσατε να το αλλάξετε σε ξύλο, γρασίδι ή οτιδήποτε άλλο. Αν θέλατε, θα μπορούσατε εύκολα να το μετατρέψετε σε ένα πολύπλοκο σχέδιο - ίσως μια γέφυρα ανάρτησης!

Κουμπί Super Mining

Minecraft-Pi-Super-Mine

Αυτό το παράδειγμα θα κάνει σύντομη εργασία εξόρυξης. Αποτελείται από ένα φυσικό κουμπί, το οποίο, όταν πιεστεί, θα περάσει 10 μπλοκ σε κύβους. Ας ξεκινήσουμε με το κουμπί. Παρόμοια με τα κουμπιά του Arduino, θα χρειαστείτε ένα μικρό κομμάτι ηλεκτρονικών, όλα τα οποία θα πρέπει να βρεθούν σε ένα βασικό κιτ εκκίνησης Τι είναι το κιτ εκκίνησης Arduino; [Arduino Beginners] Τι υπάρχει στο κιτ εκκίνησης Arduino; [Arduino Beginners] Αντιμετωπίζοντας ένα κουτί γεμάτο ηλεκτρονικά εξαρτήματα, είναι εύκολο να σας συγκλονίσει. Εδώ είναι ένας οδηγός για ακριβώς τι θα βρείτε στο κιτ σας. Διαβάστε περισσότερα :

  • 1 x Breadboard
  • 1 στιγμιαίο διακόπτη
  • 1 x 220 ohm αντίσταση
  • Θηλυκά> αρσενικά καλώδια άλματος
  • Αρσενικά> Αρσενικά άλματα καλωδίων

Εδώ είναι το κύκλωμα:

Κουμπί Pi-Σύνδεση

Αυτή η αντίσταση ονομάζεται αντίσταση "pull down". Βοηθά να διασφαλιστεί ότι αυτό που σκέφτεται το Pi είναι το κουμπί που πιέζεται, είναι πραγματικά το κουμπί που πιέζεται. Δεν χρειάζεται να το χρησιμοποιήσετε, ωστόσο συνιστάται, καθώς μπορείτε να βρείτε πολύ θόρυβο και ψευδείς ενδείξεις χωρίς αυτό.

Το κουμπί είναι συνδεδεμένο με τον ακροδέκτη GPIO 14. Μπορείτε να χρησιμοποιήσετε οποιαδήποτε καρφίτσα GPIO, ωστόσο κοιτάξτε πρώτα το pinout, καθώς δεν είναι όλα ελεγχόμενα από το Pi και διαφέρουν ελαφρά μεταξύ των μοντέλων.

Τώρα που το κουμπί είναι συνδεδεμένο, ήρθε η ώρα να το δοκιμάσετε. Δημιουργήστε ένα νέο αρχείο και αποθηκεύστε το ως " button_test.py ". Προσθέστε αυτόν τον κωδικό, αποθηκεύστε τον και μετά εκτελέστε τον στο Terminal.

 import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use GPIO.setup(14, GPIO.IN) # tell the Pi this pin is an input while True: if GPIO.input(14) == True: # look for button press print "BUTTON WORKS!" # log result time.sleep(0.5) # wait 0.5 seconds 

Πατήστε Control + C για να σταματήσετε τη δέσμη ενεργειών. Αν όλα λειτουργούν σωστά, θα πρέπει να δείτε το "BUTTON WORKS!" Στο τερματικό. Παρατηρήστε πώς, όπως και η μονάδα Minecraft, αυτή η δοκιμή χρησιμοποιεί τις μονάδες RPi.GPIO και χρονικές μονάδες. Αυτά επιτρέπουν στο Pi να έχει πρόσβαση στις ακίδες υλικού και να παρέχει χρήσιμες λειτουργίες χρονισμού.

Τώρα αφήνει να τελειώσει το υπόλοιπο του κώδικα. Δημιουργήστε ένα νέο αρχείο που καλείται " super_mine.py ". Εδώ είναι ο κώδικας:

 import RPi.GPIO as GPIO import time from mcpi.minecraft import Minecraft mc = Minecraft.create() # create Minecraft Object GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use GPIO.setup(14, GPIO.IN) # tell the Pi this pin is an input while True: if GPIO.input(14) == True: # look for button press x, y, z = mc.player.getPos() # read the player position mc.setBlocks(x, y, z, x + 10, y + 10, z + 10, 0) # mine 10 blocks mc.setBlocks(x, y, z, x - 10, y + 10, z - 10, 0) # mine 10 blocks time.sleep(0.5) # wait 0.5 seconds 

Το mc.player.getPos () επιστρέφει τις τρέχουσες συντεταγμένες των παικτών, οι οποίες στη συνέχεια αποθηκεύονται σε x, y και z. Η μέθοδος setBlocks () λέει στο Minecraft να γεμίσει όλα τα μπλοκ μεταξύ της έναρξης και του τέλους με το ακόλουθο μπλοκ. Το μηδέν είναι το block-id για τον αέρα. Θα μπορούσατε να αλλάξετε αυτό σε άλλο block-id για να γεμίσετε μια περιοχή. Θα μπορούσατε επίσης να αλλάξετε τις συντεταγμένες σε +100 ή ακόμα και +1000 μπλοκ, ωστόσο το Pi μπορεί να αρχίσει να αγωνίζεται αν πάρετε πάρα πολύ τρελό. Παρατηρήστε πώς το y + 10 είναι το ίδιο και για τις δύο γραμμές. Θα μπορούσατε να το αλλάξετε σε y - 10 εάν θέλετε να αφαιρέσετε τα μπλοκ υπόγεια.

Τηλεμεταφορά

Minecraft-Pi-Teleporting

Μια άλλη απλή χρήση για αυτό το κουμπί θα μπορούσε να είναι η "τηλεμεταφορά". Το Minecraft Pi Api παρέχει έναν τρόπο για να ρυθμίσετε τη θέση του παίκτη. Ο παρακάτω κωδικός θα "τηλεμεταφέρει" τη συσκευή αναπαραγωγής σε μια προκαθορισμένη θέση:

 mc.player.setPos(0, 0, 0) 

Σημειώστε ότι η μέθοδος του δέχεται τρεις παραμέτρους. x, y και z - ώστε να μπορείτε να ρυθμίσετε αυτά σε οτιδήποτε για να τηλεμεταφέρει αμέσως τον παίκτη σε αυτή τη θέση.

Δημιουργήστε ένα αντίγραφο του αρχείου super_mine ( File> Save Copy As ) και τροποποιήστε το αντικαθιστώντας το if με τα ακόλουθα:

 if GPIO.input(14) == True: # look for button press mc.player.setPos(0, 0, 0) # teleport player time.sleep(0.5) # wait 0.5 seconds 

Αυτό το αρχείο θα πρέπει τώρα να φαίνεται ως εξής:

 import RPi.GPIO as GPIO from mcpi.minecraft import Minecraft import time mc = Minecraft.create() # create Minecraft Object GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use GPIO.setup(14, GPIO.IN) # tell the Pi this pin is an input while True: if GPIO.input(14) == True: # look for button press mc.player.setPos(0, 0, 0) # teleport player time.sleep(0.5) # wait 0.5 seconds 

Αποθηκεύστε το ως " teleport.py " και εκτελέστε.

Ενδέχεται να διαπιστώσετε ότι ο παίκτης κολλάει μέσα σε μερικά μπλοκ όταν το χρησιμοποιείτε, οπότε θα χρειαστεί να προσαρμόσετε τις συντεταγμένες σε έναν γνωστό ανοιχτό χώρο (το επάνω αριστερό μέρος της οθόνης δείχνει την τρέχουσα θέση σας).

Χτίζω ένα σπίτι

Minecraft-Pi-Σπίτι

Ένα τελευταίο έργο για αυτό το κουμπί είναι η οικοδόμηση ενός σπιτιού. Όπως το παράδειγμα γρήγορης εξόρυξης παραπάνω, αυτό θα αντικαταστήσει απλά τα τετράγωνα που περιβάλλουν τον παίκτη για να φτιάξει ένα σπίτι. Διαφορετικά block-id θα χρησιμοποιηθούν για διαφορετικά υλικά (παράθυρο, τοίχοι κλπ). Για να καταστεί ευκολότερη η κωδικοποίηση, θα δημιουργηθεί ένα συμπαγές μπλοκ και στη συνέχεια το εσωτερικό θα αφαιρεθεί (ορίστε το μπλοκ στον αέρα), αυτό θα δημιουργήσει ένα κοίλο κέλυφος. Θα μπορούσατε να προσθέσετε πρόσθετα όπως ένα κρεβάτι ή μια πόρτα, ωστόσο το έργο Minecraft Pi είναι λίγο ατελές και ενώ αυτά τα αντικείμενα λειτουργούν όταν τοποθετούνται από τον παίκτη, δεν είναι λαμπρά όταν χρησιμοποιείτε Python.

 from mcpi.minecraft import Minecraft import RPi.GPIO as GPIO import time mc = Minecraft.create() # create Minecraft Object GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use GPIO.setup(14, GPIO.IN) # tell the Pi this pin is an input while True: if GPIO.input(14) == True: x, y, z = mc.player.getPos() mc.setBlocks(x + 2, y - 1, z + 2, x + 7, y + 3, z + 8, 5) # make shell mc.setBlocks(x + 3, y, z + 3, x + 6, y + 2, z + 7, 0) # remove inside mc.setBlocks(x + 2, y, z + 5, x + 2, y + 1, z + 5, 0) # make doorway mc.setBlocks(x + 4, y + 1, z + 8, x + 5, y + 1, z + 8, 102) # make window 1 mc.setBlocks(x + 4, y + 1, z + 2, x + 5, y + 1, z + 2, 102) # make window 2 mc.setBlocks(x + 7, y + 1, z + 4, x + 7, y + 1, z + 6, 102) # make window 3 

Αποθηκεύστε αυτό ως " house.py " και εκτελέστε. Όλα είναι καλά, θα πρέπει να δείτε ένα μικρό σπίτι εμφανίζονται (μπορεί να χρειαστεί να γυρίσετε για να το βρείτε). Είναι πολύ απλό, ένα άνοιγμα και μερικά παράθυρα. Θεωρητικά, δεν υπάρχει όριο στο πόσο μεγάλο ή πολύπλοκο κτίριο θα μπορούσατε να κατασκευάσετε.

Κάντε ένα μίνι παιχνίδι

Minecraft-Pi-Lava-παιχνίδι

Στη συνέχεια, ας κάνουμε ένα μίνι-παιχνίδι! Αυτό θα είναι αρκετά απλό, όταν ο παίκτης βγει σε ένα μπλοκ άμμου, θα μετατραπεί σε λάβα μετά από τυχαίο χρονικό διάστημα. Αυτό είναι ένα καλό παιχνίδι, όπως θα μπορούσατε να σχεδιάσετε τα δικά σας επίπεδα ή να τα τροποποιήσετε για να κάνετε τα πράγματα πιο δύσκολα. Δεν θα χρειαστείτε το κουμπί για αυτό το παράδειγμα.

Δημιουργήστε ένα νέο αρχείο και αποθηκεύστε το ως " mini_game.py ". Εδώ είναι ο κώδικας:

 from mcpi.minecraft import Minecraft import random import time mc = Minecraft.create() # create Minecraft Object while True: x, y, z = mc.player.getPos() block_under_player = mc.getBlock(x, y - 1, z) if block_under_player == 12: # player standing on sand, start the timer random_time = random.uniform(0.1, 2.5) # generate random number time.sleep(random_time); # wait mc.setBlock(x, y - 1, z, 11) # turn it into lava 

Αυτός ο κώδικας είναι ένας καλός εκκινητής στην τυχαία () συνάρτηση: random.uniform (0.1, 2.5) θα δημιουργήσει έναν τυχαίο αριθμό μεταξύ 0, 1 (1 / 10th δευτερολέπτου) και 2, 5 (2 1/2 δευτερολέπτων). Η αύξηση αυτών των αριθμών θα διευκολύνει το παιχνίδι.

Δοκίμασέ το! Σταθείτε σε ένα μπλοκ άμμου και σύντομα θα μετατραπεί σε λάβα. Αυτό θα μπορούσε να είναι η βάση ενός πιο περίπλοκου παιχνιδιού.

Κάντε ένα άλλο μίνι παιχνίδι

Minecraft-Pi-Mini-Game

Η προϋπόθεση για αυτό το παιχνίδι είναι απλή - μην στέκεστε στο ξύλινο πάτωμα όταν τελειώσει ο χρόνος. Ο παίκτης παίρνει τηλεμεταφορά σε "αρένα". Αναγκάζονται να σταθούν μέχρι να ξεκινήσει το παιχνίδι. Μόλις ξεκινήσει, το πάτωμα θα γυρίσει στο νερό μόλις τελειώσει ο χρονομετρητής. Ο παίκτης πρέπει να στέκεται στην ασφαλή ζώνη (μπλοκ διαμαντιών) για να επιβιώσει. Κάθε επίπεδο μειώνει το χρονόμετρο κατά ένα δευτερόλεπτο. Μετά από κάθε επιτυχημένο επίπεδο η ασφαλής περιοχή γίνεται μεγαλύτερη. Ελέγξτε τον παρακάτω κώδικα:

 import time import random from mcpi.minecraft import Minecraft mc = Minecraft.create() # create Minecraft Object # clear area mc.setBlocks(-10, 1, -10, 25, 5, 25, 0) # create arena shell mc.setBlocks(0, 0, 0, 25, 10, 25, 17) # hollow out arena mc.setBlocks(1, 1, 1, 24, 10, 24, 0) # move player to arena mc.player.setPos(14, 25, 20) # teleport player # make them stay put # teleport player to start position every 1/10th second. # do this for 5 seconds then start the game time.sleep(2) total_wait = 0 mc.postToChat("Waiting to Start") while total_wait< 5: mc.player.setPos(14, 1, 20) # teleport player time.sleep(0.1) total_wait += 0.1 mc.postToChat("BEGIN!") # 10 levels for level in range(10): x, y, z = mc.player.getPos() level_time = 10 - level # reduce time by 1 second for each level mc.postToChat("Level - " + str(level + 1) + " start") # build floor mc.setBlocks(0, 0, 0, 25, 0, 25, 17) # make safe area safe_area_start = random.uniform(0, 22) safe_area_end = random.uniform(0, 22) mc.setBlocks(safe_area_start, 0, safe_area_end, safe_area_start + level, 0, safe_area_end + level, 57) elapsed_time = 0 while elapsed_time< 10: x, y, z = mc.player.getPos() time.sleep(0.25) elapsed_time += 0.25 # check player is still on floor if y< 0.75: mc.postToChat("Game Over") break; else: # remove floor mc.setBlocks(-10, 0, -10, 25, 0, 25, 8) # put safe area back mc.setBlocks(safe_area_start, 0, safe_area_end, safe_area_start + level, 0, safe_area_end + level, 57) time.sleep(2.5) continue break 

Αποθηκεύστε αυτό ως " mini_game_2.py " και δώστε το ένα τρέξιμο.

Το Pi 2 έχει κάποια προβλήματα επιδόσεων κατά τη λειτουργία του Minecraft. Το γράφημα χρήσης της Κεντρικής Μονάδας Επεξεργασίας (CPU) (στην πάνω δεξιά γωνία ) δεν δείχνει ποτέ κανένα βαρύ φορτίο, οπότε αυτό πρέπει να είναι κάτω από κακό σχεδιασμό και βελτιστοποιήσεις από τους προγραμματιστές. Αυτά τα ζητήματα δεν σχετίζονται με τον κώδικα που εκτελείται (καθώς συνεχίζονται όταν η Python δεν εκτελείται), ωστόσο είναι επιδεινωμένα από αυτό το μίνι παιχνίδι. Εάν το Pi σας αγωνίζεται πραγματικά μπορεί να θέλετε να μειώσετε το μέγεθος της αρένας ή να υπερκεράσετε το Pi Not Enough Juice; Πιέστε το σμέουρο Pi σας με Overclocking Not Juice αρκετά; Πιέστε το Raspberry Pi από το Overclocking Αν υπάρχει κάποιο υλικό που κυκλοφόρησε το 2012 και είναι πιθανό να ερωτευτείς, είναι το γλυκό-σαν-ζάχαρη Raspberry Pi, ένα μίνι υπολογιστής σχεδιασμένο και κατασκευασμένο στο Ηνωμένο Βασίλειο που έχει αποσταλεί σε όλο τον κόσμο. .. Διαβάστε περισσότερα .

Ανιχνευτής διαμαντιών

Minecraft-Pi-Diamonds

Ας κάνουμε ένα άλλο κύκλωμα. Αυτό θα χρησιμοποιεί μια δίοδο εκπομπής φωτός (LED) για να ανάβει όταν υπάρχουν διαμάντια κάτω από (μέσα σε 15 μπλοκ). Εδώ είναι αυτό που χρειάζεστε:

  • 1 x Breadboard
  • 1 x LED
  • 1 x 220 ohm αντίσταση
  • Θηλυκά> αρσενικά καλώδια άλματος
  • Αρσενικά> Αρσενικά άλματα καλωδίων

Εδώ είναι το κύκλωμα:

Pi-LED-Σύνδεση

Συνδέστε την Anode (μακρύ πόδι) με τον ακροδέκτη GPIO 14. Αυτός ο ακροδέκτης λειτουργεί σαν + 5v. Συνδέστε την Κάθοδο (κοντό πόδι) στη γείωση.

Έχω χρησιμοποιήσει ένα φτηνό παιχνίδι μεταλλεύματος και το τροποποίησα αφαιρώντας το πίσω κάλυμμα και τα ηλεκτρονικά, έβαλα τότε ένα LED κάτω από αυτό. Θα μπορούσατε εύκολα να κάνετε αυτό το μόνιμο με καυτή κόλλα ή κάτι παρόμοιο.

Minecraft-Ore-Toy

Αποθηκεύστε αυτόν τον κωδικό ως " diamonds.py ":

 import RPi.GPIO as GPIO import time from mcpi.minecraft import Minecraft mc = Minecraft.create() # create Minecraft Object led_pin = 14 # store the GPIO pin number GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use GPIO.setup(14, GPIO.OUT) # tell the Pi this pin is an output while True: # repeat indefinitely x, y, z = mc.player.getPos() for i in range(15): # look at every block until block 15 if mc.getBlock(x, y - i, z) == 56: GPIO.output(led_pin, True) # turn LED on time.sleep(0.25) # wait GPIO.output(led_pin, False) # turn LED off time.sleep(0.25) # wait 

Όταν υπάρχει μπλοκ ανθρακούχου διαμαντιού κάτω από τη συσκευή αναπαραγωγής (μέσα σε 15 μπλοκ), το φως θα αναβοσβήνει.

Σκεφτείτε Geek Minecraft Light-Up Diamond Ore Σκεφτείτε Geek Minecraft Light-Up Diamond Ore Αγοράστε τώρα στο Amazon $ 12.89

Έχετε κάνει κάτι δροσερό με το Minecraft Pi; Επιτρέψτε μου να γνωρίζω στα σχόλια τι κάνατε ή πόσο μακριά φτάσατε στα παιχνίδια.

In this article