Cum să modificați valoarea temporizatorului JavaScript pentru un joc de tastare folosind butoanele HTML

JavaScript

Ajustare dinamică a cronometrului pentru tastarea jocului folosind butoane

Într-un joc de tastare, controlul ritmului jocului este crucial pentru a asigura o experiență captivantă a utilizatorului. Un factor important este cronometrul, care determină cât timp are utilizatorul pentru a finaliza jocul sau provocarea de tastare. Permițând utilizatorilor să ajusteze cronometrul jocului prin intermediul unor butoane HTML simple, le puteți oferi mai mult control asupra jocului lor.

Acest articol vă va arăta cum să creați o soluție în JavaScript care le permite jucătorilor să aleagă între diferite setări ale temporizatorului folosind butoane. De exemplu, selectarea unui buton „30s” va ajusta cronometrul la 30 de secunde, în timp ce făcând clic pe un buton „60s” îl va schimba la 60 de secunde.

Funcția JavaScript va prelua valoarea de pe butonul apăsat și va actualiza atât temporizatorul, cât și titlul jocului în mod dinamic. Acest tip de flexibilitate poate îmbunătăți experiența utilizatorului, făcând jocul mai personalizabil și mai plăcut pentru diferite niveluri de calificare.

Până la sfârșitul acestui ghid, veți avea o funcție de ajustare a temporizatorului complet funcțională folosind HTML și JavaScript. Vom aborda, de asemenea, cum să actualizați valoarea temporizatorului afișată pe titlul paginii pentru a reflecta durata temporizatorului selectată.

Comanda Exemplu de utilizare
document.querySelector() Folosit pentru a selecta elementul HTML
addEventListener() Leagă un anumit eveniment (de exemplu, clic) la un element buton. În acest context, este folosit pentru a declanșa funcția changeTimer() atunci când un utilizator face clic pe un buton, permițând interacțiunea dinamică cu setările cronometrului.
innerText Această proprietate permite modificarea textului vizibil într-un element HTML. În această soluție, este folosit pentru a actualiza valoarea temporizatorului din titlul paginii atunci când se face clic pe un buton.
onClick Un atribut de gestionare a evenimentelor inline utilizat în abordarea alternativă pentru atașarea funcției changeTimer() direct la evenimentul de clic al butonului. Acest lucru permite un mod mai simplu, mai puțin modular de a actualiza cronometrul în mod dinamic.
test() Această metodă este utilizată în testarea unitară cu Jest. Acesta definește un caz de testare în care funcția care este testată (de exemplu, changeTimer()) este evaluată pentru a se asigura că cronometrul se actualizează corect. Se asigură că codul se comportă conform așteptărilor în diferite scenarii.
expect() O comandă Jest care verifică dacă valoarea reală (cum ar fi cronometrul actualizat) se potrivește cu valoarea așteptată. Este folosit în testele unitare pentru a verifica dacă gameTime și document.title sunt actualizate corect după un clic pe buton.
toBe() O altă comandă Jest care verifică egalitatea strictă. Se asigură că după apelarea changeTimer(), timpul de joc este exact ceea ce este așteptat (de exemplu, 30.000 ms timp de 30 de secunde).
getElementById() Folosit pentru a selecta anumite butoane după ID-urile lor (de exemplu, „treizeci”, „șaizeci”). Această metodă este importantă pentru atașarea ascultătorilor de evenimente la butoane și declanșarea schimbării dinamice a temporizatorului ca răspuns la interacțiunea utilizatorului.

Crearea cronometrelor dinamice folosind butoanele JavaScript și HTML

Scripturile furnizate mai sus sunt concepute pentru a permite unui utilizator să ajusteze dinamic cronometrul jocului într-un joc de tastare făcând clic pe butoanele HTML. Inițial, declarăm o variabilă , care păstrează timpul în milisecunde (30 de secunde în mod implicit, înmulțit cu 1000 pentru a converti în milisecunde). Funcționalitatea cheie constă în funcția, care actualizează valoarea temporizatorului pe baza butonului pe care s-a făcut clic. Această metodă primește valoarea butonului (de exemplu, 30, 60 sau 90) și actualizează timp de joc variabilă în mod corespunzător. În plus, scriptul actualizează titlul paginii pentru a reflecta durata cronometrului selectat, arătând clar utilizatorilor cât timp au la dispoziție.

Pentru comportamentul dinamic, folosim ascultători de evenimente, în special comanda. Acest lucru permite scriptului să reacționeze atunci când un utilizator face clic pe oricare dintre butoane. Fiecărui buton i se atribuie un ID și, atunci când este apăsat, declanșează funcţie, trecând valoarea de timp respectivă. Această abordare este utilă pentru gestionarea eficientă a mai multor butoane fără a fi nevoie de JavaScript inline repetitiv în structura HTML. Scriptul include, de asemenea, o opțiune de rezervă în care puteți utiliza handlere de evenimente inline, cum ar fi dacă se preferă simplitatea față de modularitate.

În soluția alternativă, legăm direct eveniment la butoane. Această metodă execută funcţionează direct pe butonul pe care se face clic. Este o abordare simplă, dar nu are flexibilitatea metodei de ascultare a evenimentelor. Simplitatea acestei metode este utilă pentru aplicații mai mici, mai puțin complexe. Cu toate acestea, pentru un cod mai scalabil, ascultătorii de evenimente oferă mai multă flexibilitate și permit actualizări mai ușoare ale scriptului fără a modifica direct structura HTML. Ambele metode urmăresc să rezolve aceeași problemă, și anume ajustarea cronometrului și actualizarea titlului în mod dinamic, în funcție de selecția utilizatorului.

