Aplicație Win 8 în 10 zile – #3 Sistemul de scor și timere
După ce am făcut QuizApp-ul să funcționeze haideți să îi adăugăm un sistem de scor și două timere. Vreau să am un timer pentru întreaga rundă și un timer pentru fiecare întrebare. Timer-ul pentru întreaga rundă o să dureze 60 de secunde iar pentru fiecare întrebare 10 secunde.
Sistemul de scor
De asemenea, m-am gândit ca de fiecare dată când utilizatorul răspunde corect la o întrebare să primească 5 puncte și 5 secunde la timerul total și de câte ori greșește să fie penalizat cu 5 puncte. Dacă s-au scurs cele 10 secunde alocate fiecărei întrebări fără să răspundă o să îi scădem 5 puncte.
Mici adăugări la design
Haideți să intrăm în partea de XAML și să adăugăm două TextBlock-uri pentru scor, două pentru timpul total și unul pentru timpul alocat fiecărei întrebări.
StackPanel-ul denumit TopSection îl vom adăuga în grid-ul unde avem și PageTitle iar StackPanel-ul denumit MidSection îl vom adăuga în locul StackPanel-ului unde avem întrebarea afișată în XAML-ul de ieri.
Puțină logică pt aplicația mea
Undeva în aplicația noastră o să creez un DispatcherTimer qTimer, tTimer; de preferat pe prima linie de cod în interiorul clasei NewGame.
Logica este următoarea: la fiecare secundă care trece scădem timpul afișat cu o secundă, dacă a expirat timpul pt qTimer atunci apelez metoda Gresit(), scad 5 puncte și pentru că am apelat metoda Gresit() se generează și următoarea întrebare și qTimer devine 11. Când termin timer-ul de la tTimer o să scot utilizatorul la meniul principal și o să îi afișez pe ecran scorul pe care l-a obținut, asta o să faceți voi dacă doriți în metoda RegisterScore(). Pentru moment o țin goală pentru că am am alte planuri pregătite 🙂
Acum ar trebui să mergem la metodele noastre Corect/Gresit și să le adăugăm sistemul de scor.
Dacă utilizatorul nostru a răspuns corect la întrebare și se apelează metoda Corect() voi primi 5 puncte la scor, mi se vor adăuga 3 secunde la timer-ul rundei și se va apela metoda UpdateScor(), dacă am răspuns greșit sau nu am răspuns la timp se va apela metoda Gresit() care o să îmi scadă 5 puncte din scor și va apela metoda UpdateScor(). UpdateScor() îmi ia variabila Scor și o pune în scor.Text și îmi resetează questTimer-ul (qT).
Partea de logică a aplicației este gata! Un singur lucru aș mai vrea să facem:
Să oprim timerele înainte să ieșim din aplicația noastră. Adăugăm la OnNavigatedFrom comanda: qTimer.Stop(); și tTimer.Stop();
By: Adrian Coman