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();

screenshot_12192013_121543




Leave a Comment

Blog

Recent posts