Διαφήμιση
Θέλατε πάντα να μάθετε να κωδικοποιείτε αλλά δεν γνωρίζετε από πού να ξεκινήσετε; Μάθετε πώς να ελέγχετε το Minecraft στο Raspberry Pi χρησιμοποιώντας Python και κάποια απλά ηλεκτρονικά. Εδώ είναι το τελικό αποτέλεσμα:
Θα χρειαστείτε ένα Pi 2 ή νεότερο για αυτό το έργο και ενώ θα μπορούσατε να ολοκληρώσετε τις περισσότερες από αυτές τις εργασίες μέσω της γραμμής εντολών μέσω του Secure Shell (SSH), αυτό το σεμινάριο θα επικεντρωθεί στην κωδικοποίηση απευθείας στο Pi.
Νέο στη Minecraft; Μην ανησυχείτε - εδώ είναι η δική μας Οδηγός Minecraft για αρχάριους Ο οδηγός (Latecomer) για αρχάριους στην MinecraftΑν όμως αργείς στο πάρτι, μην ανησυχείς - αυτός ο εκτεταμένος οδηγός για αρχάριους έχεις καλύψει. Διαβάστε περισσότερα .
Εισαγωγή στη Minecraft Pi

Το Minecraft για το Raspberry Pi έχει σχεδιαστεί για μάθηση και διασκεδασμό (και είναι δωρεάν). Έρχεται με μια διεπαφή προγραμματισμού εφαρμογών (Application Programming Interface - API), η οποία παρέχει έναν τρόπο για να μιλάτε εύκολα στον κώδικα με το Minecraft. Είναι εξαιρετικό για να μάθετε πώς να κωδικοποιείτε στην Python, καθώς και
ξεκινώντας με τα ηλεκτρονικά Ηλεκτρονικά αρχαρίων: 10 δεξιότητες που πρέπει να ξέρετεΠολλοί από εμάς δεν έχουν αγγίξει ποτέ ούτε ένα συγκολλητικό σίδερο - αλλά τα πράγματα μπορούν απίστευτα να ανταμείψουν. Εδώ είναι δέκα από τις πιο βασικές δεξιότητες ηλεκτρονικών ειδών DIY που θα σας βοηθήσουν να ξεκινήσετε. Διαβάστε περισσότερα .Τι είναι η 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 Πώς να εγκαταστήσετε ένα λειτουργικό σύστημα σε ένα σμέουρο PiΔείτε πώς μπορείτε να εγκαταστήσετε ένα λειτουργικό σύστημα στο Raspberry Pi και πώς να κλωνοποιήσετε την ιδανική εγκατάσταση για γρήγορη αποκατάσταση καταστροφών. Διαβάστε περισσότερα , δεν απαιτούνται πολλές αρχικές ρυθμίσεις.
Άνοιγμα τερματικού (Μενού> Αξεσουάρ> Τερματικό) και εκτελέστε αυτήν την εντολή. Είναι πάντα καλές πρακτικές να ενημερώσετε τη λίστα αποθετηρίων και αυτό θα κάνει λήψη της τελευταίας λίστας προγραμμάτων (δεν θα κατεβάσει τα ίδια τα προγράμματα, αυτό βοηθά το Pi να γνωρίζει ποια προγράμματα καλούνται και πού να βρεθούν τους).
sudo apt-get ενημέρωση.
Τώρα ενημερώστε το Pi (αυτό μπορεί να διαρκέσει λίγο):
sudo apt-get αναβάθμιση.
Η Python και η Minecraft Pi έχουν εγκατασταθεί ήδη, ωστόσο, αν το Minecraft Pi δεν έχει εγκατασταθεί για οποιονδήποτε λόγο, είναι απλό στην εγκατάσταση 5 τρόποι για να εγκαταστήσετε το λογισμικό σε Raspberry PiΓια να κάνετε τίποτα με ένα Raspberry Pi, θα πρέπει να ξέρετε πώς να εγκαταστήσετε ένα λειτουργικό σύστημα και λογισμικό για να τρέξετε σε αυτό. Εάν είστε νέοι στο Linux, αυτό μπορεί να είναι τρομακτικό. Διαβάστε περισσότερα :
sudo apt-get εγκαταστήστε minecraft-pi
Πλοηγηθείτε στα έγγραφα και δημιουργήστε ένα νέο φάκελο που ονομάζεται "Minecraft":
cd Έγγραφα / 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 και πληκτρολογήστε:
εκτύπωση "Γεια σας, Παγκόσμια!"
Αποθηκεύστε αυτό το αρχείο και εκτελέστε το ξανά - θα πρέπει να δείτε τώρα "Hello, World!" εμφανίζονται στη γραμμή εντολών - τακτοποιημένο! Η εντολή εκτύπωσης απλά λέει στην Python την έξοδο του παρακάτω κειμένου σε διπλά εισαγωγικά. Αυτό είναι καλό, αλλά όχι πολύ χρήσιμο για τη Minecraft, ας το συνδέσουμε:
από mcpi.minecraft εισαγωγής Minecraft mc = Minecraft.create () mc.postToChat ("Γεια σας, Παγκόσμια!")
Τώρα, αν αποθηκεύσετε και εκτελέσετε αυτό το αρχείο, θα πρέπει να δείτε "Hello, World!" εμφανίζονται στο παιχνίδι Minecraft. Ας αναλύσουμε τον κώδικα:
από το mcpi.minecraft εισαγωγής Minecraft
Αυτή η γραμμή λέει στην Python ότι θέλετε να χρησιμοποιήσετε κώδικα από άλλο αρχείο. Αυτό το αρχείο mcpi.minecraft αναπτύχθηκε για να επιτρέπει τον εύκολο έλεγχο του Minecraft.
mc = Minecraft.create ()
Αυτή η γραμμή δημιουργεί ένα αντικείμενο που ονομάζεται "mc" (Minecraft). Πρέπει να δημιουργήσετε αυτό για να επιτρέψετε την επικοινωνία με το παιχνίδι Minecraft - δεν αρκεί μόνο να συμπεριλάβετε το αρχείο.
mc.postToChat ("Γεια σας, Παγκόσμια!")
Τέλος, αυτή η γραμμή λέει στη Minecraft να γράψει κάποιο κείμενο στην συνομιλία. Δοκιμάστε να αλλάξετε "Γεια σας, Παγκόσμια!" σε κάτι άλλο και να δούμε τι συμβαίνει, αλλά θυμηθείτε να συμπεριλάβετε και τα διπλά εισαγωγικά. Αν αντιμετωπίζετε προβλήματα λογισμικού, αυτά είναι μερικά κοινά σφάλματα Python και Minecraft Pi:
- AttributeError - αυτό είναι ένα τυπογραφικό λάθος, όπως pint ή prnt αντί για εκτύπωση
- NameError: Το όνομα 'Minecraft' δεν έχει οριστεί - θυμηθείτε να εισαγάγετε τις μονάδες που χρειάζεστε
- NameError: Το όνομα 'true' δεν έχει οριστεί - Python κάνει διάκριση πεζών-κεφαλαίων, αλλάζει σε "True"
- socket.error: [Errno 111] Η σύνδεση απορρίφθηκε - Βεβαιωθείτε ότι λειτουργεί το Minecraft
Εργα
Τώρα που γνωρίζετε τα βασικά της Python και της Minecraft, ας κάνουμε μερικά δροσερά έργα. Όλος ο κωδικοποιητής μπορεί να μεταφορτωθεί από Github.
Αυτοματοποιημένος κατασκευαστής γεφυρών

