Μάθετε πώς να μετράτε τον χρόνο και να τον χρησιμοποιείτε για να ελέγχετε διάφορες πτυχές του παιχνιδιού σας.

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

Δημιουργήστε ένα απλό παιχνίδι

Ξεκινήστε δημιουργώντας ένα απλό παιχνίδι για να κατανοήσετε τα βασικά. Φτιάξτε ένα παιχνίδι όπου ο παίκτης θα μπορεί να κινείται αριστερά και δεξιά και θα υπάρχει μια ενιαία πλατφόρμα. Δημιουργήστε ένα νέο αρχείο με όνομα simple-game.py και εισάγετε τη μονάδα arcade, η οποία παρέχει τις απαραίτητες λειτουργίες για τη δημιουργία του παιχνιδιού.

Ο κώδικας που χρησιμοποιείται σε αυτό το άρθρο είναι διαθέσιμος σε αυτό Αποθετήριο GitHub και είναι δωρεάν για χρήση βάσει της άδειας MIT.

Στη συνέχεια, ορίστε το

Παράθυρο παιχνιδιού κλάση, η οποία είναι υποκατηγορία του στοά. Παράθυρο. Μέσα στην κλάση GameWindow, ορίστε το __μέσα σε αυτό__ μέθοδος, η οποία αρχικοποιεί το παράθυρο με το καθορισμένο πλάτος, ύψος και τίτλο.

ο on_key_press μέθοδος ανιχνεύει πατήματα αριστερού ή δεξιού βέλους. Το πάτημα αριστερά μειώνεται player_x κατά 10 μονάδες ενώ πατώντας δεξιά αυξάνεται κατά 10 μονάδες. Αυτό επιτρέπει στον παίκτη να κινηθεί οριζόντια μέσα στο παράθυρο του παιχνιδιού.

Για να τρέξετε το παιχνίδι, ορίστε την κύρια λειτουργία, δημιουργήστε μια παρουσία του GameWindow, καλέστε τη μέθοδο εγκατάστασης για να ρυθμίσετε το παράθυρο του παιχνιδιού και, τέλος, ξεκινήστε το βρόχο παιχνιδιού χρησιμοποιώντας arcade.run().

Σχεδιασμός της Δομής Τάξης Χρονοδιακόπτη

Για να εφαρμόσετε χρονόμετρα στο παιχνίδι σας, μπορείτε να δημιουργήσετε μια κλάση Timer με τα απαραίτητα χαρακτηριστικά και μεθόδους. Αυτή η κλάση θα παρέχει λειτουργίες για την εκκίνηση του χρονοδιακόπτη, τη διακοπή του, την ανάκτηση του χρόνου που έχει παρέλθει και τον έλεγχο εάν το χρονόμετρο έχει λήξει. Ακολουθεί η βασική δομή για την κλάση Timer:

εισαγωγή χρόνος

τάξηΜετρών την ώραν:
def__μέσα σε αυτό__(εαυτός, διάρκεια):
αυτο.διάρκεια = διάρκεια
self.start_time = 0
αυτο.είναι_τρέχει = Ψευδής

defαρχή(εαυτός):
self.start_time = time.time()
αυτο.είναι_τρέχει = Αληθής

defνα σταματήσει(εαυτός):
αυτο.είναι_τρέχει = Ψευδής

defget_lapsed_time(εαυτός):
αν self.is_running:
ΕΠΙΣΤΡΟΦΗ time.time() - self.start_time
ΕΠΙΣΤΡΟΦΗ0

defis_expired(εαυτός):
ΕΠΙΣΤΡΟΦΗ self.get_elapsed_time() >= self.duration

Η τάξη Timer παίρνει α διάρκεια παράμετρος σε δευτερόλεπτα κατά την προετοιμασία. Η κλάση περιέχει χαρακτηριστικά όπως ώρα έναρξης για αποθήκευση της ώρας έναρξης του χρονοδιακόπτη και τρέχει για να παρακολουθείτε την κατάσταση του χρονοδιακόπτη.

ο αρχή() μέθοδος ορίζει την ώρα έναρξης στην τρέχουσα ώρα χρησιμοποιώντας time.time() και θέτει το is_running to Αληθής. ο να σταματήσει() Η μέθοδος απλώς ορίζει το is_running σε Ψευδής. ο get_elapsed_time() Η μέθοδος υπολογίζει τον χρόνο που έχει παρέλθει αφαιρώντας την ώρα έναρξης από την τρέχουσα ώρα.

