Ukwakha uhlelo lokusebenza lwe-Ubuntu Touch [QML] - [Ingxenye 2]

Isingeniso:

Kulapha sinokuthunyelwe okulandelayo ingxenye yokuqalaKulena sizogxila ekuphatheni idatha (imibuzo), futhi sizoqala ngengxenye yomdlalo yomdlalo, kokulandelayo sizoqedela umqondo bese sisebenzisa isikhathi nezinketho ezi-3.

Ungathola ikhodi endaweni yami yokugcina iLaunchpad (chofoza lapha), lapho ngizoyibuyekeza khona njengoba ngihamba.

Isizindalwazi:

Okwe-database esizokusebenzisa u1db, okuyi-database egcina idatha ngefomethi I-JSON.

Okokuqala ake sibheke ukuthi iyiphi idatha okufanele siyigcine, sinombuzo ongu-1 (ngaphandle kombhalo wombuzo kungaba kuhle ukuba nesikhombi), nezimpendulo ezi-4 ezingenzeka, okungu-1 kuphela ongaba kuzo, ngakho-ke I-JSON umbuzo owodwa kufanele ube:

{
"id": 1,
"pregunta": " habra dev.desdelinux.net ",
"respuestas" : { r1: "si" , r2: "no" , r3: "no se sabe" ,  r4: "esto es una respuesta falsa" },
"correcta": 3
}

Njengoba sibona sihleleke ngefomethi I-JSON lapho sinesikhombi, umucu onombuzo no-r1, r2 omele impendulo 1 nempendulo 2, ekugcineni sinazo izimpendulo ezifanele.

Ake sibheke kancane ukuthi i-U1db isebenza kanjani, into yokuqala okufanele siyenze ukusebenzisa i-U1db ukungenisa imodyuli:

import U1db 1.0 as U1db

Simemezela i-database:

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

Imininingwane izogcinwa njenge-aU1DbDatabase.u1db, manje sakha idokhumenti:

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

Lapho singabona khona ifomethi {«sawubona»: «okuthile»}, ukwenza imibuzo, kungaba ukufaka imininingwane, ukuthola idatha, ukuyisusa njll. Sinezinto ze-U1db.Query.

Singathola ifayela le- Ukufundisa kuwebhusayithi yentuthuko ye- Ubuntu.

Ake siye kwisicelo sethu bese senza i-database yethu, njengoba sibonile sichaza i-database:

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

Kulungile, manje ake sibeke ezinye izinto ezizenzakalelayo kudokhumenti yemininingwane yedatha:

    U1db.Document {
        id: aDocument
        database: preguntasdb
        docId: 'preguntas'
        create: true
        defaults: { "preguntas":
                    [
                        {"pregunta":"Habra dev.desdelinux.net ?", 
                        "r1":"si", "r2":"no", "r3":"nose", 
                        "r4":"respuesta falsa", "correcta": "3" },
                        {"pregunta":"Quien es hagrid (harry potter) ?", 
                        "r1":"El vicedirector de la escuela", 
                        "r2":"El guardabosques", 
                        "r3":"El profesor de transformaciones", 
                        "r4":"Un prefecto", 
                        "correcta": "2"},
                        {"pregunta":"¿Cúal es la capital de Islandia?", 
                       "r1":"Amsterdam",
                       "r2":"Reykjavik", 
                       "r3":"Tiflis", 
                       "r4":"Almaty",
                       "correcta": "2"}
                    ] }
    }

Ngiyazi ukuthi ikhodi ayiboniswa ngendlela efanele, kepha uma sibheka sizobona ukuthi sinento ethile • Umfundzisi angabuta umbuto, okuyinto nge »[]» sicacisa ukuthi kungaba nezinto eziningana (akuzona ezi-static); kulokhu sizokuba nemibuzo engu-4 ngokuzenzakalela, imibuzo emi-4 enezimpendulo zazo.

Ukuthola izinto zedokhumenti I-JSON, singacacisa okokuhlonza idokhumenti esiyenzile (okuyi- Umbhalo). Ake sicabange ukuthi sifuna ukuthola umbhalo wombuzo wokuqala:

Imibhalo.okuqukethwe.imibuzo [0] yombhalo

Esta línea de código nos retorna el contenido de pregunta del documento aDocument, del elemento 0 (el primero del índice), que es: «Habra dev.desdelinux.net?». Si ponemos en el índice el número 1, entonces seáa la segunda pregunta.

Ukuhlela umqondo wegeyimu

Manje, njengoba sesazi ukuphatha idatha egciniwe lapho sigcine khona imibuzo, sizohlela umqondo womdlalo. Okokuqala sizokwakha ifayili i-JavaScript (.js): Faka okusha -> Qt -> Js File. Ngizomshayela logic.js.

Kuleli fayela sizokwakha imisebenzi eminingana, ukungenisa ifayela le-js kudokhumenti yethu ye-qml:

ngenisa "logica.js" njengeLogica

Sihlanganisa igama elithi Logica, ngakho-ke lapho sifuna ukubiza umsebenzi sizowenza njengeLogica.funcion (), njengokungathi yinto enezindlela zayo.