În cele din urmă, implementăm teste unitare folosind Jest, un cadru de testare JavaScript. The funcțiile sunt cruciale pentru validarea actualizării corecte a cronometrului. Testând mai multe scenarii, cum ar fi dacă cronometrul se ajustează la 30 de secunde, 60 de secunde sau 90 de secunde, aceste teste unitare asigură corectitudinea scriptului. Comenzi precum şi sunt utilizate pentru a verifica dacă valoarea reală a temporizatorului și titlul paginii se potrivesc cu rezultatele așteptate. Această fază de testare asigură că logica temporizatorului dumneavoastră funcționează corect în diferite cazuri de utilizare, oferind încredere în robustețea soluției dumneavoastră.

Modificarea valorii temporizatorului cu butoane HTML pentru un joc de tastare

Abordare front-end bazată pe JavaScript, cu actualizare dinamică a timpului și ajustare a titlului

// 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>

Abordare alternativă: Utilizarea funcțiilor HTML și JavaScript inline

JavaScript inline în HTML cu apeluri directe de funcții la clic pe buton

<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>

Testarea unitară pentru modificările valorii temporizatorului în diferite medii

Teste unitare bazate pe JavaScript folosind Jest pentru validarea mediului front-end

// 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');
});

Îmbunătățirea interacțiunii jocului cu personalizarea temporizatorului

Un alt aspect de luat în considerare atunci când schimbați temporizatorul într-un joc de tastare este experiența generală a utilizatorului și interfața. Pe lângă reglarea temporizatorului jocului prin intermediul butoanelor, este important să oferiți jucătorilor feedback vizual cu privire la temporizatorul selectat. Acest lucru se poate realiza prin actualizarea altor elemente de pe pagină, cum ar fi afișarea cu numărătoare inversă. După ce se face clic pe un buton pentru a seta cronometrul, cronometrul ar trebui să înceapă imediat, oferind feedback în timp real utilizatorului. Acest lucru asigură că interacțiunea este lină și intuitivă, făcând jocul mai captivant.

Pentru a implementa acest lucru, puteți utiliza JavaScript funcţie. Odată setat temporizatorul, setInterval poate fi folosit pentru a crea o numărătoare inversă care scade valoarea temporizatorului în fiecare secundă. Când cronometrul ajunge la zero, funcția poate fie să oprească jocul, fie să avertizeze utilizatorul că timpul a expirat. Această funcționalitate, combinată cu capacitatea de a schimba dinamic cronometrul folosind butoane, îmbunătățește semnificativ experiența de joc. O interfață receptivă este cheia pentru a menține jucătorii implicați, iar feedbackul în timp real este o modalitate de a realiza acest lucru.

În plus, trebuie luată în considerare gestionarea erorilor. De exemplu, dacă un utilizator încearcă să înceapă jocul fără a seta un cronometru, îi poți solicita cu un mesaj pentru a selecta o oră valabilă. Prin încorporarea mecanismelor de validare, vă asigurați că jocul funcționează fără probleme și reduce problemele potențiale. Acest tip de validare nu numai că îmbunătățește experiența utilizatorului, dar contribuie și la fiabilitatea jocului dvs., asigurând că jucătorii nu se confruntă cu confuzii inutile.

  1. Cum folosesc pentru a crea o numărătoare inversă?
  2. Puteți folosi setându-l să se execute la fiecare 1000 de milisecunde (1 secundă) și scăzând valoarea temporizatorului de fiecare dată. Când valoarea ajunge la zero, puteți opri numărătoarea inversă folosind .
  3. Care este scopul ?
  4. este folosit pentru a opri o numărătoare inversă sau orice altă acțiune recurentă începută de . Este esențial să vă asigurați că numărătoarea inversă se oprește când ajunge la zero.
  5. Cum pot actualiza titlul HTML în mod dinamic?
  6. Utilizare pentru a seta textul titlului paginii. Acest lucru poate fi actualizat în cadrul dvs funcția bazată pe valoarea de timp selectată.
  7. Pot gestiona erorile utilizatorului când selectez un temporizator?
  8. Da, puteți adăuga validare verificând dacă a fost selectată o opțiune de cronometru validă înainte de a începe numărătoarea inversă. Dacă nu este aleasă nicio oră validă, puteți afișa o alertă sau o solicitare.
  9. Cum declanșez o funcție când se face clic pe un buton?
  10. Puteți atașa o funcție unui buton folosind sau prin utilizarea directă în elementul HTML al butonului.

Încorporarea ajustărilor dinamice ale cronometrului într-un joc de tastare îmbunătățește semnificativ experiența jucătorului. Permițând utilizatorilor să schimbe cronometrul folosind butoane HTML simple și actualizând interfața jocului în timp real, dezvoltatorii își pot face jocurile mai interactive și mai flexibile. Acest tip de control ajută la adaptarea diferitelor niveluri de calificare.

Utilizarea celor mai bune practici, cum ar fi ascultătorii de evenimente, gestionarea erorilor și testele unitare, asigură că jocul funcționează fără probleme și oferă o experiență de încredere pentru utilizator. Implementarea acestor funcții nu numai că va îmbunătăți funcționalitatea jocului, ci și va menține jucătorii mai implicați cu mecanisme receptive și ușor de utilizat.

  1. Informații detaliate despre utilizarea JavaScript pentru manipularea DOM și gestionarea evenimentelor pot fi găsite pe MDN Web Docs .
  2. Pentru înțelegerea Glumă framework și implementarea acestuia pentru testarea unitară în aplicațiile JavaScript.
  3. Informații complete despre utilizare addEventListener pentru gestionarea evenimentelor în JavaScript sunt disponibile pe W3Schools.
  4. Importanța actualizărilor în timp real în aplicațiile web, inclusiv cronometrele, este discutată în Revista Smashing .