Εάν το χρονόμετρο λειτουργεί, επιστρέφει τον χρόνο που έχει παρέλθει. Διαφορετικά, επιστρέφει 0. ο is_expired() Η μέθοδος ελέγχει εάν ο χρόνος που έχει παρέλθει είναι μεγαλύτερος ή ίσος με τη διάρκεια, υποδεικνύοντας ότι ο χρονοδιακόπτης έχει λήξει.

Εφαρμογή μετρητών αντίστροφης μέτρησης

Για να δείξετε μια αντίστροφη μέτρηση στο παιχνίδι σας, μπορείτε να ξεκινήσετε το χρονόμετρο όταν ο παίκτης πατήσει ένα συγκεκριμένο πλήκτρο, όπως το πλήκτρο διαστήματος. Εκτυπώστε την αντίστροφη μέτρηση για την κονσόλα χρησιμοποιώντας την εντολή εκτύπωσης της Python. Δημιουργήστε ένα νέο αρχείο με όνομα timer.py και προσθέστε τον κώδικα με αυτές τις ενημερώσεις:

εισαγωγή χρόνος

τάξηΠαράθυρο παιχνιδιού(στοά. Παράθυρο):
def__μέσα σε αυτό__(εαυτός):
super().__init__(WIDTH, HEIGHT, "Απλό παιχνίδι")
self.player_x = WIDTH // 2
self.player_y = HEIGHT // 2
self.timer = Timer(10)

defon_key_press(αυτο, κλειδί, τροποποιητές):
αν κλειδί == arcade.key. ΧΩΡΟΣ:
self.timer.start()

defon_draw(εαυτός):
# Υπάρχων κωδικός
αν self.timer.is_running:
elapsed_time = self.timer.get_elapsed_time()
r_time = self.timer.duration - lapsed_time
υπολειπόμενος_χρόνος = μέγιστος (r_χρόνος, 0)
Τυπώνω(στ" Αντίστροφη μέτρηση: {χρόνος που απομένει:.1φά} δευτερόλεπτα")

Βεβαιωθείτε ότι μπορείτε να δείτε το παράθυρο του τερματικού και το παράθυρο του παιχνιδιού ταυτόχρονα. Στη συνέχεια, πατήστε το πλήκτρο διαστήματος και θα δείτε το χρονόμετρο να μετράει αντίστροφα:

Χειρισμός συμβάντων χρονοδιακόπτη και ενεργοποίηση ενεργειών

Μπορείτε επίσης να ενεργοποιήσετε μια λειτουργία που σχεδιάζει ένα ορθογώνιο όταν λήξει το χρονόμετρο αντίστροφης μέτρησης. Δημιουργήστε ένα νέο αρχείο με όνομα handle-event.py και προσθέστε τον κωδικό με τις παρακάτω ενημερώσεις:

defon_draw(εαυτός):
# Υπάρχων κωδικός
αν self.timer.is_expired():
self.draw_rectangle()

