Flutter Çoktan Seçmeli Bilgi Oyunu
Merhaba. Flutter kullanarak basit bir çoktan seçmeli bilgi oyunu yapacağız.
Paylaşacağım github linkinden kodların tamamına ulaşabilirsiniz.
Başlayalım.
Question sınıfını oluşturalım. Bu sınıf; sorulacak soruyu, sorunun dört tane şıkkını ve cevabını içermektedir.
Sorularımızın içeriklerini aşağıda görebilirsiniz. “ManyQuestions” adında bir sınıf oluşturuldu. “Question” tipinde 21 tane soru içeren questionBank listesi bulunmaktadır.
Mantık oldukça basit. Kullanıcı oyuna başladığında 100 saniye süresi de başlamış olacak. Karşısına çıkacak olan soruları en fazla üç kere yanlış cevaplama hakkına sahip. Kullanıcı, soruları doğru bildikçe bir sonraki soruya geçecek. Doğru cevaplanan her soruda süre 5 saniye ve skor 10 puan artacak. Bütün haklar kullanıldığında ise “Game Over” ekranı gösterilecek ve kullanıcının toplam puanı yazacak.
Aşağıdaki fonksiyonları oyunumuzda kullanacağız. Buradaki “section” değişkeni, oyunun gidişatını belirlemek için kullanılmıştır. “resetGame” fonksiyonu bu değişkene 0 değerini atayarak, oyunun yeniden başlamasını sağlamaktadır.
Timer tipinde _timer değişkeni tanımlanmıştır. “startTimer” fonksiyonu _start değerinden her saniye bir eksiltmektedir. Ayrıca _start değeri 0 olduğu zaman “timer.cancel()” fonksiyonunu çağırarak geri sayımı durdurmaktadır.
“changeQuestion” fonksiyonu, soruların değişmesini sağlamaktadır. “step” değeri ise soruların sırasını belirtmektedir. 0'dan 20'ye kadar toplam 21 adet soru bulunmaktadır. Eğer step değeri 20'ye eşitlenirse “section” değerine 1 atanmaktadır. Buda oyunun tamamlandığını göstermektedir.
“shownWidget” değeri, o an kullanıcıya gösterilen ekranın oluşmasını sağlayan widgetların bütününü oluşturmaktadır. Eğer “section” değeri -1 ise kullanıcı ana ekran ile karşılaşacaktır. Bu ve diğer ekranların resimlerini yazının sonundaki github linkinde bulabilirsiniz.
Sorunun kodu aşağıdaki gibidir. “Text” widgetı, ManyQuestion tipindeki manyQuestion değerinin questionBank listesindeki step değerine karşılık gelen soruyu içermektedir.
Sorunun şıkları şu şekildedir. Burada kontrol değeri görülmektedir. Eğer A şıkkına tıklanırsa, A şıkkındaki değer kontrol değerine atanır. Sorunun cevabı doğru ise changeQuestion fonksiyonu çağrılır ve soru değişir. Kullacının puanı 10 artar ve süresine 5 saniye daha eklenir. Sorunun cevabı yanlış ise kullanıcı bir hakkını kaybeder ve soru yine değişir. Diğer şıklarda aynı şekilde kodlanmıştır.
“section” değeri 1 olduğu zaman oyununun sonunun geldiği anlaşılmaktadır.
Oyunun linkine ulaşabilmeniz için github linkini buraya bırakıyorum. Oyunun resimlerini “Readme” dosyasında görebilirsiniz.
Oyunu indirmek için bu bağlantıyı kullanabilirsiniz.