Αυτό το πρόγραμμα θα χτίσει αποτελεσματικά μια γέφυρα πάνω από το νερό. Όταν ο παίκτης πλησιάσει σε ένα σώμα νερού, το πρόγραμμα θα μετατρέψει διάφορα μπλοκ σε πέτρα. Καθώς το Minecraft χρησιμοποιεί ένα σύστημα συντεταγμένων, είναι πολύ εύκολο να πάρει τη θέση του παίκτη, μαζί με τον τύπο μπλοκ γύρω από τον παίκτη. Το Minecraft Pi είναι ελαφρώς περιορισμένο, οπότε δεν είναι δυνατή η μαζική ενημέρωση πολλών διαφορετικών μπλοκ. Μπορείτε ωστόσο να κωδικοποιήσετε εύκολα αυτή τη συμπεριφορά.
Δημιουργία νέου αρχείου (Αρχείο> Νέο αρχείο) και να το αποθηκεύσετε ως "bridge_builder.py“.
από το mcpi.minecraft εισαγωγής Minecraft. mc = Minecraft.create () # δημιουργήστε το αντικείμενο Minecraft ενώ είναι αληθές: x, y, z = mc.player.getPos () # αποθηκεύστε τη θέση του παίκτη # αποθηκεύστε τα περιβάλλοντα μπλοκ a = mc.getBlock (x, 1) b = (x + 1, y - 1, z) d = mc.getBlock (x, y - 1, z - 1) c = mc.getBlock 8 ή a == 9 ή b == 8 ή b == 9 ή c == 8 ή c == 9 ή d == 8 ή d == 9: # 8 ή 9 είναι νερό. Ρυθμίστε τα γύρω μπλοκ στο πάτωμα σε ένα στερεό (πέτρα) αν βρεθεί νερό mc.setBlocks (x, y - 1, z, x + 1, y - 1, z + 1, 1) (x, y - 1, z, x - 1, y - 1, z - 1, 1) mc.setBlocks (x, y - 1, z - .blocks (x, y-1, z, x + 1, y-1, z-1, 1)
Παρατηρήστε πώς η τιμή y στην πραγματικότητα κοιτάζει y - 1. Αυτό είναι το επίπεδο του δαπέδου. Εάν χρησιμοποιήθηκε η τιμή του y, το σενάριο θα ψάχνει για μπλοκ σε επίπεδο γόνατος - δεν θα λειτουργούσε πολύ καλά! Mc.getBlock () επιστρέφει την ταυτότητα ενός μπλοκ για τις δεδομένες συντεταγμένες. Δεδομένου ότι τα x, y και z είναι οι συντεταγμένες του παίκτη, μπορείτε να προσθέσετε ή να αφαιρέσετε από αυτά για να αποκτήσετε θέσεις γύρω από τον παίκτη. Δεν χρειάζεται να χρησιμοποιήσετε τις τιμές x, y και z, θα μπορούσατε να χρησιμοποιήσετε οποιοδήποτε αριθμό, ωστόσο ίσως να μην ξέρετε πώς σχετίζεται αυτό το συγκεκριμένο μπλοκ με τον παίκτη - είναι προτιμότερο να χρησιμοποιήσετε τιμές σχετικές με τον παίκτη. Εκτελέστε αυτό το αρχείο από τη γραμμή εντολών και δείτε τι συμβαίνει.
Θα πρέπει να δείτε ότι μια μικρή επιφάνεια του εδάφους μετατρέπεται σε πέτρα μόλις ο παίκτης φτάσει σε ένα σώμα νερού. Δεν είναι υπέροχο - είστε σε θέση να περπατήσετε αρκετά γρήγορα για να προκαλέσετε κάποιο πρόβλημα. Θα μπορούσατε να λύσετε αυτό με τη μετατροπή ενός μεγαλύτερου όγκου νερού στη γη. Το τελευταίο μέρος της μεθόδου mc.setBlocks () είναι το id μπλοκ. Το ένα είναι το μπλοκ id για πέτρα. Θα μπορούσατε να το αλλάξετε σε ξύλο, γρασίδι ή οτιδήποτε άλλο. Εάν θελήσατε, θα μπορούσατε εύκολα να μετατρέψετε αυτό σε ένα πολύπλοκο σχέδιο - ίσως μια γέφυρα ανάρτησης!
Super Mining Button

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

