Skep 'n app vir Ubuntu Touch [QML] - [Deel 3]

Skep 'n app vir Ubuntu Touch

Derde deel van hierdie posreeks (eerste deel, tweede deel) waar ons 'n aansoek opstel Ubuntu Touch of vir dieselfde Ubuntu lessenaar. Ek gaan 'n gedeelte byvoeg wat ek in die vorige berig gemis het, en dit is dat, alhoewel ons die veranderlikes van die mislukkings, treffers en punte vergroot het, dit nie op die skerm gewys is nie, dit is omdat ons nie die tekseienskap van die etikette:

                Etiket {id: mislukkings teks: "Mislukkings:" + nfoute kleur: "rooi"} Etiket {id: treffers teks: "Treffer:" + gebore} Etiket {id: punte teks: "Punte:" + npunte lettertipe Grootte: "medium "}

Voortsetting van die spellogika

Tyd

Wel, soos ons reeds weet, wys die progressBar die tyd om 'n vraag te beantwoord. Om die tyd wat ons 'n timer gebruik, te bestuur, is die timer 'n element wat herhaal word met 'n interval van x millisekondes. In hierdie geval sal ons elke interval vertel dat dit die vordering van die ProgressBar sal verhoog; Maar voordat ek kyk of dit die einde van die tyd bereik het of nie, as dit die einde bereik, moet ons 'n lewe aftrek.

U kan 'n kode kode sien wat ons nog nie geïmplementeer het nie (PopupUtils.open (dialoog)), hierdie lyn is om die eindspel-dialoog te open as ons nie meer lewens het nie (3 foute is uitgeskakel), later in hierdie pos sal ons sien hoe om hierdie dialoog te voer.

Timerkode (ons kan dit onder die ProgressBar plaas):

       ProgressBar {id: time anchors.horizontalCenter: parent.horizontalCenter minimumValue: 0 maximumValue: 300} Timer {id: simpletimer c: 100 repeat: true running: true onTriggered: {if (time.value <time.maximumValue) time.value + = 1.0 anders {nfoute = nfoute + 1 as (nfoute <3) {num = num + 1 Logic.nextQuestion (num) time.value = time.minimumValue} anders {simpletimer.stop () PopupUtils.open (dialoog)}} }}

Soos ons kan sien, sit ons in onTriggered die kode wat die vorderingsbalk sal verhoog, en voeg elke 1 een (interval) milli-sekondes. Let daarop dat ons twee eienskappe by die ProgressBar gevoeg het, minimumwaarde en maksimumwaarde, wat, soos u kan sien, die maksimum en die minimum waarde is.

Om die timer te begin en te stop:

simpletimer.start () simpletimer.stop ()

Opsies (50%, vries en volgende)

Laat ons eers drie veranderlikes skep wat bepaal dat die opsies net een keer gebruik kan word:

    eiendom int persent: 0 eiendom int met: 0 eiendom int volgende: 0

50%

