HTML Düğmelerini Kullanarak Yazma Oyununun JavaScript Zamanlayıcı Değeri Nasıl Değiştirilir

JavaScript

Düğmeleri Kullanarak Oyun Yazmak için Dinamik Zamanlayıcı Ayarı

Bir yazma oyununda, ilgi çekici bir kullanıcı deneyimi sağlamak için oyunun hızını kontrol etmek çok önemlidir. Önemli faktörlerden biri, kullanıcının oyunu veya yazma mücadelesini ne kadar sürede tamamlaması gerektiğini belirleyen zamanlayıcıdır. Kullanıcıların oyun zamanlayıcısını basit HTML düğmeleri aracılığıyla ayarlamasına izin vererek, onlara oyunları üzerinde daha fazla kontrol verebilirsiniz.

Bu makale, oyuncuların düğmeleri kullanarak farklı zamanlayıcı ayarları arasında seçim yapmasına olanak tanıyan JavaScript'te bir çözümün nasıl oluşturulacağını gösterecektir. Örneğin, '30'lar' düğmesinin seçilmesi zamanlayıcıyı 30 saniyeye ayarlayacaktır, '60'lar' düğmesinin tıklanması ise 60 saniyeye değiştirecektir.

JavaScript işlevi, tıklanan düğmeden değeri alacak ve hem zamanlayıcıyı hem de oyunun başlığını dinamik olarak güncelleyecektir. Bu tür bir esneklik, kullanıcı deneyimini geliştirerek oyunu farklı beceri seviyeleri için daha özelleştirilebilir ve eğlenceli hale getirebilir.

Bu kılavuzun sonunda HTML ve JavaScript kullanarak tamamen işlevsel bir zamanlayıcı ayarlama özelliğine sahip olacaksınız. Ayrıca, seçilen zamanlayıcı süresini yansıtacak şekilde sayfa başlığında görüntülenen zamanlayıcı değerinin nasıl güncelleneceğini de ele alacağız.

Emretmek Kullanım örneği
document.querySelector() Tarayıcı sekmesinin başlığını dinamik olarak güncellemek amacıyla HTML
addEventListener() Belirli bir olayı (ör. tıklama) bir düğme öğesine bağlar. Bu bağlamda, kullanıcı bir düğmeyi tıklattığında changeTimer() işlevini tetiklemek için kullanılır ve zamanlayıcı ayarlarıyla dinamik etkileşime olanak tanır.
innerText Bu özellik, bir HTML öğesi içindeki görünür metnin değiştirilmesine olanak tanır. Bu çözümde, bir butona tıklandığında sayfa başlığındaki zamanlayıcı değerinin güncellenmesi için kullanılır.
onClick changeTimer() işlevini doğrudan düğmenin click olayına eklemek için alternatif yaklaşımda kullanılan bir satır içi olay işleyicisi niteliği. Bu, zamanlayıcıyı dinamik olarak güncellemenin daha basit, daha az modüler bir yolunu sağlar.
test() Bu yöntem Jest ile birim testinde kullanılır. Zamanlayıcının doğru şekilde güncellendiğinden emin olmak için test edilen işlevin (örneğin, changeTimer()) değerlendirildiği bir test durumunu tanımlar. Kodun farklı senaryolarda beklendiği gibi davranmasını sağlar.
expect() Gerçek değerin (güncellenmiş zamanlayıcı gibi) beklenen değerle eşleşip eşleşmediğini kontrol eden bir Jest komutu. Birim testlerinde gameTime ve document.title öğelerinin bir düğme tıklatıldıktan sonra doğru şekilde güncellendiğini doğrulamak için kullanılır.
toBe() Kesin eşitliği kontrol eden başka bir Jest komutu. ChangeTimer() çağrıldıktan sonra oyun süresinin tam olarak beklendiği gibi olmasını sağlar (örneğin, 30 saniye boyunca 30.000 ms).
getElementById() Belirli düğmeleri kimliklerine göre seçmek için kullanılır (örneğin, 'otuz', 'altmış'). Bu yöntem, olay dinleyicilerini düğmelere eklemek ve kullanıcı etkileşimine yanıt olarak zamanlayıcının dinamik değişimini tetiklemek için önemlidir.

JavaScript ve HTML Düğmelerini Kullanarak Dinamik Zamanlayıcılar Oluşturma

