Windows Phone 8 in 10 zile 4

Azi vom discuta despre partea de logică a aplicației, despre cum fiecare element al aplicației interacționează cu altul.

Clasa Question

Click dreapta pe numele soluției-> Add ->New item -> Class și îi dăm numele de question.cs.

Clasa va avea doi constructori, unul gol și unul care va conține cuvântul meu, cele patru variante și explicația/definiția din dex.

Logica

Prin același procedeu mai creez o clasă MainViewModel.cs. Aici vom ține toată logica aplicației. Acesta este codul și îl voi explica pe rând:

Creez un array de obiecte tip question în primul rând și populez array-ul meu cu întrebările pe care le am (nu, nu le dau share, mai mult am stat să fac întrebările decât să scriu codul aplicației). Este foarte important de ținut minte ordinea parametrilor:

  1. Cuvântul meu
  2. Varianta corectă
  3. Varianta greșită
  4. Varianta greșită
  5. Varianta greșită
  6. Explicațiile

Creez o clasă GenerateQ care o să îmi genereze întrebările și o să returneze un obiect de tip question pe care-l voi folosi eu în aplicația mea.

În interiorul metodei, cu un random (de i) decid ce întrebare să fie aleasă, cu un random (de j) decid care va fi varianta corectă și dau variantelor un shuffle. La final returnez obiectul meu pe care-l voi folosi în newGame.xaml.cs

NewGame

În newGame.xaml.cs voi scrie așa:

Declar clasa mea MainViewModel la început și obiectul q de tip question. Clasa MainViewModel o inițializez în constructorul newGame generând astfel și întrebările scrise de mine anterior.

Tot ce mai am de făcut este acum să pornesc jocul prin metoda StartGame();

La fiecare apelare de StartGame voi lua scorul (care a fost declarat ca fiind variabilă statică aparținând întregii clase, nu doar obiectului _mvm), apelez metoda care îmi va returna obiectul meu cu variantele amestecate și servesc view-ului textul din fiecare obiect.

Toate butoanele duc la un singur handler (linia 25) checkAnswer care va verifica care buton a declanșat event-ul și în funcție de declanșator o să îmi afișeze dacă am avut sau nu dreptate.

Linia 46 ShowWrong o să îmi afișeze un mesaj de eroare care va genera următoarea întrebare în momentul când dau click/tap pe ok și îmi va scădea 15 puncte din scor.

Linia 53 ShowCorrect doar va genera următoarea întrebare și îmi va adăuga 10 puncte la scor.

Linia 59 o vom ignora momentan, urmând să o discutăm spre finalul seriei.

Learn

În aplicația mea am 2 view-uri principale de care trebuie să mă ocup: newGame și learn. Pentru cel de-al doilea am mai puțin cod:

Practic generez întrebarea, îi afișez cuvântul și explicația cu sinonim (linia 14).




Leave a Comment

Blog

Recent posts