Opprette en app for Ubuntu Touch [QML] - [Del 3]

Opprette en app for Ubuntu Touch

Tredje del av denne innleggsserien (del en, andre del) der vi bygger en søknad til Ubuntu Touch eller for det samme Ubuntu skrivebordet. Jeg skal legge til en del som skjedde med meg i forrige innlegg, og det er at selv om vi økte variablene for feil, treff og poeng, så ble de ikke vist på skjermen, det er fordi vi ikke endret Etikettens tekstegenskap:

                Etikett {id: feil tekst: "Feil:" + nfeil farge: "rød"} Etikett {id: treffer tekst: "Treff:" + født} Etikett {id: poeng tekst: "Poeng:" + npoints fontSize: "medium "}

Fortsettelse av spilllogikken

Tid

Vel, som vi allerede vet, viser progressBar tiden vi har til å svare på et spørsmål. For å styre tiden vi vil bruke en timer, er timeren et element som gjentas med et intervall på x millisekunder. I dette tilfellet vil hvert intervall fortelle det å øke fremdriften til ProgressBar; Men før jeg ser på om den har nådd slutten av tiden eller ikke, i tilfelle den når slutten, må vi trekke et liv.

Du kan se en kodelinje som vi ennå ikke har implementert (PopupUtils.open (dialog)), denne linjen er å åpne sluttspilldialogen i tilfelle vi ikke har flere liv (3 feil eliminert), senere i dette innlegget vil vi se hvordan vi kan gjøre denne dialogen.

Tidtakerkode (vi kan sette den under ProgressBar):

       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 annet {nfaults = nfaults + 1 if (nfaults <3) {num = num + 1 Logic.nextQuestion (num) time.value = time.minimumValue} else {simpletimer.stop () PopupUtils.open (dialog)}} }}

Som vi kan se, i onTriggered setter vi koden som vil øke fremdriftslinjen og legger til 1 enhet hver 100 (pause) milli-sekunder. Merk at vi har lagt til to attributter til ProgressBar, minimumValue og maximumValue, som, som du kan se, er maksimumsverdi og minimumsverdi.

Slik starter og stopper du timeren:

simpletimer.start () simpletimer.stop ()

Alternativer (50%, Frys og Neste)

La oss først lage tre variabler som styrer at alternativene bare kan brukes en gang:

    eiendom int prosent: 0 eiendom int med: 0 eiendom int neste: 0

50%