Αυτή η αντίσταση ονομάζεται αντίσταση "pull down". Βοηθά να διασφαλιστεί ότι αυτό που σκέφτεται το Pi είναι το κουμπί που πιέζεται, είναι πραγματικά το κουμπί που πιέζεται. Δεν χρειάζεται να το χρησιμοποιείτε, ωστόσο συνιστάται, καθώς μπορεί να βρείτε πολύ θόρυβο και ψευδείς ενδείξεις χωρίς αυτό.
Το κουμπί συνδέεται με τον ακροδέκτη εισόδου γενικής χρήσης (GPIO) 14. Μπορείτε να χρησιμοποιήσετε οποιοδήποτε pin GPIO, ωστόσο κοιτάξτε το pinout πρώτα, καθώς δεν είναι όλα ελεγχόμενα από το Pi, και ποικίλλουν ελαφρά μεταξύ των μοντέλων.
Τώρα που το κουμπί είναι συνδεδεμένο, ήρθε η ώρα να το δοκιμάσετε. Δημιουργήστε ένα νέο αρχείο και αποθηκεύστε το ως "button_test.py“. Προσθέστε αυτόν τον κωδικό, αποθηκεύστε τον και στη συνέχεια εκτελέστε τον στο Terminal.
εισαγωγή RPi. GPIO ως GPIO. χρόνος εισαγωγής GPIO.setmode (GPIO.BCM) # πείτε στο Pi ποιες κεφαλίδες να χρησιμοποιήσετε. GPIO.setup (14, GPIO.IN) # πείτε στο Pi αυτό το pin είναι μια είσοδος ενώ True: αν GPIO.input (14) == Αληθινό: # ψάξτε για εκτύπωση πατώντας κουμπί "BUTTON WORKS!" # ημερολογιακό αποτέλεσμα. (0,5) # περιμένετε 0,5 δευτερόλεπτα.
Τύπος Έλεγχος + C για να σταματήσετε το σενάριο. Εάν τα πάντα λειτουργούν σωστά, θα πρέπει να δείτε το "BUTTON WORKS!" στο τερματικό. Παρατηρήστε πώς, όπως και η μονάδα Minecraft, αυτή η δοκιμή χρησιμοποιεί το RPi. GPIO και μονάδες χρόνου. Αυτά επιτρέπουν στην Pi να έχει πρόσβαση στις ακίδες υλικού και να παρέχει χρήσιμες λειτουργίες χρονισμού.
Τώρα αφήνει να τελειώσει το υπόλοιπο του κώδικα. Δημιουργήστε ένα νέο αρχείο που καλείται "super_mine.py“. Εδώ είναι ο κώδικας:
εισαγωγή RPi. GPIO ως GPIO. χρόνο εισαγωγής. από mcpi.minecraft εισαγωγής Minecraft mc = Minecraft.create () # δημιουργία Minecraft Object GPIO.setmode (GPIO.BCM) # πείτε στο Pi ποιες κεφαλίδες να χρησιμοποιήσετε. GPIO.setup (14, GPIO.IN) # πείτε στον Pi ότι αυτός ο ακροδέκτης είναι μια είσοδος ενώ είναι αληθής: αν GPIO.input (14) == Αληθινό: # αναζητήστε πατημένο το πλήκτρο x, y, z = mc.player.getPos ) # διαβάστε τη συσκευή αναπαραγωγής (x, y, z, x + 10, y + 10, z + 10, 0) # ορυχείο 10 μπλοκ mc.setBlocks (x, y, z,, 0) # ορυχείο 10 μπλοκ time.lear (0.5) # περιμένετε 0.5 δευτερολέπτων.
mc.player.getPos () επιστρέφει τις τρέχουσες συντεταγμένες των παικτών, οι οποίες στη συνέχεια αποθηκεύονται σε x, y και z. ο setBlocks () η μέθοδος λέει στο Minecraft να γεμίσει όλα τα τετράγωνα μεταξύ της έναρξης και του τέλους με το ακόλουθο μπλοκ. Το μηδέν είναι το block-id για τον αέρα. Θα μπορούσατε να αλλάξετε αυτό σε άλλο block-id για να γεμίσετε μια περιοχή. Θα μπορούσατε επίσης να αλλάξετε τις συντεταγμένες σε +100 ή ακόμα και +1000 μπλοκ, ωστόσο το Pi μπορεί να αρχίσει να αγωνίζεται αν πάρετε πάρα πολύ τρελό. Παρατηρήστε πώς το y + 10 είναι το ίδιο και για τις δύο γραμμές. Θα μπορούσατε να το αλλάξετε σε y - 10 αν θέλετε να αφαιρέσετε τα μπλοκ υπόγεια.
Τηλεμεταφορά