Yukarıda sağlanan komut dosyaları, kullanıcının bir yazma oyununda HTML düğmelerini tıklatarak oyun zamanlayıcısını dinamik olarak ayarlamasına olanak tanımak için tasarlanmıştır. Başlangıçta bir değişken tanımlıyoruz , zamanı milisaniye cinsinden tutar (varsayılan olarak 30 saniye, milisaniyeye dönüştürmek için 1000 ile çarpılır). Temel işlevsellik, Tıklanan düğmeye göre zamanlayıcı değerini güncelleyen işlev. Bu yöntem, düğmenin değerini (örneğin 30, 60 veya 90) alır ve oyunZamanı buna göre değişkenlik gösterir. Ayrıca komut dosyası, seçilen zamanlayıcı süresini yansıtacak şekilde sayfanın başlığını güncelleyerek kullanıcıların ne kadar zamanları olduğunu açıkça belirtir.

Dinamik davranış için olay dinleyicilerini, özellikle de emretmek. Bu, kullanıcı düğmelerden herhangi birini tıklattığında betiğin tepki vermesini sağlar. Her düğmeye bir kimlik atanır ve tıklandığında İlgili zaman değerini ileten fonksiyon. Bu yaklaşım, HTML yapısında tekrarlanan satır içi JavaScript'e ihtiyaç duymadan birden fazla düğmeyi verimli bir şekilde kullanmak için kullanışlıdır. Komut dosyası ayrıca aşağıdaki gibi satır içi olay işleyicilerini kullanabileceğiniz bir geri dönüş seçeneği de içerir eğer modülerlik yerine basitlik tercih ediliyorsa.

Alternatif çözümde doğrudan bağlarız. olayı düğmelere aktarın. Bu yöntem, tıklanan düğmenin hemen ardından çalışır. Bu basit bir yaklaşımdır ancak olay dinleyicisi yönteminin esnekliğinden yoksundur. Bu yöntemin basitliği daha küçük ve daha az karmaşık uygulamalar için kullanışlıdır. Bununla birlikte, daha ölçeklenebilir kod için, olay dinleyicileri daha fazla esneklik sunar ve HTML yapısını doğrudan değiştirmeden komut dosyasında daha kolay güncelleme yapılmasına olanak tanır. Her iki yöntem de aynı sorunu çözmeyi amaçlamaktadır; yani zamanlayıcıyı ayarlamak ve başlığı kullanıcının seçimine göre dinamik olarak güncellemek.

Son olarak, bir JavaScript test çerçevesi olan Jest'i kullanarak birim testleri uyguluyoruz. Zamanlayıcının düzgün bir şekilde güncellendiğini doğrulamak için işlevler çok önemlidir. Bu birim testleri, zamanlayıcının 30 saniyeye, 60 saniyeye veya 90 saniyeye ayarlanıp ayarlanmayacağı gibi birden fazla senaryoyu test ederek komut dosyasının doğruluğunu sağlar. Gibi komutlar Ve gerçek zamanlayıcı değerinin ve sayfa başlığının beklenen sonuçlarla eşleştiğini doğrulamak için kullanılır. Bu test aşaması, zamanlayıcı mantığınızın farklı kullanım durumlarında düzgün şekilde çalışmasını sağlayarak çözümünüzün sağlamlığına güven sağlar.

Yazma Oyunu için Zamanlayıcı Değerini HTML Düğmeleriyle Değiştirme

Dinamik zaman güncellemesi ve başlık ayarlaması ile JavaScript tabanlı ön uç yaklaşımı

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

Alternatif Yaklaşım: Satır İçi HTML ve JavaScript İşlevlerini Kullanmak

Düğme tıklatıldığında doğrudan işlev çağrılarıyla HTML'de satır içi JavaScript

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

Farklı Ortamlarda Zamanlayıcı Değeri Değişiklikleri İçin Birim Testi

Ön uç ortam doğrulaması için Jest'i kullanan JavaScript tabanlı birim testleri

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

Zamanlayıcı Özelleştirmesi ile Oyun Etkileşimini Geliştirme

Yazma oyununda zamanlayıcıyı değiştirirken göz önünde bulundurulması gereken bir diğer husus, genel kullanıcı deneyimi ve arayüzdür. Oyun zamanlayıcısını düğmeler aracılığıyla ayarlamanın yanı sıra, oyunculara seçtikleri zamanlayıcıyla ilgili görsel geri bildirimde bulunmak da önemlidir. Bu, geri sayım ekranı gibi sayfadaki diğer öğelerin güncellenmesiyle sağlanabilir. Zamanlayıcıyı ayarlamak için bir düğmeye tıklandıktan sonra geri sayım sayacı hemen başlamalı ve kullanıcıya gerçek zamanlı geri bildirim sağlanmalıdır. Bu, etkileşimin sorunsuz ve sezgisel olmasını sağlayarak oyunu daha ilgi çekici hale getirir.