Okwamanje, ukuze iposi lingabi lide kakhulu, sizoshiya isikhathi sombuzo nezinketho ngokuhamba kwesikhathi, sizogxila emibuzweni nasemaphoyinti, ake sibone umsebenzi esizowusebenzisa ukuqhubeka kusuka umbuzo:

umsebenzi olandelayoQuestion (num) {// time = 0 question.text = aDocument.contents.questions [num] .question; 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; }

Njengoba sikwazi ukubona, sidlulisa inombolo yombuzo lapho sikhona njengengxabano futhi ukusuka lapha ibeka izimpendulo ezinkinobho nakulebula lemibuzo. Ake sibheke manje ukuqinisekisa ukuthi impendulo ekhethiwe ilungile:

umsebenzi hit (num, inketho) {var hit = false; var num_correct = aDocument.contents.questions [num] .lungile; uma (inketho == correct_num) hit = kuyiqiniso; buyisa hit; }

Ikhodi iyazikhulumela, uma inketho ekhethiwe ifana naleyo enikezwe i-database, khona-ke kuzoba yiqiniso, ngaphandle kwalokho ngeke. Manje njengoba le misebenzi ichaziwe, sizoyisebenzisa kukhodi yethu ye-qml.

Okokuqala sizofaka okuguquguqukayo okuzolawula ukuthi sikuphi umbuzo, sizoyibiza nge-num; Sizoba nokuhlukahluka okuthathu okunye: ukushaya, ukugeja namaphuzu.

    impahla int num: 0 impahla int nfaults: 0 impahla int births: 0 impahla int npoints: 0

Ekuqaleni bonke bakwi-0.

Manje sengeza i-onClick kuzo zonke izinkinobho zokuphendula. onClick, njengoba kusho igama layo, kungumcimbi ozokwenzeka lapho inkinobho ichofozwa:

            Inkinobho {id: resp1 text: "Response 1" anchors.horizontalCenter: parent.horizontalCenter width: parent.width - 20 onClick: {if (Logic.cert (num, 1)) {num = num + 1; Logic.nextPregunta (num) npoints = npoints + 50 births = births + 1} else {nfaults = nfaults + 1}}}

Siyabona ukuthi uma uchofoza inkinobho, ibheka ukuthi ilungile noma cha, uma kunjalo, engeza amaphuzu bese uphumelela umbuzo, uma kungenjalo kusala impilo eyodwa.

Ekugcineni sizokwenza umthwalo wokuqala wokulayisha lapho ingxenye yekhasi ilayisha:

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

Ake sibone ukuthi kwenzeka kanjani:

test


Amazwana ayi-2, shiya okwakho

Shiya umbono wakho

Ikheli lakho le ngeke ishicilelwe. Ezidingekayo ibhalwe nge *

*

*

  1. Ubhekele imininingwane: Miguel Ángel Gatón
  2. Inhloso yedatha: Lawula Ugaxekile, ukuphathwa kwamazwana.
  3. Ukusemthethweni: Imvume yakho
  4. Ukuxhumana kwemininingwane: Imininingwane ngeke idluliselwe kubantu besithathu ngaphandle kwesibopho esisemthethweni.
  5. Isitoreji sedatha: Idatabase ebanjwe yi-Occentus Networks (EU)
  6. Amalungelo: Nganoma yisiphi isikhathi ungakhawulela, uthole futhi ususe imininingwane yakho.

  1.   UGabielus kusho

    Ngilandela izinyathelo futhi konke kuyasebenza. Ukusebenzisana nje ngithi:
    * Ayishintshi inani lamahithi nophuthelwe. Kufanele ukwengeze lokho kunkinobho ngayinye kumcimbi wakho wokuchofoza.
    * Futhi lokho kulayini:
    uma (Logic.acerto (num, 1)) {
    Kufanele ushintshe u-1 ngenombolo yenkinobho / impendulo.

    lolbimbo, ngithola umnikelo wakho uthakazelisa. Ngiyethemba ama-tutos amasha !!!

    Siyabonga ngokwabelana.

    1.    lolbimbo kusho

      Ngithanda ukuthi uphawule ngala maphuzu ngoba angikucacisanga eposini, ngaphezu kwalokho, angiwakhumbuli amaphuzu, impumelelo nokwehluleka, uma ubheka uzobona ukuthi lapho sicindezela inkinobho, sengeza amaphuzu impumelelo ... kepha awakhonjiswa kulebuli, yingakho kufanele sikubeke endaweni yombhalo wayo ukukhombisa amaphuzu:

      Ilebula {
      id: ukwehluleka
      umbhalo: «Amaphutha:» + nfaults
      umbala: "obomvu"
      }

      Ilebula {
      id: hits
      umbhalo: «Hits:» + owazalwa
      }

      Ilebula {
      id: amaphuzu
      umbhalo: «Amaphuzu:» + amaphuzu
      fontSize: "okuphakathi"
      }

      Ngizokucacisa futhi engxenyeni 3.