Ukwenza iapp ka-Ubuntu Touch [QML] - [Icandelo 2]

Intshayelelo:

Ewe apha sinesithuba esilandelayo icandelo lokuqalaKule siza kugxila ekuphatheni idatha (imibuzo), kwaye siza kuqala ngenxalenye yomdlalo, kule ilandelayo siza kugqiba ilogo kwaye siphumeze ixesha kunye neenketho ezi-3.

Ungayifumana ikhowudi kwindawo yam yokugcina iLaunchpad (cofa apha), apho ndiza kuyivuselela njengoko ndihamba.

Indawo yogcino lwedatha:

Kwiziko ledatha esiza kulisebenzisa u1db, esisiseko sedatha esigcina idatha kwifomathi JSON.

Okokuqala makhe sibone ukuba yeyiphi idatha ekufuneka siyigcinile, sinombuzo omnye (ngaphandle kwesicatshulwa sombuzo kuya kuba kuhle ukuba nesazisi), ezineempendulo ezi-1 ezinokubakho, inye kuphela eyi-4, yiyo loo nto uxwebhu JSON umbuzo omnye kufuneka:

{ "id": 1, "question": " kuya kubakho i-dev.desdelinux.net ", "iimpendulo" : {r1: "ewe", r2: "hayi", r3: "Andazi", r4: "yimpendulo ebubuxoki le" }, "ilungile": 3 }

Njengoko sibona ukuba sihleleke ngendlela JSON apho sinesazisi, umtya onombuzo kunye no-r1, r2 omele impendulo 1 kunye nempendulo yesi-2, okokugqibela sinazo iimpendulo ezichanekileyo.

Masibone kancinci ukuba isebenza njani i-U1db, into yokuqala ekufuneka siyenzile ukusebenzisa i-U1db kukungenisa imodyuli:

import U1db 1.0 as U1db

Sibhengeza isiseko sedatha:

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

Oovimba beenkcukacha baya kugcinwa njenge-U1DbDatabase.u1db, ngoku senza uxwebhu:

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

Apho singabona khona ifomathi {«molo»: «into»}, ukwenza imibuzo, nokuba yeyokongeza idatha, ukufumana idatha, ukucima njl. Sinento ye-U1db.Query.

Singafumana tutorial kwiwebhusayithi yophuhliso lwe Ubuntu.

Masiye kwisicelo sethu kwaye senze isiseko sedatha, njengoko sibonile ukuba sichaza isiseko sedatha:

U1db.Database {id: db imibuzo; indlela: "imibuzodb.u1db"}

Kulungile, ngoku masibeke izinto ezithile ezingagqibekanga kuxwebhu lwedatha imibuzodb:

    U1db.Document { id: aDocument database: questionsdb docId: 'imibuzo' yenza: ukungagqibeki okuyinyani: { "imibuzo": [ {"umbuzo":"Kuza kubakho i-dev.desdelinux.net ?", "r1":"ewe", "r2":"hayi", "r3":"mpumlo", "r4":"impendulo yobuxoki", "ilungile": "3" }, {"umbuzo ":"Who is Hagrid (Harry Potter)?", "r1":"Usekela-nqununu wesikolo", "r2":"Umgcini-mdlalo", "r3":"The transformation teacher", "r4":" I-prefect", "correct": "2"}, {"question":"Liyintoni ikomkhulu laseIceland?", "r1":"Amsterdam", "r2":"Reykjavik", "r3":" Tbilisi ", "r4":"Almaty", "ilungile": "2"} ] }}

Ndiyazi ukuba ikhowudi ayiboniswanga njengoko kufanelekile, kodwa ukuba sijonga ngokusondeleyo siza kubona ukuba sinento ethile imibuzo, ethi nge »[]» sichaze ukuba kunokubakho izinto ezininzi (azizizo ezimileyo); Kule meko siza kuba ne-4 ngokungagqibekanga, imibuzo emi-4 eneempendulo zazo.

Ukufumana uxwebhu lwezinto JSON, singachaza isazisi soxwebhu esilwenzileyo (eliyile Uxwebhu). Masicinge ukuba sifuna ukufumana isicatshulwa sombuzo wokuqala:

uxwebhu.contents.questions [0]. umbuzo

Lo mgca wekhowudi usibuyisela umbuzo wombuzo woxwebhu aDocument, ye element 0 (eyokuqala kwisalathiso), ethi: «Kuya kubakho dev.desdelinux.net?” Ukuba sibeka inani u-1 kwisalathiso, ngumbuzo wesibini.

Inkqubo yenkqubo yomdlalo

Ewe, ngoku xa siyazi indlela yokusombulula indawo yogcino lwedatha apho sigcine khona imibuzo, siza kucwangcisa umxholo womdlalo. Okokuqala siza kwenza ifayile JavaScript (.js): Yongeza entsha -> Qt -> Ifayile yeJs. Ndizakumtsalela umnxeba Ingqondo. js.

Kwifayile siza kwenza imisebenzi emininzi, ukungenisa ifayile ye-js kuxwebhu lwethu lwe-qml:

ukungenisa "logica.js" njengeLogica

Simanyanisa igama elithi Logica, ke xa sifuna ukubiza umsebenzi siya kuwenza njengeLogica.funcion (), ngokungathi yinto eneendlela zayo.