Knoppie {id: b50 teks: "50%" opKlik: {if (percent == 0) {var correct = aDocument.contents.questions [num] .correcta if (correct == 1) {resp2.enabled = false resp3. ingeschakeld = vals} anders indien (correct == 2) {resp1. geactiveerd = vals resp4.enabled = vals} anders as (correct == 3) {resp1.enabled = vals resp4.enabled = false} anders {resp2.enabled = vals resp1. ingeschakeld = onwaar} persent = 1}}

Met geaktiveerd = onwaar is dit wat ons doen om die knoppie te plaas sodat dit nie ingedruk kan word nie, op so 'n manier dat ons die korrekte antwoord met aDocument.contents.questions [num] kry. Korrek en vanaf hier afhangend van watter een korrek is «ons skakel uit »Twee knoppies wat nie is nie.

vries

                Knoppie {id: bCon teks: "Freeze" onKlik: {if (met == 0) simpletimer.stop () met = 1}}

Dit is een van die maklikste; ons moet net die timer stop met simpletimer.stop (), ja, ons moet dit weer aanskakel (en die progressBar op 0 stel) as ons deur die vraag gaan.

volgende

                 Knoppie {id: bVolgende teks: "Volgende" opKlik: {if (volgende == 0) {num = num + 1 Logic.nextQuestion (num) volgende = 1}}}

Ons gebruik die funksie wat ons reeds geskep het om die vraag deur te gee (volgende vraag).

Gesprekke

Om die spel te beëindig, sal ons 'n dialoog gebruik, óf omdat ons gewen het (daar is nie meer vrae nie) óf omdat ons verloor het (ons het 3 foute gemaak). Om die dialoog te gebruik, moet ons die module invoer:

invoer Ubuntu.Components.Popups 0.1

Ons gaan die dialoog skep wat ons vertel dat ons verloor het:

        Komponent {id: dialoog Dialoog {id: dialoog titel: "Game Over!" teks: "U het alle lewens verloor :(" Button {text: "Quit" onKlik: Qt.quit ()} Button {text: "Begin oor" kleur: UbuntuColors.orange onClicked: {num = 0; Logica.nextQuestion (num ) npunte = 0 geboortes = 0 PopupUtils.close (dialoog)}}}}

Ons het twee knoppies, een om die toepassing te sluit (Qt.quit ()) en een om die spel oor te begin. Ons initialiseer die veranderlikes na 0 en sluit die dialoog.

Om die dialoog oop te maak:

PopupUtils.open (dialoog)

Om dit te sluit:

PopupUtils.close (dialoog)

Kom ons kyk na die dialoog aan die einde van die wedstryd:

Ubuntu Touch

Ons kan presies dieselfde dialoog skep deur die identifiseerder en die teks te verander waar dit sê dat ons gewen het.

Ontwerp die vraag

Wanneer ons dit ontwerp in GTK, ons skep 'n dialoog, maar hierdie keer sal ons dit in 'n oortjie doen, maar dit sal in elk geval dieselfde struktuur hê:

Soos ons kan sien, sal ons 'n etiket, 'n TextArea gebruik om die vraag 4 TextField en 4 Switch te skryf; laastens 'n knoppie om die vraag by te voeg. Kom ons kyk net na die kode:

invoer QtQuick 2.0 invoer Ubuntu.Components 0.1 Tab {title: i18n.tr ("+ Vrae") Bladsy {id: bladsy Voeg kolom by {anchors.top: pageAdd.top anchors.top Marge: 50 spasiëring: 15 breedte: ouer.breedte hoogte: parent.height - 50 Etiket {id: vraagteks: "Voeg 'n vraag by die databasis:" anchors.horizontalCenter: parent.horizontalCenter fontSize: "large"} TextArea {width: parent.width - 20 height: units.gu (12 ) contentWidth: units.gu (30) contentHeight: units.gu (60) anchors.horizontalCenter: parent.horizontalCenter} Row {spacing: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {placeholderText: "Response 1" width: 300} Skakel {gekies: onwaar}} Ry {spasiëring: 15 anchors.horizontalCenter: ouer.horizontalCenter TextField {placeholderText: "Antwoord 2" breedte: 300} Skakelaar {gekies: onwaar}} Ry {spasiëring: 15 anchors.horizontalCenter: ouer. horizontalCenter TextField {placeholderText: "Response 3" width: 300} Switch {marked: false}} Row {spacing: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {placeholderText: "Response 4" width: 300} Switch {aangevinkt: onwaar}} Knoppie {text: "Voeg +" anchors.horizontalCenter: parent.horizontalCenter breedte: parent.width - 20}}}}
As u twyfel oor die kode, weet u reeds

Kom ons kyk hoe dit lyk:

Vaslegging van 2014-07-24 16:54:37

As ons nou die skakelaars toets, sal ons sien dat ons dit almal as die regte vraag kan merk, en natuurlik net een kan wees, daarom sal ons die volgende doen: ons sal in staat wees om elke skakelaar te identifiseer (ook om die teksvelde aangesien ons die inhoud sal moet kry om dit in die databasis te stoor) volgens u antwoord, en as ons daarop klik, sal ons al die ander in gekontroleerde = onwaar modus plaas:

             Ry {spasiëring: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {id: res1 placeholderText: "Response 1" breedte: 300} Skakelaar {id: sw1 gemerk: vals aan Geklik: {if (sw1.checked == true) {sw2. gemerk = vals sw3.checked = vals sw4.checked = false}}}}

As ons dit nou probeer, sal ons sien hoe ons net een kan merk.


Die inhoud van die artikel voldoen aan ons beginsels van redaksionele etiek. Klik op om 'n fout te rapporteer hier.

4 kommentaar, los joune

Laat u kommentaar

Jou e-posadres sal nie gepubliseer word nie. Verpligte velde gemerk met *

*

*

  1. Verantwoordelik vir die data: Miguel Ángel Gatón
  2. Doel van die data: Beheer SPAM, bestuur van kommentaar.
  3. Wettiging: U toestemming
  4. Kommunikasie van die data: Die data sal nie aan derde partye oorgedra word nie, behalwe deur wettige verpligtinge.
  5. Datastoor: databasis aangebied deur Occentus Networks (EU)
  6. Regte: U kan u inligting te alle tye beperk, herstel en verwyder.

  1.   vr_rv dijo

    Baie goeie en goed verduidelikde artikels.
    Terloops, jy beveel 'n paar boeke, YouTube-kanale of blogs in Spaans aan om te leer hoe om in QML vir Ubuntu te ontwikkel.

    1.    lolbimbo dijo

      Wel, in Spaans is daar sekerlik tutoriale op YouTube, of die vreemde blog, maar die waarheid is dat daar min materiaal is.

      Ek sien dat u via 'n nokia verbinding maak as dit 'n simbian van die laaste is, u kan ook toepassings met QML skep, dit is eintlik hoe ek geleer het. Hier is die nokia-ontwikkelingswebwerf: http://developer.nokia.com/ (daar is tutoriale, volledige projekte ...)

  2.   Nestor dijo

    Uitstekende posreeks, dankie vir die insette.

  3.   Martí dijo

    Dankie vir die tutoriaal,
    Maar ek verstaan ​​nie hoe die vrae en antwoorde in die databasis gevoeg word nie.
    Met die knoppie byvoeg.
    Dankie vir alles.