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

Krijimi i një aplikacioni për Ubuntu Touch

Pjesa e tretë e kësaj serie postimesh (pjesa e parë, pjesa e dytë) ku po ndërtojmë një aplikacion për të Ubuntu prekje ose për të njëjtën gjë Ubuntu desktop Do të shtoj një pjesë që më ka munguar në postimin e mëparshëm, dhe kjo është që megjithëse i rritëm variablat e dështimeve, goditjeve dhe pikëve, atëherë ato nuk u shfaqën në ekran, kjo është për shkak se ne nuk e ndryshuam pronë e tekstit e etiketave:

                Etiketimi {id: teksti i dështimeve: "Dështimet:" + ngjyra e prishjeve: "e kuqe"} Etiketa {id: teksti i goditjeve: "hitet:" + i lindur} Etiketa {id: teksti i pikave: "Pikët:" + shkronjat e pikave Madhësia: "e mesme "}

Vazhdimi i logjikës së lojës

Tiempo

Epo, siç e dimë tashmë, progresBar tregon kohën kur duhet t'i përgjigjemi një pyetjeje. Për të menaxhuar kohën që do të përdorim një Timer, kohëmatësi është një element që përsëritet në një interval prej x milisekonda, në këtë rast çdo interval do t'i themi për të rritur progresin e ProgressBar; Por, para se të shikoj nëse ka arritur në fund të kohës apo jo, nëse arrin në fund, ne duhet të heqim një jetë.

Ju mund të shihni një linjë kodi që ne ende nuk e kemi zbatuar (PopupUtils.open (dialog)), kjo linjë është për të hapur dialogun e lojës së fundit në rast se nuk kemi më jetë (3 mete të eleminuara), më vonë në këtë postim do të shohim se si ta bëjmë këtë dialog.

Kodi i kohëmatësit (mund ta vendosim poshtë ProgressBar):

       ProgressBar {id: anchors time.horizontalCenter: prind.horizontalCenter minimumVlera: 0 maximumValue: 300} Timer {id: simpletimer c: 100 përsëritje: ekzekutimi i vërtetë: e vërtetë nëTriggered: {if (time.value <time.maximumValue) time.value + = 1.0 tjetër {nfaault = nfaault + 1 nëse (nfaault <3) {num = num + 1 Logic.nextQuestion (num) time.value = time.minimumValue} other {simpletimer.stop () PopupUtils.open (dialog)}} }}

Siç mund ta shohim, në onTriggered ne vendosim kodin që do të rrisë progresin duke shtuar 1 njësi çdo 100 (interval) mili-sekonda. Vini re se ne kemi shtuar dy atribute në ProgressBar, minimumValue dhe maximumValue, e cila, siç mund ta shihni, është vlera maksimale dhe vlera minimale.

Për të filluar dhe ndaluar kohëmatësin:

simpletimer.start () simpletimer.stop ()

Opsionet (50%, Freeze dhe Next)

Së pari le të krijojmë tre variabla që kontrollojnë që opsionet mund të përdoren vetëm një herë:

    prona int përqindja: 0 prona int me: 0 prona int tjetër: 0

50%

