Τρόπος τροποποίησης της τιμής χρονοδιακόπτη JavaScript για ένα παιχνίδι πληκτρολόγησης χρησιμοποιώντας κουμπιά HTML

JavaScript

Δυναμική ρύθμιση χρονοδιακόπτη για πληκτρολόγηση παιχνιδιού με χρήση κουμπιών

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

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

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

Μέχρι το τέλος αυτού του οδηγού, θα έχετε μια πλήρως λειτουργική δυνατότητα προσαρμογής χρονοδιακόπτη χρησιμοποιώντας HTML και JavaScript. Θα καλύψουμε επίσης τον τρόπο ενημέρωσης της εμφανιζόμενης τιμής του χρονοδιακόπτη στον τίτλο της σελίδας, ώστε να αντικατοπτρίζει την επιλεγμένη διάρκεια του χρονοδιακόπτη.

Εντολή Παράδειγμα χρήσης
document.querySelector() Χρησιμοποιείται για την επιλογή του στοιχείου HTML
addEventListener() Συνδέει ένα συγκεκριμένο συμβάν (π.χ. κλικ) σε ένα στοιχείο κουμπιού. Σε αυτό το πλαίσιο, χρησιμοποιείται για την ενεργοποίηση της συνάρτησης changeTimer() όταν ένας χρήστης κάνει κλικ σε ένα κουμπί, επιτρέποντας τη δυναμική αλληλεπίδραση με τις ρυθμίσεις του χρονοδιακόπτη.
innerText Αυτή η ιδιότητα επιτρέπει την τροποποίηση του ορατού κειμένου σε ένα στοιχείο HTML. Σε αυτήν τη λύση, χρησιμοποιείται για την ενημέρωση της τιμής του χρονοδιακόπτη στον τίτλο της σελίδας όταν κάνετε κλικ σε ένα κουμπί.
onClick Ένα ενσωματωμένο χαρακτηριστικό χειριστή συμβάντων που χρησιμοποιείται στην εναλλακτική προσέγγιση για την προσάρτηση της συνάρτησης changeTimer() απευθείας στο συμβάν κλικ του κουμπιού. Αυτό επιτρέπει έναν απλούστερο, λιγότερο αρθρωτό τρόπο δυναμικής ενημέρωσης του χρονοδιακόπτη.
test() Αυτή η μέθοδος χρησιμοποιείται στη δοκιμή μονάδας με το Jest. Ορίζει μια δοκιμαστική περίπτωση όπου η συνάρτηση που ελέγχεται (π.χ. changeTimer()) αξιολογείται για να διασφαλιστεί ότι το χρονόμετρο ενημερώνεται σωστά. Διασφαλίζει ότι ο κώδικας συμπεριφέρεται όπως αναμένεται σε διαφορετικά σενάρια.
expect() Μια εντολή Jest που ελέγχει εάν η πραγματική τιμή (όπως το ενημερωμένο χρονόμετρο) ταιριάζει με την αναμενόμενη τιμή. Χρησιμοποιείται σε δοκιμές μονάδας για να επαληθευτεί ότι το gameTime και το document.title ενημερώνονται σωστά μετά από ένα κλικ στο κουμπί.
toBe() Μια άλλη εντολή Jest που ελέγχει την αυστηρή ισότητα. Εξασφαλίζει ότι μετά την κλήση του changeTimer(), ο χρόνος παιχνιδιού είναι ακριβώς ο αναμενόμενος (π.χ. 30.000 ms για 30 δευτερόλεπτα).
getElementById() Χρησιμοποιείται για την επιλογή συγκεκριμένων κουμπιών με τα αναγνωριστικά τους (π.χ. «τριάντα», «εξήντα»). Αυτή η μέθοδος είναι σημαντική για την προσάρτηση των ακροατών συμβάντων στα κουμπιά και την ενεργοποίηση της δυναμικής αλλαγής του χρονοδιακόπτη ως απόκριση στην αλληλεπίδραση του χρήστη.

