Krijimi i një aplikacioni për Ubuntu Touch [QML] - [Pjesa 2]

Introducción:

Epo këtu kemi postimin që pason pjesa e parëNë këtë do të përqendrohemi në trajtimin e të dhënave (pyetjeve), dhe do të fillojmë me pjesën logjike të lojës, në tjetrën do të përfundojmë logjikën dhe do të zbatojmë kohën dhe 3 opsionet.

Mund ta gjeni kodin në depon time Launchpad (klikoni këtu), ku do ta azhurnoj ndërsa shkoj.

Baza e të dhënave:

Për bazën e të dhënave që do të përdorim u1db, e cila është një bazë të dhënash që ruan të dhënat në format JSON.

Së pari le të shohim se cilat të dhëna duhet të ruajmë, kemi 1 pyetje (përveç tekstit të pyetjes do të ishte mirë të kemi një identifikues), me 4 përgjigje të mundshme, nga të cilat vetëm 1 mund të jetë, prandaj dokumenti në JSON pyetja e vetme duhet të jetë:

{ "id": 1, "pyetje": "do të ketë dev.desdelinux.net ", "përgjigjet" : { r1: "po", r2: "jo", r3: "nuk e di", r4: "kjo është një përgjigje e rreme" }, "e saktë": 3 }

Siç mund ta shohim ne kemi strukturuar në format JSON ku kemi një identifikues, një varg me pyetjen dhe r1, r2 që përfaqësojnë përgjigjen 1 dhe përgjigjen 2, më në fund kemi se cila nga përgjigjet është e saktë.

Le të shohim pak si funksionon U1db, gjëja e parë që duhet të bëjmë për të përdorur U1db është të importojmë modulin:

import U1db 1.0 as U1db

Ne deklarojmë bazën e të dhënave:

U1db.Database {
id: aDatabase
path: "aU1DbDatabase"
}

Bazat e të dhënave do të ruhen si aU1DbDatabase.u1db, tani ne krijojmë një dokument:

U1db.Document {
id: aDocument
database: aDatabase
docId: 'helloworld'
create: true
defaults: { "hello": "Hello World!" }
}

Ku mund të shohim formatin {«përshëndetje»: «diçka»}, për të ekzekutuar pyetje, ose për të shtuar të dhëna, për të marrë të dhëna, për t'i fshirë ato etj. Ne kemi elementin U1db.Query.

Mund të gjejmë një punë praktike në faqen e internetit të zhvillimit të Ubuntu.

Le të shkojmë në aplikacionin tonë dhe të krijojmë bazën tonë të të dhënave, siç kemi parë që përcaktojmë bazën e të dhënave:

U1db.Baza e të dhënave {id: pyetje db; rruga: "questionsdb.u1db"}

Mirë, tani le të vendosim disa elementë të paracaktuar në pyetjen e dokumentit të bazës së të dhënavedb:

    U1db.Document { id: aDocument database: questiondb docId: 'pyetjet' krijojnë: parazgjedhje të vërteta: { "pyetje": [ {"pyetje":"Do të ketë dev.desdelinux.net ?", "r1":"po", "r2":"jo", "r3":"hundë", "r4":"përgjigje e rreme", "e saktë": "3" }, {"pyetje ":"Kush është Hagridi (Harry Potter)?", "r1":"Zëvendësdrejtori i shkollës", "r2":"Gjetarja", "r3":"Mësuesi i transformimit", "r4":" Një prefekt", "i saktë": "2"}, {"pyetje":"Cili është kryeqyteti i Islandës?", "r1":"Amsterdam", "r2":"Reykjavik", "r3":" Tbilisi ", "r4":"Almaty", "korrekt": "2"} ] } }

Unë jam i vetëdijshëm që kodi nuk shfaqet siç duhet, por nëse e shohim nga afër do të shohim se kemi një element pyetje, të cilat me »[]» specifikojmë se mund të ketë disa elemente (nuk janë statike); në këtë rast do të kemi 4 si parazgjedhje, 4 pyetje me përgjigjet e tyre përkatëse.

Për të marrë elementet e dokumentit JSON, ne mund të specifikojmë identifikuesin e dokumentit që kemi krijuar (që është aDokumenti) Le të imagjinojmë se duam të marrim tekstin e pyetjes së parë:

aDocument.contents.questions [0] .pyetje

Ky rresht kodi na kthen përmbajtjen pyetëse të dokumentit aDocument, të elementit 0 (i pari në indeks), që është: «Do të ketë dev.desdelinux.neto?" Nëse vendosim numrin 1 në indeks, atëherë është pyetja e dytë.

Programimi i logjikës së lojës

