Ag cruthú aip do Ubuntu Touch [QML] - [Cuid 2]

Réamhrá:

Bhuel anseo tá an post againn a leanann an an chéad chuidSa cheann seo beimid ag díriú ar na sonraí (ceisteanna) a láimhseáil, agus tosóimid leis an gcuid loighic den chluiche, sa chéad cheann eile críochnóimid an loighic agus cuirfimid an t-am agus na 3 rogha i bhfeidhm.

Is féidir leat an cód a fháil i mo stór Launchpad (cliceáil anseo), áit a ndéanfaidh mé é a nuashonrú de réir mar a rachaidh mé.

Bunachar Sonraí:

Úsáidfimid an bunachar sonraí U1db, ar bunachar sonraí é a shábhálann na sonraí san fhormáid JSON.

Ar an gcéad dul síos, féach dúinn na sonraí ba cheart dúinn a shábháil, tá 1 cheist againn (seachas téacs na ceiste, bheadh ​​sé go deas aitheantóir a bheith againn), le 4 fhreagra féideartha, nach féidir ach 1 díobh a bheith mar sin an doiciméad JSON ba chóir go mbeadh ceist amháin:

{"id": 1, "question": "beidh dev.fromlinux.net", "freagraí": {r1: "tá", r2: "níl", r3: "ní fios", r4: "freagra bréagach é seo"}, "ceart": 3}

Mar a fheicimid tá formáid struchtúrtha againn JSON sa chás go bhfuil aitheantóir againn, sreang leis an gceist agus r1, r2 a léiríonn freagra 1 agus freagra 2, faoi dheireadh tá ceann de na freagraí atá ceart againn.

Feicfimid beagán mar a oibríonn U1db, is é an chéad rud a chaithfimid a dhéanamh chun U1db a úsáid ná an modúl a iompórtáil:

import U1db 1.0 as U1db

Dearbhaímid an bunachar sonraí:

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

Sábhálfar na bunachair sonraí mar aU1DbDatabase.u1db, cruthaímid doiciméad anois:

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

Nuair is féidir linn an fhormáid {«dia duit»: «rud»} a fheiceáil, chun ceisteanna a fhorghníomhú, chun sonraí a chur leis, sonraí a fháil, iad a scriosadh srl. Tá an ghné U1db.Query againn.

Is féidir linn teacht ar teagaisc ar shuíomh Gréasáin forbartha ubuntu.

Téigh chuig ár bhfeidhmchlár agus cruthaímid ár mbunachar sonraí, mar a chonaiceamar sainmhínímid an bunachar sonraí:

U1db.Database {id: ceisteanna db; cosán: "ceisteannadb.u1db"}

Ceart go leor, anois déanaimis roinnt eilimintí réamhshocraithe a chur sa doiciméad bunachar sonraí ceisteandb:

    U1db.Document {id: aDocument database: questiondb docId: cruthaíonn 'ceisteanna': fíor-mhainneachtainí: {"ceisteanna": [{"ceist": "An mbeidh dev.fromlinux.net ann?", "R1": "tá" , "r2": "níl", "r3": "srón", "r4": "freagra bréagach", "ceart": "3"}, {"ceist": "Cé hé hagrid (harry potter)?" , "r1": "Leas-phríomhoide na scoile", "r2": "An saoiste", "r3": "Múinteoir na gclaochlú", "r4": "A reachtaire", "ceart": "2" }, {"question": "Cad é príomhchathair na hÍoslainne?", "R1": "Amstardam", "r2": "Reykjavik", "r3": "Tbilisi", "r4": "Almaty", " ceart ":" 2 "}]}}

Is eol dom nach dtaispeántar an cód mar ba chóir, ach má fhéachaimid go géar feicfimid go bhfuil gné againn ceisteanna, a sonraímid leis an »[]» gur féidir go mbeadh roinnt eilimintí ann (níl siad statach); sa chás seo beidh 4 cheist againn de réir réamhshocraithe, 4 cheist lena bhfreagraí faoi seach.

Chun na heilimintí doiciméad a fháil JSON, is féidir linn aitheantóir an doiciméid atá cruthaithe againn a shonrú (.i aDoiciméad). Samhlaímid go dteastaíonn uainn téacs na chéad ceiste a fháil:

aDocument.contents.questions [0] .question

Tugann an líne seo de chód ábhar ceiste an doiciméid aDocument, eilimint 0 (an chéad cheann den innéacs), is é sin: "An mbeidh dev.fromlinux.net ann?". Má dhéanaimid innéacsú ar uimhir 1, ansin téann sé chuig an dara ceist.

Loighic an chluiche a chlárú

Bhuel, anois go bhfuil a fhios againn conas beagán den bhunachar sonraí a láimhseáil mar a shábháil muid na ceisteanna, táimid chun loighic an chluiche a chlárú. Ar dtús báire cruthóimid comhad JavaScript (.js): Cuir nua -> Qt -> Js File. Glaofaidh mé air loighic.js.

Sa chomhad táimid chun roinnt feidhmeanna a chruthú, chun an comhad js a iompórtáil isteach inár ndoiciméad qml:

"logica.js" a iompórtáil mar Logica