Δημιουργία δυναμικών χρονομετρητών με χρήση κουμπιών JavaScript και HTML

Τα σενάρια που παρέχονται παραπάνω έχουν σχεδιαστεί για να επιτρέπουν στον χρήστη να προσαρμόζει δυναμικά το χρονόμετρο του παιχνιδιού σε ένα παιχνίδι πληκτρολόγησης κάνοντας κλικ στα κουμπιά HTML. Αρχικά, δηλώνουμε μια μεταβλητή , το οποίο κρατά τον χρόνο σε χιλιοστά του δευτερολέπτου (30 δευτερόλεπτα από προεπιλογή, πολλαπλασιάζεται επί 1000 για να μετατραπεί σε χιλιοστά του δευτερολέπτου). Η βασική λειτουργικότητα βρίσκεται στο λειτουργία, η οποία ενημερώνει την τιμή του χρονοδιακόπτη με βάση το κουμπί που πατήσατε. Αυτή η μέθοδος λαμβάνει την τιμή του κουμπιού (π.χ. 30, 60 ή 90) και ενημερώνει το Ώρα παιχνιδιού μεταβλητή ανάλογα. Επιπλέον, το σενάριο ενημερώνει τον τίτλο της σελίδας για να αντικατοπτρίζει την επιλεγμένη διάρκεια του χρονοδιακόπτη, καθιστώντας σαφές στους χρήστες πόσο χρόνο έχουν.

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

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

Τέλος, υλοποιούμε δοκιμές μονάδας χρησιμοποιώντας το Jest, ένα πλαίσιο δοκιμών JavaScript. Ο Οι λειτουργίες είναι ζωτικής σημασίας για την επικύρωση της σωστής ενημέρωσης του χρονοδιακόπτη. Δοκιμάζοντας πολλά σενάρια, όπως εάν ο χρονοδιακόπτης προσαρμόζεται στα 30 δευτερόλεπτα, 60 δευτερόλεπτα ή 90 δευτερόλεπτα, αυτές οι δοκιμές μονάδας διασφαλίζουν την ορθότητα του σεναρίου. Εντολές όπως και χρησιμοποιούνται για να επαληθευτεί ότι η πραγματική τιμή του χρονοδιακόπτη και ο τίτλος της σελίδας ταιριάζουν με τα αναμενόμενα αποτελέσματα. Αυτή η φάση δοκιμής διασφαλίζει ότι η λογική του χρονοδιακόπτη σας λειτουργεί σωστά σε διαφορετικές περιπτώσεις χρήσης, παρέχοντας εμπιστοσύνη στην ευρωστία της λύσης σας.

Αλλαγή τιμής χρονοδιακόπτη με κουμπιά HTML για ένα παιχνίδι πληκτρολόγησης

Προσέγγιση front-end που βασίζεται σε JavaScript με δυναμική ενημέρωση χρόνου και προσαρμογή τίτλου

// Solution 1: Using event listeners to change timer value dynamically
let gameTime = 30 * 1000; // Default timer set to 30 seconds
const titleElement = document.querySelector('title');
function changeTimer(value) {
    gameTime = value * 1000; // Update timer to selected value
    titleElement.innerText = value + 's'; // Update the title
}
// Attach event listeners to buttons
document.getElementById('thirty').addEventListener('click', () => changeTimer(30));
document.getElementById('sixty').addEventListener('click', () => changeTimer(60));
document.getElementById('ninety').addEventListener('click', () => changeTimer(90));
// HTML Buttons:
// <button id="thirty" type="button">30s</button>
// <button id="sixty" type="button">60s</button>
// <button id="ninety" type="button">90s</button>

Εναλλακτική προσέγγιση: Χρήση ενσωματωμένων λειτουργιών HTML και JavaScript

Ενσωματωμένη JavaScript σε HTML με άμεσες κλήσεις συναρτήσεων με κλικ στο κουμπί

<script>
let gameTime = 30 * 1000;
function changeTimer(value) {
    gameTime = value * 1000;
    document.title = value + 's';
}
</script>
<button onClick="changeTimer(30)">30s</button>
<button onClick="changeTimer(60)">60s</button>
<button onClick="changeTimer(90)">90s</button>