Μια άλλη απλή χρήση για αυτό το κουμπί θα μπορούσε να είναι η "τηλεμεταφορά". Το Minecraft Pi Api παρέχει έναν τρόπο για να ρυθμίσετε τη θέση του παίκτη. Ο παρακάτω κωδικός θα "τηλεμεταφέρει" τη συσκευή αναπαραγωγής σε μια προκαθορισμένη θέση:
mc.player.setPos (0, 0, 0)
Σημειώστε ότι η μέθοδος του δέχεται τρεις παραμέτρους. x, y και z - για να μπορείτε να τα ορίσετε σε οτιδήποτε για να τηλεμετατρέψετε αμέσως τη συσκευή στη συγκεκριμένη θέση.
Δημιουργήστε ένα αντίγραφο του αρχείου super_mine (Αρχείο> Αποθήκευση αντιγραφής ως) και να το τροποποιήσετε αντικαθιστώντας το if με τα ακόλουθα:
εάν GPIO.input (14) == Αληθές: # ψάξτε για το πάτημα πλήκτρου mc.player.setPos (0, 0, 0) # teleport player time.sleep (0.5) # περιμένετε 0,5 δευτερόλεπτα.
Αυτό το αρχείο θα πρέπει τώρα να φαίνεται ως εξής:
εισαγωγή RPi. GPIO ως GPIO. από το mcpi.minecraft εισαγωγής Minecraft. χρόνος εισαγωγής mc = Minecraft.create () # δημιουργήστε το αντικείμενο Minecraft GPIO.setmode (GPIO.BCM) # πείτε στο Pi ποιες κεφαλίδες να χρησιμοποιήσετε. GPIO.setup (14, GPIO.IN) # πείτε στο Pi ότι ο ακροδέκτης είναι μια είσοδος ενώ True: αν GPIO.input (14) == True: # ψάξτε για το πάτημα πλήκτρου mc.player.setPos (0, 0, 0) # teleport player time.sleep (0.5) # wait 0.5 δευτερολέπτων.
Αποθηκεύστε το ως "teleport.py"Και τρέχει.
Μπορεί να διαπιστώσετε ότι ο παίκτης κολλάει μέσα σε μερικά μπλοκ όταν το χρησιμοποιείτε, οπότε θα χρειαστεί να το κάνετε ρυθμίστε τις συντεταγμένες σε ένα γνωστό ανοιχτό χώρο (το επάνω αριστερό μέρος της οθόνης εμφανίζει το τρέχον σας τοποθεσία).
Χτίζω ένα σπίτι