Comhcheanglaímid an t-ainm Logica, mar sin nuair a theastaíonn uainn feidhm a ghlaoch déanfaimid é mar Logica.function (), amhail is dá mba rud é a bhfuil na modhanna aige.

Go dtí seo, ionas nach n-éireoidh an post ró-fhada, fágfaimid am na ceiste agus na roghanna níos déanaí, beimid ag díriú ar na ceisteanna agus na pointí, feicfimid feidhm a úsáidfimid chun bogadh ar aghaidh ón ceist:

feidhm nextQuestion (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; }

Mar a fheicimid, pas againn uimhir na ceiste mar a bhfuilimid mar argóint agus as seo cuireann sé na freagraí ar na cnaipí agus ar lipéad na ceiste. Feicfimid anois bailíochtú an bhfuil an freagra roghnaithe ceart:

feidhm buailte (num, rogha) {var hit = bréagach; var num_correcto = aDocument.contents.questions [num] .correct; más rud é (rogha == correct_num) bhuail = fíor; ais bhuail; }

Labhraíonn an cód as féin, i gcás go bhfuil an rogha roghnaithe mar an gcéanna leis an gceann a sholáthraíonn an bunachar sonraí, ansin beidh sé fíor, murach sin ní bheidh. Anois go bhfuil na feidhmeanna seo sainithe againn, cuirfimid i bhfeidhm iad inár gcód qml.

Ar dtús báire cuirfimid athróg leis a rialóidh cén cheist atá againn, cuirfimid num air; Beidh trí athróg eile againn freisin: amas, mianta agus pointí.

    maoin int num: 0 mainneachtainí intí maoine: 0 maoin int breitheanna: 0 maoin int npoints: 0

Ar dtús tá siad ar fad ag 0.

Anois cuirimid onClick leis na cnaipí freagraí go léir. Is imeacht é onClick, mar a deir a ainm, a tharlóidh nuair a chliceálfar an cnaipe:

            Cnaipe {id: resp1 text: "Freagra 1" anchors.horizontalCenter: leithead tuismitheora.horizontalCenter: parent.width - 20 onClicked: {if (Logic.ainty (num, 1)) {num = num + 1; Logic.nextPregunta (num) npoints = npoints + 50 breithe = breitheanna + 1} eile {nfaults = nfaults + 1}}}

Feicimid, trí chliceáil ar an gcnaipe, go seiceálann sé an bhfuil sé ceart nó nach bhfuil, ar eagla go bhfuil sé ceart, cuir na pointí leis agus pas a fháil sa cheist, ar shlí eile fanann saol amháin.

Faoi dheireadh déanfaimid an chéad cheist a luchtú nuair a bheidh an chomhpháirt Leathanach luchtaithe:

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

A ligean ar a fheiceáil conas a d'éirigh sé amach:

tástáil


Cloíonn ábhar an ailt lenár bprionsabail eitic eagarthóireachta. Chun earráid a thuairisciú cliceáil anseo.

2 trácht, fág mise

Fág do thrácht

Ní thabharfar do sheoladh r-phoist a fhoilsiú. Réimsí riachtanacha atá marcáilte le *

*

*

  1. Freagrach as na sonraí: Miguel Ángel Gatón
  2. Cuspóir na sonraí: SPAM a rialú, bainistíocht trácht.
  3. Legitimation: Do thoiliú
  4. Na sonraí a chur in iúl: Ní chuirfear na sonraí in iúl do thríú páirtithe ach amháin trí oibleagáid dhlíthiúil.
  5. Stóráil sonraí: Bunachar sonraí arna óstáil ag Occentus Networks (EU)
  6. Cearta: Tráth ar bith is féidir leat do chuid faisnéise a theorannú, a aisghabháil agus a scriosadh.

  1.   Gabielus a dúirt

    Leanaim na céimeanna agus oibríonn gach rud. Chun comhoibriú a rá deirim:
    * Ní athraíonn luach amas agus caillte. Caithfidh tú é sin a chur le gach cnaipe i d’imeacht cliceáil.
    * Agus sin sa líne:
    más rud é (Logic.acerto (num, 1)) {
    Caithfidh tú an 1 a athrú le haghaidh uimhir an chnaipe / fhreagra.

    lolbimbo, is dóigh liom go bhfuil do chuidiú suimiúil. Tá súil agam tutos nua !!!

    Go raibh maith agat as a roinnt.

    1.    lolbimbo a dúirt

      Is maith liom go ndearna tú trácht ar na pointí seo mar níor chuir mé in iúl go soiléir sa phost é, níos mó ná sin, ní cuimhin liom na pointí, na héachtaí agus na teipeanna, má fhéachann tú air feicfidh tú é sin nuair a chliceálann muid an cnaipe, cuirimid na pointí leis na héachtaí ... ach ní léirítear iad sa Lipéad, agus sin an fáth go gcaithfimid é a chur ina mhaoin téacs chun na pointí a thaispeáint:

      Lipéad {
      id: teipeanna
      téacs: «Lochtanna:» + mainneachtainí
      dath: "dearg"
      }

      Lipéad {
      id: amas
      téacs: «Hits:» + rugadh
      }

      Lipéad {
      id: pointí
      téacs: «Pointí:» + npoints
      fontSize: "meánach"
      }

      Déanfaidh mé é a shoiléiriú i gcuid 3 freisin.