Δημιουργήστε ένα αφιέρωμα στο Excitebike χρησιμοποιώντας Python

Δημιουργήστε ένα αφιέρωμα στο Excitebike χρησιμοποιώντας Python

Το 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 για να εστιάζουν οι δημιουργοί παιχνιδιών χωρίς να χρειάζεται να επαναλαμβάνουν απλές βάσεις.



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

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





pip3 install pgzero 

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

git clone https://github.com/Wireframe-Magazine/Wireframe-66.git

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





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

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

cd Wireframe-66/source-code-excitebike/ 
pgzrun exitebike.py

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

  απόσπασμα κώδικα excitebike python

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

def draw(): 
screen.blit("background", (0, 0))
drawTrack()
bike.draw()
screen.draw.text("LAP TIME: "+str(int(time.time() - startTime)), (20, 555),color=(255,255,255) , fontsize=50)
screen.draw.text("LAST LAP: "+str(lastLap), topright = (780, 555),color=(255,255,255) , fontsize=50)

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

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

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

πώς να μεταφέρετε αποθηκευμένα δεδομένα από το ps3 στο ps3

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

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

screen.blit("crowd1", ((t*100)+trackOffset-100, 0)) 
screen.blit("rock1", ((t*100)+trackOffset-100, 270))
screen.blit("rock1", ((t*100)+trackOffset-50, 270))

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

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

bike = Actor('bike0', center=(150, 350), anchor=('center', 'bottom'))
  excitebike παιχνίδι python με φορτηγό

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

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

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

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

if key.name == "DOWN": 
bike.direction = 1
bike.laneY = limit(bike.laneY + 50, 375, 525)
bike.y += bike.direction

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

muckLane = int((bike.laneY-375)/50)+1

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

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

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

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

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