Ένα τελευταίο έργο για αυτό το κουμπί είναι να οικοδομήσουμε ένα σπίτι. Όπως το παράδειγμα γρήγορης εξόρυξης παραπάνω, αυτό απλά αντικαθιστά τα μπλοκ γύρω από τον παίκτη για να φτιάξει ένα σπίτι. Διαφορετικά block-id θα χρησιμοποιηθούν για διαφορετικά υλικά (παράθυρο, τοίχοι κλπ). Για να καταστεί ευκολότερη η κωδικοποίηση, θα δημιουργηθεί ένα συμπαγές μπλοκ και στη συνέχεια το εσωτερικό θα αφαιρεθεί (ορίστηκε μπλοκ στον αέρα), αυτό θα δημιουργήσει ένα κοίλο κέλυφος. Θα μπορούσατε να προσθέσετε πρόσθετα όπως ένα κρεβάτι ή μια πόρτα, ωστόσο το έργο Minecraft Pi είναι λίγο ατελές και ενώ αυτά τα αντικείμενα λειτουργούν όταν τοποθετούνται από τον παίκτη, δεν είναι λαμπρά όταν χρησιμοποιείτε Python.
από το mcpi.minecraft εισαγωγής Minecraft. εισαγωγή RPi. GPIO ως GPIO. χρόνος εισαγωγής mc = Minecraft.create () # δημιουργήστε το αντικείμενο Minecraft GPIO.setmode (GPIO.BCM) # πείτε στο Pi ποιες κεφαλίδες να χρησιμοποιήσετε. GPIO.setup (14, GPIO.IN) # πείτε στο Pi αυτό το pin είναι μια είσοδος ενώ True: αν GPIO.input (14) == True: x, y, z = mc.player.getPos () mc.setBlocks x + 2, γ-1, ζ + 2, χ + 7, γ + 3, ζ + 8, 5) (x + 3, y, z + 3, x + 6, y + 2, z + 7, 0) # αφαίρεση μέσα στο mc.setBlocks (x + 4, y + 1, z + 8, x + 1, z + 5, 0) (X + 4, y + 1, z + 2, x + 5, y + 1, z + 2, 102) # παράγουν παράθυρο 2 mc.setBlocks (x + 7, γ + 1, ζ + 4, χ + 7, γ + 1, ζ + 6, 102) 3.
Αποθηκεύστε αυτό ως "house.py"Και τρέχει. Όλα είναι καλά, θα πρέπει να δείτε ένα μικρό σπίτι φαίνεται (μπορεί να χρειαστεί να γυρίσετε για να το βρείτε). Είναι πολύ απλό, ένα άνοιγμα και μερικά παράθυρα. Θεωρητικά, δεν υπάρχει κανένα όριο στο πόσο μεγάλο ή πολύπλοκο κτίριο θα μπορούσατε να κατασκευάσετε.
Κάνετε ένα μίνι παιχνίδι

