Javascript ile Mayın Tarlası Oyunu Yapımı

Bu sefer Windows içinde bir klasik haline gelen mayın tarlası oyunun basit bir kopyasını kodlayacağız. Direk sonucu görmek isterseniz yukarıdaki kod yazım videosunu izleyebilirsiniz. Kodlara da buradan erişebilirsiniz.

Basit bir HTML dosyası ile başlıyoruz. Bir div elementi oluşturup mineSweeper id’sini veriyoruz. İçine de grid sınıflı bir div elementi ekliyoruz.

CSS tarafında karmaşık bir durum yok. grid sınıflı element için display: grid özelliğini kullanıyoruz. Kolon ve satır sayımıza göre javascript içinde gerekli değerli vereceğiz. Grid içindeki hücreler için de cell sınıflı elementler kullanıyoruz, bunlar ::after sanal sınıflarını da hücrenin içeriğini kapamak için kullanacak şekilde stillendiriyoruz.

Javascript tarafında ise mineSweeper.js dosyasını yükleyerek başlıyoruz. Burada helper modülünü yükleyerek çok kez kullanılabilecek fonksiyonları buradan çağıracağız. square modülü ile de hücreler için gerekli sınıfları yüklemiş oluyoruz.

Kolon, satır ve oyundaki bomba sayılarının tutulduğu değişkenleri tanımlıyoruz. grid isimli dizide hücrelerimizin verilerini tutacağız fakat bu dizi tek boyutlu olacak. Normalde {2,4} şeklinde konumu olan 5 kolonlu bir hücrenin bu dizideki konumu {9} olacak.

Kolon sayımıza göre grid elementinin kolon sayısı stilini veriyoruz.

Bombalarımız için rastgele konumlar belirleyip önce onları yerleştiriyoruz. Daha sonra tekrar bu bomba konumlarını döngüde kullanıp komşularının değerlerini birer arttırıyoruz. Bu değerler oyun bir hücrenin etrafındaki bomba sayısını gösterecek. Tabii burada komşu eğer grid dizisinde bir değere sahip değilse onu Cell sınıfı örneği ile dolduruyoruz.

Son olarak bütün grid‘i tarayarak varsa boş index onu doldurup DOM elementlerini oluşturarak ekliyoruz. Hücrelerin DOM elementlerine verilen tıklama olayları ile eğer bomba ise oyunu bitirip değilse zincir bir reaksiyon ile bomba olmayan ve değeri sıfır olan bütün hücreleri açıyoruz.


Yayımlandı

kategorisi

yazarı:

Etiketler:

Yorumlar

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir