Η ανταπόκριση στις πληροφορίες είναι ζωτικής σημασίας για κάθε παιχνίδι και είναι καλό να υποστηρίζεται το πληκτρολόγιο για χρήστες που το προτιμούν. Μάθετε πώς με τη βιβλιοθήκη arcade της Python.
Η εισαγωγή πληκτρολογίου είναι ένα ουσιαστικό μέρος της ανάπτυξης παιχνιδιών και είναι σημαντικό να το χειριστείτε αποτελεσματικά για να παρέχετε μια εξαιρετική εμπειρία χρήστη. Η βιβλιοθήκη Arcade παρέχει έναν απλό και αποτελεσματικό τρόπο χειρισμού της εισαγωγής πληκτρολογίου στα παιχνίδια Python.
Δημιουργία ενός απλού παιχνιδιού με έναν παίκτη
Μπορείτε να βρείτε τον πλήρη κωδικό στο αυτό το αποθετήριο GitHub.
Πριν βουτήξετε στον χειρισμό των εισόδων του πληκτρολογίου, βεβαιωθείτε ότι έχετε pip εγκατεστημένο στη συσκευή σας. Χρησιμοποιήστε αυτήν την εντολή για να εγκαταστήσετε τη βιβλιοθήκη arcade:
pip εγκατάσταση arcade
Μετά από αυτό, δημιουργήστε τον σκελετό ενός απλού παιχνιδιού:
εισαγωγή στοά
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480τάξηMyGame(στοά. Παράθυρο):
def__μέσα σε αυτό__(εαυτός, πλάτος, ύψος):
super().__init__(πλάτος, ύψος, "Το παιχνίδι μου")
arcade.set_background_color (arcade.color. ΑΣΠΡΟ)defon_draw(εαυτός):
arcade.start_render()defεκσυγχρονίζω(self, delta_time):
πέρασμα
MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
Αυτό δημιουργεί ένα παράθυρο με λευκό φόντο. Στη συνέχεια, προσθέστε έναν παίκτη στο παιχνίδι σας:
τάξηΠαίχτης:
def__μέσα σε αυτό__(εαυτός, x, y):
αυτο.χ = χ
αυτο.υ = υ
αυτο.ταχύτητα = 5
αυτος.ακτίνα = 20defσχεδιάζω(εαυτός):
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. ΜΠΛΕ)defκινήσου αριστερά(εαυτός):
εαυτός.χ -= εαυτός.ταχύτηταdefκίνηση_δεξιά(εαυτός):
αυτο.χ += αυτο.ταχύτηταdefκίνηση_επάνω(εαυτός):
αυτο.υ += αυτο.ταχύτητα
defμετακινηθείτε προς τα κάτω(εαυτός):
αυτο.υ -= εαυτός.ταχύτητα
Αυτό δημιουργεί έναν απλό παίκτη με μπλε κύκλο. Μπορείτε να προσθέσετε αυτόν τον παίκτη στο παιχνίδι σας τροποποιώντας το MyGame τάξη:
εισαγωγή στοά
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480τάξηMyGame(στοά. Παράθυρο):
def__μέσα σε αυτό__(εαυτός, πλάτος, ύψος):
super().__init__(πλάτος, ύψος, "Το παιχνίδι μου")
arcade.set_background_color (arcade.color. ΑΣΠΡΟ)
self.player = Παίκτης (SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2)defon_draw(εαυτός):
arcade.start_render()
self.player.draw()defεκσυγχρονίζω(self, delta_time):
πέρασμαdefκύριος():
MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
αν __όνομα__ == "__κύριος__":
κύριος()
Τώρα έχετε έναν παίκτη στο παιχνίδι σας που μπορείτε να σχεδιάσετε στην οθόνη.
Ανταπόκριση σε πατήματα και απελευθέρωση πλήκτρων
Για να ανταποκριθείτε στη συμβολή του χρήστη στο παιχνίδι σας, πρέπει να χειριστείτε πατήματα πλήκτρων και απελευθερώσεις. Η βιβλιοθήκη Arcade παρέχει δύο μεθόδους για το χειρισμό αυτών των συμβάντων: on_key_press και on_key_release.
Για να χρησιμοποιήσετε αυτές τις μεθόδους, πρέπει να τις ορίσετε στο δικό σας στοά. Παράθυρο υποδιαίρεση τάξεως. Όταν ο παίκτης πατήσει ή απελευθερώσει ένα πλήκτρο, το arcade θα εκτελέσει την αντίστοιχη μέθοδο, περνώντας του δύο ορίσματα: κλειδί και τροποποιητές. κλειδί είναι ένας ακέραιος αριθμός που αντιπροσωπεύει τον κωδικό κλειδιού του πατημένου ή απελευθερωμένου κλειδιού. τροποποιητές είναι ένα bitfield που αντιπροσωπεύει τυχόν πλήκτρα τροποποίησης που πάτησε επίσης η συσκευή αναπαραγωγής, όπως Shift ή Control.
Ακολουθεί ένα παράδειγμα για το πώς να απαντήσετε σε ένα πάτημα πλήκτρων στο παιχνίδι σας:
τάξηMyGame(στοά. Παράθυρο):
defon_key_press(αυτο, κλειδί, τροποποιητές):
αν κλειδί == arcade.key. ΑΡΙΣΤΕΡΑ:
# Μετακινήστε τον παίκτη αριστερά
ελιφ κλειδί == arcade.key. ΣΩΣΤΑ:
# Μετακινήστε τον παίκτη δεξιά
ελιφ κλειδί == arcade.key. ΠΑΝΩ:
# Μετακίνηση του παίκτη προς τα πάνω
ελιφ κλειδί == arcade.key. ΚΑΤΩ:
# Μετακινήστε τον παίκτη προς τα κάτω
Για να απαντήσετε σε βασικές εκδόσεις, μπορείτε να ορίσετε το on_key_release μέθοδος με τον ίδιο τρόπο:
τάξηMyGame(στοά. Παράθυρο):
defon_key_release(αυτο, κλειδί, τροποποιητές):
αν κλειδί == arcade.key. ΑΡΙΣΤΕΡΑ:
# Σταματήστε να μετακινείτε τον παίκτη αριστερά
ελιφ κλειδί == arcade.key. ΣΩΣΤΑ:
# Σταματήστε να μετακινείτε τον παίκτη δεξιά
ελιφ κλειδί == arcade.key. ΠΑΝΩ:
# Σταματήστε να μετακινείτε τον παίκτη προς τα πάνω
ελιφ κλειδί == arcade.key. ΚΑΤΩ:
# Σταματήστε να μετακινείτε τον παίκτη προς τα κάτω
Είναι σημαντικό να σημειωθεί ότι η σύλληψη εισαγωγή χρήστη στο pygame απαιτεί χειροκίνητο έλεγχο συμβάντων εντός του βρόχου του παιχνιδιού σας. Από την άλλη πλευρά, η βιβλιοθήκη Arcade επικαλείται αυτόματα σχετικές μεθόδους όταν ο παίκτης πατάει ή αφήνει ένα πλήκτρο. Αυτό σημαίνει ότι δεν χρειάζεται να ελέγχετε χειροκίνητα για βασικά συμβάντα στο βρόχο του παιχνιδιού σας, εξοικονομώντας σας από την ταλαιπωρία του επιπλέον κώδικα.
Προσαρμογή χειρισμού εισόδου πληκτρολογίου για να ταιριάζει στις ανάγκες του παιχνιδιού σας
Η βιβλιοθήκη Arcade παρέχει πολλούς τρόπους προσαρμογής της εισαγωγής πληκτρολογίου. Μπορεί να θέλετε να αλλάξετε τα δεσίματα κλειδιών για το παιχνίδι σας ή να επιτρέψετε στον παίκτη να προσαρμόσει τα δικά του δεσίματα κλειδιών.
Μπορείτε να το κάνετε αυτό ορίζοντας ένα λεξικό key_map που αντιστοιχίζει κάθε πλήκτρο στην αντίστοιχη μέθοδο του αντικειμένου αναπαραγωγής. Για να επιτρέψετε στη συσκευή αναπαραγωγής να προσαρμόσει τις συνδέσεις κλειδιών της, θα μπορούσατε να προσθέσετε ένα μενού ρυθμίσεων που τροποποιεί τις key_map λεξικό με βάση τις προτιμήσεις του παίκτη.
Εδώ είναι ένα παράδειγμα:
τάξηMyGame(στοά. Παράθυρο):
def__μέσα σε αυτό__(εαυτός, πλάτος, ύψος, τίτλος):
super().__init__(πλάτος, ύψος, τίτλος)
self.player = Παίκτης(100, 100)self.key_map = {
arcade.κλειδί. ΑΡΙΣΤΕΡΑ: self.player.move_left,
arcade.κλειδί. ΔΕΞΙΑ: self.player.move_right,
arcade.κλειδί. ΠΑΝΩ: self.player.move_up,
arcade.κλειδί. ΚΑΤΩ: self.player.move_down
}defon_key_press(αυτο, κλειδί, τροποποιητές):
αν κλειδί σε self.key_map:
self.key_map[key]()
defon_key_release(αυτο, κλειδί, τροποποιητές):
αν κλειδί σε self.key_map:
self.key_map[key + 1]()
Απαντήστε στις εισαγωγές χρήστη σε πραγματικό χρόνο
Η ανταπόκριση στη συμβολή του χρήστη σε πραγματικό χρόνο είναι μια ουσιαστική πτυχή της δημιουργίας ενός συναρπαστικού παιχνιδιού. Αφιερώνοντας χρόνο για να χειριστείτε σωστά την εισαγωγή του πληκτρολογίου στο παιχνίδι σας, μπορείτε να δημιουργήσετε ένα πιο ελκυστικό και καθηλωτική εμπειρία για τους παίκτες σας και, τελικά, κάντε το παιχνίδι σας να ξεχωρίζει σε έναν πολυσύχναστο χώρο αγορά.