Στη συνέχεια, ας κάνουμε ένα μίνι-παιχνίδι! Αυτό θα είναι αρκετά απλό, όταν ο παίκτης βγει σε ένα μπλοκ άμμου, θα μετατραπεί σε λάβα μετά από τυχαίο χρονικό διάστημα. Αυτό είναι ένα καλό παιχνίδι για να κάνετε, καθώς θα μπορούσατε να σχεδιάσετε τα δικά σας επίπεδα ή να τα τροποποιήσετε για να κάνετε τα πράγματα πιο δύσκολα. Δεν θα χρειαστείτε το κουμπί για αυτό το παράδειγμα.
Δημιουργήστε ένα νέο αρχείο και αποθηκεύστε το ως "mini_game.py“. Εδώ είναι ο κώδικας:
από το mcpi.minecraft εισαγωγής Minecraft. τυχαία εισαγωγή. Εισαγωγή χρόνου mc = Minecraft.create () # Δημιουργία αντικειμένου Minecraft ενώ True: x, y, z = mc.player.getPos () block_under_player = mc.getBlock (x, y-1, z) block_under_player == 12: # παίκτης που στέκεται πάνω στην άμμο, ξεκινήστε το χρονόμετρο random_time = random.uniform (0.1, 2.5) # παράγει τυχαίο αριθμό time.sleep (random_time). # wait mc.setBlock (x, y-1, z, 11) # μετατρέψτε το σε λάβα.
Αυτός ο κώδικας είναι ένας καλός εκκινητής στο τυχαίος() λειτουργία: random.uniform (0,1, 2,5) θα παράγει έναν τυχαίο αριθμό μεταξύ 0,1 (1 / 10th δευτερολέπτου) και 2,5 (2 1/2 δευτερόλεπτα). Η αύξηση αυτών των αριθμών θα διευκολύνει το παιχνίδι.
Δοκίμασέ το! Σταθείτε σε ένα μπλοκ άμμου και σύντομα θα μετατραπεί σε λάβα. Αυτό θα μπορούσε να είναι η βάση ενός πιο περίπλοκου παιχνιδιού.
Κάντε ένα άλλο μίνι παιχνίδι