Knapp {id: b50 tekst: "50%" påKlikket: {if (prosent == 0) {var korrekt = aDokument.innhold.spørsmål [num] .correcta hvis (riktig == 1) {resp2.enabled = falsk resp3. aktivert = false} annet hvis (korrekt == 2) {resp1.enabled = false resp4.enabled = false} annet hvis (correct == 3) {resp1.enabled = false resp4.enabled = false} annet {resp2.enabled = false resp1.enabled = false} prosent = 1}}

Med aktivert = usant er det vi gjør å sette knappen slik at den ikke kan trykkes, på en slik måte at vi får riktig svar med aDocument.contents.questions [num]. Korrekt og herfra avhengig av hvilken som er riktig «vi eliminere »To knapper som ikke er det.

Fryse

                Knapp {id: bCon tekst: "Frys" påKlikket: {if (med == 0) simpletimer.stop () med = 1}}

Dette er en av de enkle, vi må bare stoppe timeren med simpletimer.stop (), ja, vi må slå den på igjen (og sette progressBar til 0) når vi går gjennom spørsmålet.

neste

                 Knapp {id: bNeste tekst: "Neste" påKlikket: {if (neste == 0) {num = num + 1 Logica.nextQuestion (num) next = 1}}}

Vi bruker funksjonen vi allerede opprettet for å passere spørsmålet (neste spørsmål).

Dialoger

For å avslutte spillet vil vi bruke en dialog, enten fordi vi har vunnet (det er ikke flere spørsmål) eller fordi vi har tapt (vi har gjort tre feil), for å bruke dialogene må vi importere modulen:

importere Ubuntu.Components.Popups 0.1

Vi skal lage dialogen som forteller oss at vi har mistet:

        Komponent {id: dialog Dialog {id: dialog title: "Game Over!" tekst: "Du mistet alle liv :(" Knapp {text: "Avslutt" påKlikket: Qt.quit ()} Knapp {tekst: "Start på nytt" farge: UbuntuColors.orange onKlikket: {num = 0; Logica.nextQuestion (num ) npoints = 0 fødsler = 0 PopupUtils.close (dialog)}}}}

Vi har to knapper, en for å lukke applikasjonen (Qt.quit ()) og en for å starte spillet på nytt. Vi initialiserer variablene til 0 og lukker dialogen.

Slik åpner du dialogen:

PopupUtils.open (dialog)

For å lukke den:

PopupUtils.close (dialog)

La oss se dialogen på slutten av spillet:

Ubuntu Touch

Vi kan opprette en dialog nøyaktig den samme ved å endre identifikatoren og teksten der det står at vi har vunnet.

Utforme spørsmålet samlet

Når vi designer det inn GTK, vi oppretter en dialog, men denne gangen vil vi gjøre det i en fane, uansett vil den ha samme struktur:

Som vi kan se, vil vi bruke en etikett, en TextArea til å skrive spørsmålet, 4 TextField og 4 Switch; til slutt en knapp for å legge til spørsmålet. La oss bare se på koden:

importere QtQuick 2.0 importere Ubuntu.Components 0.1 Tab {title: i18n.tr ("+ Questions") Side {id: pageAdd Column {anchors.top: pageAdd.top anchors.topMargin: 50 avstand: 15 bredde: parent.width høyde: parent.height - 50 Etikett {id: spørsmålstekst: "Legg til et spørsmål i databasen:" 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} Rad {avstand: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {placeholderText: "Svar 1" bredde: 300} Bytt {markert: falsk}} Rad {avstand: 15 anchors.horizontalCenter: foreldre.horizontalCenter TextField {placeholderText: "Svar 2" bredde: 300} Bryter {markert: false}} Rad {avstand: 15 anchors.horizontalCenter: foreldre. horizontalCenter TextField {placeholderText: "Svar 3" bredde: 300} Bryter {avkrysset: falsk}} Rad {avstand: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {placeholderText: "Response 4" bredde: 300} Switch {avkrysset: falsk}} Knapp {text: "Add +" anchors.horizontalCenter: parent.horizontalCenter width: parent.width - 20}}}}
Hvis det er tvil om koden, vet du allerede om det

La oss se hvordan det ser ut:

Fangst fra 2014-07-24 16:54:37

Hvis vi nå tester bryterne, vil vi se at vi kan merke dem alle som det riktige spørsmålet, og naturlig nok bare en kan være, derfor vil vi gjøre følgende: vi vil kunne gi en identifikator til hver bryter (også til tekstfelt siden vi må skaffe innholdet for å lagre det i databasen) i henhold til svaret ditt, og når vi klikker på det, vil vi sette alle de andre i avmerket = falsk modus:

             Rad {avstand: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {id: res1 placeholderText: "Svar 1" bredde: 300} Bryter {id: sw1 avkrysset: falsk påKlikket: {if (sw1.checked == true) {sw2. avkrysset = false sw3.checked = false sw4.checked = false}}}}

Hvis vi prøver det nå, vil vi se hvordan vi bare kan merke en.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   vr_rv sa

    Veldig gode og godt forklarte artikler.
    anbefaler du forresten noen bøker, YouTube-kanaler eller blogger som er på spansk for å lære hvordan du kan utvikle deg i QML for Ubuntu.

    1.    lolbimbo sa

      Vel, på spansk er det sikkert noen opplæringsprogrammer på YouTube, eller den rare bloggen, men sannheten er at det er lite materiale.

      Jeg ser at du kobler til via nokia hvis det er en symbian av det siste, du kan også opprette applikasjoner med QML, faktisk er det slik jeg lærte, her er nokia utviklingsnettstedet: http://developer.nokia.com/ (det er opplæringsprogrammer, komplette prosjekter ...)

  2.   Nestor sa

    Utmerket innleggsserie, takk for innspillet.

  3.   Marti sa

    Takk for veiledningen,
    Men jeg forstår ikke hvordan spørsmålene og svarene blir lagt til i databasen.
    Med legg til-knappen.
    Takk for alt.