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:
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}}}}
La oss se hvordan det ser ut:
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.
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.
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 ...)
Utmerket innleggsserie, takk for innspillet.
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.