Η προϋπόθεση για αυτό το παιχνίδι είναι απλή - μην στέκεστε στο ξύλινο πάτωμα όταν τελειώσει ο χρόνος. Ο παίκτης παίρνει τηλεμεταφορά σε μια "αρένα". Αναγκάζονται να σταθούν μέχρι να ξεκινήσει το παιχνίδι. Μόλις ξεκινήσει, το πάτωμα θα γυρίσει στο νερό μόλις τελειώσει ο χρονομετρητής. Ο παίκτης πρέπει να στέκεται στην ασφαλή ζώνη (μπλοκ διαμαντιών) για να επιβιώσει. Κάθε επίπεδο μειώνει το χρονόμετρο κατά ένα δευτερόλεπτο. Μετά από κάθε επιτυχημένο επίπεδο η ασφαλής περιοχή μεγαλώνει. Ελέγξτε τον παρακάτω κώδικα:
χρόνο εισαγωγής. τυχαία εισαγωγή. από την εισαγωγή mcpi.minecraft Minecraft mc = Minecraft.create () # δημιουργήσετε την περιοχή Minecraft Object # clear. mc.setBlocks (-10, 1, -10, 25, 5, 25, 0) # δημιουργήσουν κέλυφος της arena. mc.setBlocks (0, 0, 0, 25, 10, 25, 17) # κούφια αρένα. mc.setBlocks (1, 1, 1, 24, 10, 24, 0) # μετακινήστε τον παίκτη σε αρένα. mc.player.setPos (14, 25, 20) # teleport player # τους κάνουν να μείνουν. # teleport player για να ξεκινήσει κάθε 1/10th δευτερόλεπτο. # κάντε αυτό για 5 δευτερόλεπτα και ξεκινήστε το παιχνίδι. time.sleep (2) total_wait = 0. mc.postToChat ("Αναμονή για έναρξη") ενώ το total_wait <5: mc.player.setPos (14, 1, 20) # teleport player time.sleep (0.1) total_wait + = 0.1 mc.postToChat ("BEGIN!") # 10 επίπεδα. για επίπεδο στο εύρος (10): x, y, z = mc.player.getPos () level_time = 10 - επίπεδο # μείωση χρόνου κατά 1 δευτερόλεπτο για κάθε επίπεδο mc.postToChat (0, 0, 25, 0, 25, 17) # κάνει ασφαλή περιοχή 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 + επίπεδο, 0, safe_area_end + επίπεδο, 57) elapsed_time = 0 elapsed_time <10: x, y, z = mc.player.getPos () time.sleep (0.25) elapsed_time + = 0.25 # Over "); else: # αφαιρέστε το πάτωμα mc.setBlocks (-10, 0, -10, 25, 0, 25, 8) # τοποθετήστε ασφαλή περιοχή πίσω mc.setBlocks (safe_area_start, 0, safe_area_end, safe_area_start + επίπεδο, 0, safe_area_end + επίπεδο, 57) time.sleep (2.5) συνεχίστε το διάλειμμα.
Αποθηκεύστε αυτό ως "mini_game_2.py"Και να δώσει μια διαδρομή.
Το Pi 2 έχει κάποια προβλήματα επιδόσεων κατά τη λειτουργία του Minecraft. Το γράφημα χρήσης της κεντρικής μονάδας επεξεργασίας (CPU) (στην πάνω δεξιά γωνία) δεν δείχνει ποτέ κανένα βαρύ φορτίο, οπότε αυτό πρέπει να είναι κάτω από κακό σχεδιασμό και βελτιστοποιήσεις από τους προγραμματιστές. Αυτά τα ζητήματα δεν έχουν σχέση με τον κώδικα που εκτελείται (καθώς συνεχίζονται όταν η Python δεν εκτελείται), ωστόσο, αυτά είναι επιδεινωμένα από αυτό το μίνι παιχνίδι. Εάν η Pi σας αγωνίζεται πραγματικά μπορεί να θέλετε να μειώσετε το μέγεθος της αρένας ή overclock your Pi Χωρίς αρκετό χυμό; Σπρώξτε το σμέουρο Pi σας με overclockingΕάν υπάρχει κάποιο υλικό που κυκλοφόρησε το 2012 με το οποίο πιθανότατα θα ερωτευτείτε, είναι το γλυκό-σαν-ζάχαρη Raspberry Pi, ένας υπολογιστής μίνι σχεδιασμένος και κατασκευασμένος στο Ηνωμένο Βασίλειο που έχει αποσταλεί σε όλο τον κόσμο ... Διαβάστε περισσότερα .
Ανιχνευτής διαμαντιών