Δοκιμή μονάδας για αλλαγές στην τιμή του χρονοδιακόπτη σε διαφορετικά περιβάλλοντα

Δοκιμές μονάδων που βασίζονται σε JavaScript χρησιμοποιώντας το Jest για επικύρωση περιβάλλοντος διεπαφής

// Jest Test Cases
test('Timer should update to 30 seconds', () => {
    changeTimer(30);
    expect(gameTime).toBe(30000);
    expect(document.title).toBe('30s');
});
test('Timer should update to 60 seconds', () => {
    changeTimer(60);
    expect(gameTime).toBe(60000);
    expect(document.title).toBe('60s');
});
test('Timer should update to 90 seconds', () => {
    changeTimer(90);
    expect(gameTime).toBe(90000);
    expect(document.title).toBe('90s');
});

Βελτίωση της αλληλεπίδρασης παιχνιδιού με προσαρμογή χρονοδιακόπτη

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

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

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

  1. Πώς μπορώ να χρησιμοποιήσω για να δημιουργήσετε αντίστροφη μέτρηση;
  2. Μπορείτε να χρησιμοποιήσετε ρυθμίζοντας το να εκτελείται κάθε 1000 χιλιοστά του δευτερολέπτου (1 δευτερόλεπτο) και μειώνοντας την τιμή του χρονοδιακόπτη κάθε φορά. Όταν η τιμή φτάσει στο μηδέν, μπορείτε να σταματήσετε την αντίστροφη μέτρηση χρησιμοποιώντας .
  3. Ποιος είναι ο σκοπός του ?
  4. χρησιμοποιείται για να σταματήσει μια αντίστροφη μέτρηση ή οποιαδήποτε άλλη επαναλαμβανόμενη ενέργεια που ξεκίνησε από . Είναι σημαντικό να διασφαλίσετε ότι η αντίστροφη μέτρηση σταματά όταν φτάσει στο μηδέν.
  5. Πώς μπορώ να ενημερώσω δυναμικά τον τίτλο HTML;
  6. Χρήση για να ορίσετε το κείμενο του τίτλου της σελίδας. Αυτό μπορεί να ενημερωθεί στο δικό σας λειτουργία με βάση την επιλεγμένη τιμή χρόνου.
  7. Μπορώ να χειριστώ τα σφάλματα χρήστη κατά την επιλογή ενός χρονοδιακόπτη;
  8. Ναι, μπορείτε να προσθέσετε επικύρωση ελέγχοντας εάν έχει επιλεγεί μια έγκυρη επιλογή χρονοδιακόπτη πριν από την έναρξη της αντίστροφης μέτρησης. Εάν δεν έχει επιλεγεί έγκυρη ώρα, μπορείτε να εμφανίσετε μια ειδοποίηση ή μια προτροπή.
  9. Πώς ενεργοποιώ μια λειτουργία όταν πατιέται ένα κουμπί;
  10. Μπορείτε να προσαρτήσετε μια λειτουργία σε ένα κουμπί χρησιμοποιώντας ή με απευθείας χρήση στο στοιχείο HTML του κουμπιού.

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

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

  1. Μπορείτε να βρείτε αναλυτικές πληροφορίες σχετικά με τη χρήση JavaScript για χειρισμό DOM και χειρισμό συμβάντων Έγγραφα Ιστού MDN .
  2. Για την κατανόηση του Αστείο πλαίσιο και την εφαρμογή του για δοκιμές μονάδων σε εφαρμογές JavaScript.
  3. Ολοκληρωμένες πληροφορίες σχετικά με τη χρήση addEventListener για το χειρισμό συμβάντων σε JavaScript είναι διαθέσιμα στο W3Schools.
  4. Η σημασία των ενημερώσεων σε πραγματικό χρόνο σε εφαρμογές web, συμπεριλαμβανομένων των χρονοδιακόπτων, συζητείται στο Smashing Magazine .