Epo, tani që dimë të trajtojmë bazën e të dhënave ku kemi ruajtur pyetjet, do të programojmë logjikën e lojës. Para së gjithash ne do të krijojmë një skedar JavaScript (.js): Shtoni skedarin e ri -> Qt -> Js. Do ta telefonoj logjikës.js.

Në skedar do të krijojmë disa funksione, për të importuar skedarin js në dokumentin tonë qml:

importoni "logica.js" si Logica

Ne e shoqërojmë emrin Logica, prandaj kur duam të thërrasim një funksion do ta bëjmë atë si Logica.function (), sikur të ishte një objekt i cili ka metodat e tij.

Tani për tani, në mënyrë që postimi të mos bëhet shumë i gjatë, do të lëmë kohën e pyetjes dhe opsionet për më vonë, do të përqendrohemi në pyetjet dhe pikat, le të shohim një funksion që do të përdorim për të kaluar nga pyetja:

funksioni nextPyetja (num) {// koha = 0 pyetje.text = aDocument.contents.questions [num]. pyetje; resp1.text = aDocument.contents.questions [num] .r1; resp2.text = aDocument.contents.questions [num] .r2; resp3.text = aDocument.contents.questions [num] .r3; resp4.text = aDocument.contents.questions [num] .r4; }

Siç mund ta shohim, ne e kalojmë numrin e pyetjes ku jemi si argument dhe nga këtu ajo vendos përgjigjet në butonat dhe etiketën e pyetjeve. Le të shohim tani për të vërtetuar nëse përgjigja e zgjedhur është e saktë:

funksioni hit (num, opsion) {var hit = false; var num_correcto = aDocument.contents.questions [num] .saktë; nëse (opsioni == numri i saktë) goditi = e vërtetë; kthimi i hitit; }

Kodi flet vetë, në rast se opsioni i zgjedhur është i njëjtë me atë të siguruar nga baza e të dhënave, atëherë do të jetë i vërtetë, përndryshe jo. Tani që kemi përcaktuar këto funksione, ne do t'i zbatojmë ato në kodin tonë qml.

Para së gjithash do të shtojmë një ndryshore që do të jetë ajo që kontrollon në cilën pyetje jemi, ne do ta quajmë num; Do të kemi edhe tre variabla të tjerë: goditje, humbje dhe pikë.

    numri i pronës int: 0 prona e ndërmarrjes: 0 lindje e pronës: 0 pikë e pronës: 0

Fillimisht ata janë të gjithë në 0.

Tani shtojmë një kliko mbi të gjitha butonat e përgjigjes. onClick, siç thotë emri i saj, është një ngjarje që do të ndodhë kur të klikohet butoni:

            Butoni {id: resp1 teksti: spirancat "përgjigje 1" .horizontalQendra: prindi. Gjerësia horizontale e qendrës: gjerësia e prindit. Logjika.pyetja tjetër (num) pikët = pikë + 20 lindje = lindje + 1} tjetër {nfaults = nfaults + 1}}}

Ne shohim që kur klikoni butonin, ajo kontrollon nëse është e saktë apo jo, në rast se është e saktë, shtoni pikat dhe kaloni pyetjen, përndryshe mbetet një jetë.

Më në fund, ne do të bëjmë ngarkesën e parë të pyetjes kur ngarkohet përbërësi i faqes:

    Faqja {id: pageGame Component.onCompleted: {Logic.nextPregunta (0)}

Le të shohim se si doli:

provë


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.

  1.   gabielus dijo

    Unë ndjek hapat dhe gjithçka funksionon. Thjesht për të bashkëpunuar them se:
    * Nuk e ndryshon vlerën e goditjeve dhe humbjeve. Ju duhet ta shtoni atë në secilin buton në ngjarjen tuaj të klikimit.
    * Dhe kjo në rresht:
    nëse (Logjika.acerto (num, 1)) {
    ndryshoni 1 në numrin e butonit / përgjigjes.

    lolbimbo, më duket interesante kontributi juaj. Shpresoj tuto te reja !!!

    Faleminderit për shpërndarjen.

    1.    lolbimbo dijo

      Më pëlqen që i keni komentuar këto pika sepse nuk e kam bërë të qartë në postim, për më tepër, nuk mbaj mend pikët, sukseset dhe dështimet, nëse e shikoni do të shihni se kur të klikojmë në buton, shtojmë pikat e sukseseve ... por ato nuk pasqyrohen në Etiketë, prandaj duhet ta vendosim në pronën e saj të tekstit që tregon pikat:

      Etiketa {
      id: dështimet
      teksti: «Gabimet:» + gabimet
      ngjyra: "e kuqe"
      }

      Etiketa {
      id: godet
      teksti: «Hitet:» + i lindur
      }

      Etiketa {
      id: pikë
      teksti: «Pikët:» + pikë
      fontSize: "mesatare"
      }

      Unë gjithashtu do ta sqaroj atë në pjesën 3.