Ας κάνουμε ένα άλλο κύκλωμα. Αυτό θα χρησιμοποιήσει μια δίοδο φωτοεκπομπής (LED) για να ανάψει όταν υπάρχουν διαμάντια κάτω από (μέσα σε 15 μπλοκ). Εδώ είναι αυτό που χρειάζεστε:
- 1 x Breadboard
- 1 x LED
- 1 x 220 ohm αντίσταση
- Θηλυκά> αρσενικά καλώδια άλματος
- Αρσενικά> Αρσενικά καλώδια άλματος
Εδώ είναι το κύκλωμα:

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

Αποθηκεύστε αυτόν τον κωδικό ως "diamonds.py“:
εισαγωγή RPi. GPIO ως GPIO. χρόνο εισαγωγής. από mcpi.minecraft εισαγωγής Minecraft mc = Minecraft.create () # δημιουργήσετε το αντικείμενο Minecraft led_pin = 14 # αποθηκεύσετε τον αριθμό pin GPIO GPIO.setmode (GPIO.BCM) # πείτε στο Pi ποιες κεφαλίδες να χρησιμοποιήσετε. GPIO.setup (14, GPIO.OUT) # πείτε στον Pi ότι ο ακροδέκτης είναι μια έξοδος ενώ είναι αληθής: # επαναλάβετε απεριόριστα x, y, z = mc.player.getPos () για i στο εύρος (15): # μπλοκ μέχρι (x, y - i, z) == 56: GPIO.output (led_pin, True) # ενεργοποίηση LED on time.sleep (0.25) # περιμένετε GPIO.output (led_pin, ψευδής) (0.25) # Περίμενε.
Όταν υπάρχει μπλοκ μπλοκ διαμαντιών κάτω από τη συσκευή αναπαραγωγής (μέσα σε 15 μπλοκ), το φως θα αναβοσβήνει.
Έχετε κάνει κάτι δροσερό με το Minecraft Pi; Επιτρέψτε μου να γνωρίζω στα σχόλια τι κάνατε ή πόσο μακριά φτάσατε στα παιχνίδια.
Ο Τζο είναι πτυχιούχος της Πληροφορικής από το Πανεπιστήμιο του Λίνκολν, Ηνωμένο Βασίλειο. Είναι επαγγελματίας προγραμματιστής λογισμικού, και όταν δεν πετάει αεροσκάφη ή γράφει μουσική, συχνά μπορεί να βρει λήψη φωτογραφιών ή παραγωγή βίντεο.