Το Excitebike είναι ένα παιχνίδι side-scroller όπου πλοηγείστε με μια μοτοσικλέτα πάνω από άλματα, κάνετε ελιγμούς γύρω από εμπόδια και επιταχύνετε προς τη γραμμή τερματισμού.

Η Nintendo κυκλοφόρησε για πρώτη φορά αυτό το παιχνίδι αγώνων BMX για το NES. Από εκεί, η εταιρεία εκσυγχρόνισε το Excitebike και το κυκλοφόρησε στο N64 και, τελικά, στο Wii.

Δεν υπάρχουν πολλές κονσόλες NES πια, γεγονός που κάνει το παιχνίδι Excitebike και πάλι δύσκολο. Χάρη σε ορισμένους οπαδούς του ρετρό στο Wireframe Magazine, ένα απόσπασμα κώδικα Python μπορεί να αναδημιουργήσει αυτό το κλασικό NES για ώρες διασκέδασης στο Raspberry Pi ή στον οικιακό σας υπολογιστή.

Λήψη κωδικού και ρύθμιση

Αν και μπορείτε να χρησιμοποιήσετε το nano ή το vim για να επεξεργαστείτε τον κώδικα python σας, θα θέλετε να επωφεληθείτε από ένα πλήρες πρόγραμμα επεξεργασίας κειμένου ή IDE.

Θα χρειαστεί να εγκαταστήσετε το Pygame Zero για να υποστηρίξετε τις δυνατότητες που έχουν δημιουργηθεί σε αυτό το αφιέρωμα στο Excitebike. Το Pygame Zero περιέχει λειτουργικές μονάδες Python για να εστιάζουν οι δημιουργοί παιχνιδιών χωρίς να χρειάζεται να επαναλαμβάνουν απλές βάσεις.

instagram viewer

Εάν δεν έχετε εγκατεστημένο το python3 στον υπολογιστή σας, μπορείτε κατεβάστε την πιο πρόσφατη έκδοση απευθείας από την Python. Θα θέλετε επίσης βεβαιωθείτε ότι έχετε εγκαταστήσει το PIP πολύ.

Με την τελευταία έκδοση της Python και του PIP εγκατεστημένη, ανοίξτε το τερματικό PowerShell ή Linux και πληκτρολογήστε:

pip3 εγκαθιστώ pgzero

Τέλος, θα χρειαστεί να παραλάβετε ένα αντίγραφο του κώδικα Python από το αποθετήριο GitHub του περιοδικού Wireframe. Πληκτρολογήστε την ακόλουθη εντολή σε ένα τερματικό:

git κλώνος https://github.com/Wireframe-Magazine/Wireframe-66.git

Εναλλακτικά, μπορείτε κατεβάστε τον ταχυδρομικό κώδικα απευθείας από τη σελίδα Wireframe GitHub.

Σπάζοντας τον Κώδικα

Για να καταλάβετε τι κάνει ο κώδικας, εκτελέστε πρώτα το παιχνίδι Excitebike. Κάντε το μεταβαίνοντας στον πηγαίο κώδικα και στη συνέχεια εκτελώντας τον χρησιμοποιώντας το Pygame Zero:

CD Wireframe-66/πηγή-κωδικός-excitebike/
pgzrunexitebike.py

Στη συνέχεια, μπορείτε να ανοίξετε το αρχείο exitebike.py με ένα πρόγραμμα επεξεργασίας κειμένου για να προβάλετε τον κώδικα.

ο σχεδιάζω η λειτουργία σχεδιάζει το φόντο καθώς κινείται η εικόνα του ποδηλάτου. ΕΝΑ "blit" αναφέρεται σε ένα μπλοκ που σχεδιάζεται στην οθόνη. Η λέξη, "Ιστορικό," αναφέρεται στην εικόνα φόντου (η σύνδεση των εικόνων με το μπλοκ φόντου γίνεται χάρη στις εισαγόμενες μονάδες Pygame Zero).

defσχεδιάζω():
screen.blit("Ιστορικό", (0, 0))
drawTrack()
ποδήλατο.σχεδιάζω()
screen.draw.text("ΧΡΟΝΟΣ ΓΡΟΝΟΥ: "+str (int (time.time() - startTime)), (20, 555),color=(255,255,255), fontsize=50)
screen.draw.text("ΤΕΛΕΥΤΑΙΟΣ ΓΙΝΟΣ: "+str (lastLap), επάνω δεξιά = (780, 555), color=(255,255,255), fontsize=50)

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

Ο τελευταίος γύρος είναι παρόμοιος υπολογισμός. Αντί για την ώρα εκκίνησης, ο χρόνος υπολογίζεται από τη στιγμή που η μοτοσικλέτα περάσει από μια προκαθορισμένη θέση διαδρομής (αναφέρεται ως trackPos < -4800 στον κωδικό). Τα παρακάτω στοιχεία σε εισαγωγικά αντιπροσωπεύουν μια εικόνα.

Αυτός ο κώδικας σχεδιάζει μπλοκ εικόνας στην οθόνη σε συγκεκριμένα διαστήματα και συγκεκριμένες θέσεις στην οθόνη. Η παρεχόμενη εικόνα πλήθους έχει πλάτος μόνο 100 εικονοστοιχεία. Ωστόσο, ο παρακάτω κώδικας λέει στον υπολογιστή πότε να σχεδιάσει την εικόνα έτσι ώστε να φαίνεται σαν να υπάρχει ένα προσομοιωμένο πλήθος πίσω από τη μοτοσικλέτα καθώς κινείται.