Bunu uygulamak için JavaScript'i kullanabilirsiniz. işlev. Zamanlayıcı ayarlandıktan sonra, setInterval zamanlayıcı değerini her saniye azaltan bir geri sayım oluşturmak için kullanılabilir. Zamanlayıcı sıfıra ulaştığında, işlev oyunu durdurabilir veya kullanıcıyı sürenin dolduğu konusunda uyarabilir. Bu işlevsellik, düğmeleri kullanarak zamanlayıcıyı dinamik olarak değiştirme yeteneğiyle birleştiğinde oyun deneyimini önemli ölçüde artırır. Duyarlı bir arayüz, oyuncuların ilgisini canlı tutmanın anahtarıdır ve gerçek zamanlı geri bildirim bunu başarmanın bir yoludur.

Ayrıca hata yönetimi de dikkate alınmalıdır. Örneğin, bir kullanıcı bir zamanlayıcı ayarlamadan oyunu başlatmaya çalışırsa, ona bir mesaj göndererek geçerli bir zaman seçmesini sağlayabilirsiniz. Doğrulama mekanizmalarını dahil ederek oyunun sorunsuz çalışmasını sağlar ve olası sorunları azaltırsınız. Bu tür bir doğrulama yalnızca kullanıcı deneyimini geliştirmekle kalmaz, aynı zamanda oyununuzun güvenilirliğine de katkıda bulunarak oyuncuların gereksiz kafa karışıklığıyla karşılaşmamasını sağlar.

  1. Nasıl kullanırım geri sayım oluşturmak için?
  2. Kullanabilirsin her 1000 milisaniyede (1 saniye) çalışacak şekilde ayarlayarak ve her seferinde zamanlayıcı değerini azaltarak. Değer sıfıra ulaştığında geri sayımı kullanarak durdurabilirsiniz. .
  3. Amacı nedir? ?
  4. tarafından başlatılan bir geri sayımı veya yinelenen herhangi bir eylemi durdurmak için kullanılır. . Sıfıra ulaştığında geri sayımın durmasını sağlamak çok önemlidir.
  5. HTML başlığını dinamik olarak nasıl güncelleyebilirim?
  6. Kullanmak sayfa başlığının metnini ayarlamak için. Bu sizin içinde güncellenebilir seçilen zaman değerine göre işlev.
  7. Bir zamanlayıcı seçerken kullanıcı hatalarını halledebilir miyim?
  8. Evet, geri sayımı başlatmadan önce geçerli bir zamanlayıcı seçeneğinin seçilip seçilmediğini kontrol ederek doğrulama ekleyebilirsiniz. Geçerli bir zaman seçilmemişse bir uyarı veya bilgi istemi görüntüleyebilirsiniz.
  9. Bir düğmeye tıklandığında bir işlevi nasıl tetiklerim?
  10. kullanarak bir düğmeye bir işlev ekleyebilirsiniz. veya doğrudan kullanarak düğmenin HTML öğesinde.

Bir yazma oyununa dinamik zamanlayıcı ayarlarının dahil edilmesi, oyuncu deneyimini önemli ölçüde artırır. Geliştiriciler, kullanıcıların basit HTML düğmelerini kullanarak zamanlayıcıyı değiştirmesine olanak tanıyarak ve oyunun arayüzünü gerçek zamanlı olarak güncelleyerek oyunlarını daha etkileşimli ve esnek hale getirebilirler. Bu tür kontrol, farklı beceri seviyelerinin uyumlaştırılmasına yardımcı olur.

Olay dinleyicileri, hata işleme ve birim testleri gibi en iyi uygulamaları kullanmak, oyunun sorunsuz çalışmasını ve güvenilir bir kullanıcı deneyimi sunmasını sağlar. Bu özelliklerin uygulanması yalnızca oyunun işlevselliğini geliştirmekle kalmayacak, aynı zamanda oyuncuların hızlı tepki veren, kullanıcı dostu mekaniklerle daha fazla etkileşimde kalmasını sağlayacak.

  1. DOM manipülasyonu ve olay işleme için JavaScript kullanımına ilişkin ayrıntılı bilgi şu adreste bulunabilir: MDN Web Belgeleri .
  2. Anlamak için Alay JavaScript uygulamalarında birim testi için çerçeve ve bunun uygulanması.
  3. Kullanıma ilişkin kapsamlı bilgiler addEventListener JavaScript'te etkinlikleri yönetmek için W3Schools'ta mevcuttur.
  4. Zamanlayıcılar da dahil olmak üzere web uygulamalarında gerçek zamanlı güncellemelerin önemi şurada tartışılmaktadır: Çarpıcı Dergi .