Butoni {id: b50 teksti: "50%" i aktivizuarKlikuar: {nëse (përqindja == 0) {var e saktë = aDocument.contents.questions [num] .correcta nëse (e saktë == 1) {resp2.enabled = false resp3 aktivizuar = false} përndryshe nëse (e saktë == 2) {resp1.enabled = false resp4.enabled = false} tjetër nëse (e saktë == 3) {resp1.enabled = e rreme resp4.enabled = false} tjetër {resp2.enabled = respekt false 1. i aktivizuar = false} përqind = 1}}

Me të aktivizuar = false ajo që bëjmë është të vendosim butonin në mënyrë që të mos shtypet, në mënyrë të tillë që të marrim përgjigjen e saktë me aDocument.contents.questions [num]. E saktë dhe nga këtu në varësi të asaj që është e saktë «ne eleminoni »Dy butona që nuk janë.

Freeze

                Butoni {id: bCon text: "Freeze" onKlikuar: {if (me == 0) simpletimer.stop () me = 1}}

Kjo është një nga ato më të lehtat, ne thjesht duhet të ndalojmë kohëmatësin me simpletimer.stop (), po, duhet ta ndezim përsëri (dhe ta vendosim ProgresBar në 0) kur kalojmë në pyetje.

Tjetër

                 Butoni {id: bTeksti tjetër: "Tjetri" onKlikuar: {nëse (tjetri == 0) {num = num + 1 Logica.nextPyetja (num) tjetër = 1}}}

Ne përdorim funksionin që tashmë kemi krijuar për të kaluar pyetjen (pyetja tjetër).

Dialogje

Për të përfunduar lojën, ne do të përdorim një Dialog, ose sepse kemi fituar (nuk ka më pyetje) ose sepse kemi humbur (kemi bërë 3 gabime), për të përdorur dialogët duhet të importojmë modulin:

importoni Ubuntu.Komponentët.Popups 0.1

Ne do të krijojmë dialogun që na tregon se kemi humbur:

        Komponenti {id: dialog Dialog {id: titulli i dialogut: "Game Over!" teksti: "Ju keni humbur të gjitha jetët :(" Butoni {teksti: "Dalja" onKlikuar: Qt.quit ()} Butoni {teksti: "Fillo nga e para" ngjyra: UbuntuColors.orange onKlikuar: {num = 0; Logica.nextQuestion (num ) npoints = 0 lindje = 0 PopupUtils.close (dialog)}}}}

Ne kemi dy butona, një për të mbyllur aplikacionin (Qt.quit ()) dhe një tjetër për të filluar lojën nga e para. Ne inicializojmë ndryshoret në 0 dhe mbyllim dialogun.

Për të hapur dialogun:

PopupUtils.open (dialog)

Për ta mbyllur atë:

PopupUtils.close (dialog)

Le të shohim dialogun në fund të lojës:

Ubuntu prekje

Ne mund të krijojmë një dialog saktësisht të njëjtë duke ndryshuar identifikuesin dhe tekstin ku ai thotë se kemi fituar.

Hartimi i përmbledhjes së pyetjeve

Kur e projektojmë atë në GTK, ne krijojmë një dialog, por këtë herë do ta bëjmë atë në një Tab, gjithsesi ai do të ketë të njëjtën strukturë:

Siç mund ta shohim, ne do të përdorim një Etiketë, një TextArea për të shkruar pyetjen, 4 TextField dhe 4 Switch; së fundmi, një Buton për të shtuar pyetjen. Le të shohim vetëm kodin:

importoni QtQuick 2.0 importoni Ubuntu.Komponentët 0.1 Tab {titulli: i18n.tr ("+ Pyetjet") Faqja {id: pageShtoni kolonën {anchors.top: pageAdd.top anchors.topMargin: 50 spacing: 15 width: prind. lartësia e gjerësisë: prind.height - 50 Etiketa {id: teksti i pyetjes: "Shto një pyetje në bazën e të dhënave:" anchors.horizontalCenter: parent.horizontalCenter fontSize: "large"} TextArea {width: parent.width - 20 height: units.gu (12 ) përmbajtja Gjerësia: njësitë.gu (30) përmbajtja Lartësia: njësitë.gu (60) spirancat.horizontalCenter: prind.horizontalCenter} Rreshti {spacing: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {placeholderText: "Përgjigja 1" gjerësia: 300} Ndërrimi {i zgjedhur: i rremë}} Rreshti {ndarja: 15 ankorë.horizontalCenter: prind.horizontalCenter TextField {placeholderText: "Përgjigja 2" gjerësia: 300} Ndërrimi {i zgjedhur: false}} Rreshti {hapësira: 15 ankorë.horizontalCenter: prindi. horizontaleCenter TextField {placeholderText: Gjerësia "Response 3": 300} Switch {check: false}} Row {spacing: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {placeholderText: "Response 4" width: 300} Switch {e kontrolluar: false}} Butoni {teksti: "Shto +" ankorues.horizontalCenter: prind.horizontalGjerësia e qendrës: prind.width - 20}}}}
Nëse ka ndonjë dyshim në lidhje me kodin që ju tashmë e dini komentoni

Le të shohim se si duket:

Kap nga 2014-07-24 16:54:37

Nëse tani testojmë Switches, do të shohim se mund t’i shënojmë të gjithë si pyetja e saktë, dhe natyrisht vetëm një mund të jetë, prandaj do të bëjmë sa vijon: do të jemi në gjendje të sigurojmë një identifikues për secilin ndërprerës (gjithashtu për fushat e tekstit pasi që ne do të duhet të marrim përmbajtjen për ta ruajtur atë në bazën e të dhënave) sipas përgjigjes tuaj, dhe kur ta klikojmë atë do t'i vendosim të gjithë të tjerët në modalitetin e kontrolluar = false:

             Rreshti {spacing: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {id: res1 placeholderTeksti: "Përgjigja 1" gjerësia: 300} Switch {id: sw1 i kontrolluar: false on Klikuar: {if (sw1.checked == true) {sw2. e kontrolluar = sw3. false e kontrolluar = sw4. false e kontrolluar = false =}}}}

Nëse e provojmë tani do të shohim se si mund të shënojmë vetëm një.


4 komente, lini tuajën

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.   vr_rv dijo

    Artikuj shumë të mirë dhe të shpjeguar mirë.
    nga rruga, a rekomandoni disa libra, kanale YouTube ose Blogs që janë në Spanjisht për të mësuar se si të zhvillohen në QML për Ubuntu.

    1.    lolbimbo dijo

      Epo, në Spanjisht ka me siguri disa mësime në YouTube, ose në blogun e çuditshëm, por e vërteta është se ka pak material.

      Unë shoh që ju lidheni përmes një nokia nëse është një simbian i fundit, ju gjithashtu mund të krijoni aplikacione me QML, në të vërtetë kështu mësova, këtu është faqja e internetit e zhvillimit të nokia: http://developer.nokia.com/ (ka mësime, projekte të plota ...)

  2.   nestor dijo

    Seri të shkëlqyera postimesh, faleminderit për kontributin.

  3.   Martí dijo

    Faleminderit për tutorialin,
    Por nuk e kuptoj se si shtohen pyetjet dhe përgjigjet në bazën e të dhënave.
    Me butonin add.
    Faleminderit per gjithcka.