Οι εικόνες βράχου εμφανίζονται στην οθόνη σε δύο μέρη. Η δεύτερη και η τρίτη γραμμή κώδικα, παρακάτω, συνεργάζονται για να προσομοιώσουν το τοπίο με τακτοποιημένο τρόπο.

Μόλις δημιουργήσετε ένα αντίγραφο ασφαλείας του κώδικα python, δοκιμάστε να αλλάξετε τους παρακάτω αριθμούς για να δείτε τι συμβαίνει με τους βράχους στην οθόνη!

screen.blit("πλήθος 1", ((t*100)+trackOffset-100, 0))
screen.blit("βράχος1", ((t*100)+trackOffset-100, 270))
screen.blit("βράχος1", ((t*100)+trackOffset-50, 270))

Θέλετε να αντικαταστήσετε τη μοτοσικλέτα σας με φορτηγό Monster, τετράτροχο ή άλλο όχημα; Ίσως θέλετε να αγωνιστείτε με έναν μονόκερο μέχρι τη γραμμή τερματισμού;

Το μόνο που χρειάζεται να κάνετε είναι να σχεδιάσετε μια εικόνα 50x50 px (με διάφανο φόντο). Στη συνέχεια, τοποθετήστε αυτό το αρχείο (picture.png) στο 'εικόνεςφάκελο " (εντός του πηγή-κωδικός-excitebike ντοσιέ). Θα θελήσετε να δημιουργήσετε δύο εικόνες (μία με ελαφρώς αυξημένο ύψος) για να προσθέσετε λίγο ρεαλισμό. Το μόνο που χρειάζεται να κάνετε είναι να αλλάξετε την αναφορά σε 'ποδήλατο 0' εδώ:

ποδήλατο = Ηθοποιός('ποδήλατο0', κέντρο=(150, 350), άγκυρα=('κέντρο', 'κάτω μέρος'))

Φροντίστε επίσης να εκτελέσετε μια ενέργεια εύρεσης και αντικατάστασης με το όνομα της εικόνας (χωρίς την επέκταση εικόνας).

checkBikeRamp() είναι η συνάρτηση που κάνει τη δουλειά για τον υπολογισμό του άξονα Υ, έτσι ώστε η μοτοσικλέτα (ή το φορτηγό σας) να ανέβει στη ράμπα (και να πάρει λίγο σοβαρό αέρα αν είστε τυχεροί). ο πληκτρολόγιο.δεξιά και πληκτρολόγιο.αριστερά οι παράμετροι ορίζονται στο εκσυγχρονίζω() λειτουργία.

Αυτά τα κομμάτια κώδικα λένε στον υπολογιστή να επιβραδύνει τη μοτοσικλέτα ή να επιταχύνει (ανάλογα με το πλήκτρο που πατάει ο χρήστης στο πληκτρολόγιο). Μετάφραση: Όσο πιο γρήγορα κινείται η μοτοσικλέτα σας, τόσο μεγαλύτερος είναι ο αριθμός του άξονα Υ (ή πολύ μεγάλο άλμα).

Εγκάρσια, το on_key_down (κλειδί) η λειτουργία θα στείλει τη μοτοσικλέτα σας σε μια μύτη.

αν κλειδί.όνομα == "ΚΑΤΩ":
ποδήλατο.κατεύθυνση = 1
ποδήλατο.λωρίδαY = όριο(bike.laneY + 50, 375, 525)
ποδήλατο.y += ποδήλατο.κατεύθυνση

ο muckLane Η παράμετρος θα επιβραδύνει τη μοτοσικλέτα σας χρησιμοποιώντας τον ακόλουθο υπολογισμό:

muckLane = ενθ((bike.laneY-375)/50)+1

Η γραμμή 66 του κώδικα καθορίζει το πότε θα εμφανιστεί η εικόνα «λάσπη» στην οθόνη. Τώρα που ο υπολογιστής γνωρίζει πότε η μοτοσικλέτα σας θα περάσει πάνω από τη λάσπη, θα μειώσει την ταχύτητα της μοτοσικλέτας σας στο μισό καθώς κινείστε πάνω από τη λάσπη στην πίστα. Αλλάξτε την τιμή muckLane από /50 σε /25 ή /75 για να δείτε τι θα συμβεί στη συνέχεια.

Racers (α, προγραμματιστές Python)! Ξεκινήστε τις μηχανές σας!

Ακόμα κι αν δεν αισθάνεστε άνετα να προγραμματίσετε αυτό το αφιέρωμα στο Excitebike από την αρχή, αυτός ο κωδικός εξακολουθεί να είναι ένα εξαιρετικό primer. Τροποποιώντας το και συνειδητοποιώντας τον οπτικό αντίκτυπο των αλλαγών, μπορείτε να μάθετε πολλά. Θα προσπαθήσετε να προσθέσετε περισσότερα χαρακτηριστικά ή δρομείς AI στο παιχνίδι σας; Καν 'το!

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

Όταν είστε ευχαριστημένοι με τις βελτιώσεις Excitebike, γιατί να μην ασχοληθείτε με τη δημιουργία ενός παιχνιδιού περιπέτειας κειμένου; Υπάρχουν πολλά διαφορετικά κομμάτια που θα σας εξασφαλίσουν ότι μαθαίνετε κάτι συναρπαστικό για ώρες, μέρες ή και εβδομάδες!