defσχεδίαση_ορθογώνου(εαυτός):
arcade.draw_rectangle_filled (WIDTH // 2, ΥΨΟΣ // 2, 100, 100, το κόκκινο)

Παρακάτω είναι η έξοδος:

Παύση, επαναφορά και συνέχιση του χρονοδιακόπτη

Για να προσθέσετε λειτουργικότητα για παύση, επαναφορά και συνέχιση του χρονοδιακόπτη, μπορείτε να επεκτείνετε το Μετρών την ώραν τάξη με κατάλληλες μεθόδους. Εδώ είναι ένα παράδειγμα:

τάξηΜετρών την ώραν:
# Υπάρχων κωδικός

defπαύση(εαυτός):
self.duration -= self.get_elapsed_time()
αυτο.είναι_τρέχει = Ψευδής

defεπαναφορά(εαυτός):
self.start_time = 0
αυτο.είναι_τρέχει = Ψευδής

defΒΙΟΓΡΑΦΙΚΟ(εαυτός):
self.start_time = time.time()
αυτο.είναι_τρέχει = Αληθής

Προσθήκη οπτικής ανατροφοδότησης στο χρονόμετρο

Για να παρέχετε οπτική ανατροφοδότηση για το χρονόμετρο, μπορείτε να ενσωματώσετε κείμενο ή γραφικά στοιχεία στην οθόνη του παιχνιδιού. Δημιουργήστε ένα νέο αρχείο με όνομα οπτικό.py και προσθέστε τον κωδικό με τις παρακάτω ενημερώσεις:

defon_draw(εαυτός):
# Υπάρχων κωδικός
αν self.timer.is_running:
κείμενο = στ" Αντίστροφη μέτρηση: {χρόνος που απομένει:.1φά} δευτερόλεπτα"
arcade.draw_text (κείμενο, 10, 10, μαύρο, 18)

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

Συμπεριλαμβανομένων πρόσθετων χαρακτηριστικών

Για να βελτιώσετε περαιτέρω τα συμβάντα βάσει χρόνου, μπορείτε να εξετάσετε το ενδεχόμενο να εφαρμόσετε τις ακόλουθες πρόσθετες λειτουργίες στα παιχνίδια σας.

Power-Ups ή μπόνους με βάση το χρόνο

Εισαγάγετε power-ups ή μπόνους που εμφανίζονται περιοδικά σε όλο το παιχνίδι. Αυτά τα power-ups θα μπορούσαν να παρέχουν προσωρινές ικανότητες, επιπλέον πόντους, αυξημένη ταχύτητα ή βελτιωμένα όπλα.

Καθιστώντας τα χρονικά περιορισμένα, οι παίκτες πρέπει να τα συλλέξουν στρατηγικά μέσα σε ένα συγκεκριμένο χρονικό πλαίσιο για να αποκτήσουν πλεονέκτημα. Αυτό προσθέτει ενθουσιασμό και ανταμείβει τη γρήγορη σκέψη.

Προκλήσεις περιορισμένου χρόνου

Δημιουργήστε προκλήσεις περιορισμένου χρόνου όπου οι παίκτες πρέπει να ολοκληρώσουν μια εργασία μέσα σε ένα συγκεκριμένο χρονικό πλαίσιο. Για παράδειγμα, ένα τμήμα παζλ ή πλατφόρμας που απαιτεί επίλυση εντός δεδομένου χρόνου.

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

Χρονομετρημένα εμπόδια ή εχθροί

Εφαρμόστε χρονομετρημένα εμπόδια ή εχθρούς που αποτελούν απειλή για τον παίκτη. Για παράδειγμα, κινούμενες πλατφόρμες που εμφανίζονται και εξαφανίζονται σε τακτά χρονικά διαστήματα ή εχθροί που γίνονται ανίκητοι για περιορισμένο χρονικό διάστημα.

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

Βέλτιστες πρακτικές για εκδηλώσεις με βάση το χρόνο

Όταν εφαρμόζετε συμβάντα βάσει χρόνου στα παιχνίδια σας, είναι σημαντικό να ακολουθείτε αυτές τις βέλτιστες πρακτικές.

Δοκιμή και ισορροπία

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

Σχόλια χρήστη

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

Συνεπής Χρονική Μέτρηση

Χρησιμοποιήστε ένα σταθερό σύστημα μέτρησης χρόνου σε όλο το παιχνίδι σας. Για παράδειγμα, χρησιμοποιήστε δευτερόλεπτα ως μονάδα για όλους τους χρονοδιακόπτες και τους υπολογισμούς που σχετίζονται με το χρόνο. Αυτό εξασφαλίζει συνέπεια και ευκολία κατανόησης τόσο για τους παίκτες όσο και για τους προγραμματιστές.

Θήκες άκρων λαβής

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

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

Κάνετε τα παιχνίδια πιο διασκεδαστικά με συμβάντα που βασίζονται στο χρόνο

Ενσωματώνοντας γεγονότα βάσει χρόνου στα παιχνίδια σας, μπορείτε να δημιουργήσετε μια δυναμική και συναρπαστική εμπειρία για τους παίκτες. Οι χρονικά περιορισμένες προκλήσεις προσθέτουν ενθουσιασμό και επείγουσα ανάγκη, ενώ τα χρονομετρημένα power-ups ή τα εμπόδια μπορούν να δημιουργήσουν ευκαιρίες στρατηγικής λήψης αποφάσεων.

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