Okwangoku, ukuze isithuba singabi side kakhulu, siza kushiya ixesha lombuzo kunye nezinto ezinokukhethwa kamva, siya kugxila kwimibuzo nakumanqaku, masibone umsebenzi esiya kuwusebenzisa ukusuka kumbuzo:

umsebenzi olandelayoQuestion (num) {// time = 0 question.text = aDocument.contents.questions [num] .question; resp1.text = uxwebhu.contents.questions [num] .r1; resp2.text = uxwebhu.contents.questions [num] .r2; resp3.text = uxwebhu.okuqulathiweyo.imibuzo [num] .r3; resp4.text = uxwebhu.okuqulathiweyo.imibuzo [num] .r4; }

Njengoko sibona, sidlulisa inombolo yombuzo apho sikhona njengengxabano kwaye ukusuka apha ibeka iimpendulo kumaqhosha nakwilebheli yemibuzo. Masibone ngoku ukuqinisekisa ukuba impendulo ekhethiweyo ichanekile:

umsebenzi hit (num, ukhetho) {var hit = false; var num_correcto = aDocument.contents.questions [num] .ilungile; ukuba (ukhetho == echanekileyo_num) hit = yinyani; buyela hit; }

Ikhowudi iyazithethela, ukuba ukhetho olukhethiweyo luyafana nolo lubonelelwe kwindawo yogcino lwedatha, iya kuba yinyani, kungenjalo ayizukuyenza. Ngoku ekubeni le misebenzi ichaziwe, siya kuyisebenzisa kwikhowudi yethu ye-qml.

Okokuqala siza kudibanisa umahluko oya kuba ngulo ulawula ukuba ngowuphi umbuzo esikuwo, siza kuyibiza ngokuba yi-num; Siza kuba nezinto ezintathu eziguquguqukayo: ukubetha, ukuphosa kunye namanqaku.

    ipropathi int num: 0 ipropathi ukungafezekisi: 0 ipropathi int ukuzalwa: 0 ipropathi int npoints: 0

Ekuqaleni bonke bakwi-0.

Ngoku sidibanisa onClick kuwo onke amaqhosha empendulo. onClick, njengoko igama lisitsho, sisiganeko esiza kwenzeka xa ucofa eli qhosha:

            Iqhosha {id: isicatshulwa se-resp1: "Impendulo 1" ii-anchors.horizontalCenter: parent.horizontalCenter wide: parent.width - 20 onCofed: {if (Logic.certain (num, 1)) {num = num + 1; Logic.nextPregunta (num) npoints = npoints + 50 births = births + 1} else {nfaults = nfaults + 1}}}

Siyabona ukuba ngokunqakraza kwiqhosha, lijonga ukuba lichanekile na okanye akunjalo, ukuba lichanekile, yongeza amanqaku kwaye upase umbuzo, kungenjalo ubomi obunye buhlala.

Okokugqibela siya kwenza umthwalo wokuqala wokulayisha xa icandelo lephepha lilayisha:

    Iphepha {id: iphephaGame Component.onCompleted: {Logic.nextPregunta (0)}

Makhe sibone ukuba kwenzeke njani:

uvavanyo


Shiya uluvo lwakho

Idilesi yakho ye email aziyi kupapashwa. ezidingekayo ziphawulwe *

*

*

  1. Uxanduva lwedatha: UMiguel Ángel Gatón
  2. Injongo yedatha: Ulawulo lwe-SPAM, ulawulo lwezimvo.
  3. Umthetho: Imvume yakho
  4. Unxibelelwano lwedatha: Idatha ayizukuhanjiswa kubantu besithathu ngaphandle koxanduva lomthetho.
  5. Ukugcinwa kweenkcukacha
  6. Amalungelo: Ngalo naliphi na ixesha unganciphisa, uphinde uphinde ucime ulwazi lwakho.

  1.   UGabielus sitsho

    Ndilandela amanyathelo kwaye yonke into iyasebenza. Ukusebenzisana nje nditsho ukuba:
    * Ayitshintshi ixabiso lokubetha kunye nokuphosa. Kuya kufuneka uyongeze kwiqhosha ngalinye kumsitho wakho wokucofa.
    * Kwaye oko kumgca:
    ukuba (i-Logic.acerto (num, 1)) {
    Kuya kufuneka utshintshe i-1 ngenani leqhosha / impendulo.

    lolbimbo, ndiyalifumana igalelo lakho linomdla. Ndiyathemba iitutos ezintsha !!!

    Enkoso ngokwabelana.

    1.    lolbimbo sitsho

      Ndiyathanda ukuba ubeke izimvo kwezi zinto ngenxa yokuba ndingakhange ndicacise eposini, nangaphezulu, andizikhumbuli iingongoma, impumelelo kunye nokusilela, ukuba uyajonga uza kubona ukuba xa sicofa iqhosha, sidibanisa amanqaku impumelelo ... kodwa aziboniswanga kwiLebheli, yiyo loo nto kufuneka siyibeke kwindawo yokubhaliweyo ebonisa amanqaku:

      Ileta {
      id: ukusilela
      okubhaliweyo: «Iimpazamo:» + nfaults
      umbala: "bomvu"
      }

      Ileta {
      id: ibetha
      umbhalo: «Ukubetha:» + ukuzalwa
      }

      Ileta {
      id: amanqaku
      umbhalo: «Amanqaku:» + amanqaku
      IfontiSize: "phakathi"
      }

      Ndiza kuyicacisa kwinxalenye yesi-3.