Crearea unei aplicații pentru Ubuntu Touch [QML] - [Partea 3]

Crearea unei aplicații pentru Ubuntu Touch

A treia parte a acestei serii de postări (prima parte, a doua parte) unde construim o aplicație pentru Ubuntu Touch sau pentru același lucru Ubuntu desktop. Voi adăuga o parte care mi s-a întâmplat în postarea anterioară, și anume că, deși am crescut variabilele eșecurilor, accesărilor și punctelor, atunci acestea nu au fost afișate pe ecran, asta pentru că nu am modificat proprietatea text a etichetelor:

                Etichetă {id: failures text: "Eșecuri:" + nfaults culoare: "roșu"} Label {id: hits text: "hits:" + born} Label {id: points text: "Points:" + npoints fontSize: "medium "}

Continuarea logicii jocului

Timp

Ei bine, după cum știm deja, ProgressBar arată timpul pe care îl avem pentru a răspunde la o întrebare. Pentru a gestiona timpul vom folosi un Timer, temporizatorul este un element care se repetă la un interval de x milisecunde, în acest caz fiecare interval îi vom spune să crească progresul ProgressBar; Dar înainte să mă uit dacă a ajuns la sfârșitul timpului sau nu, dacă ajunge la sfârșit, trebuie să scădem o viață.

Puteți vedea o linie de cod pe care nu am implementat-o ​​încă (PopupUtils.open (dialog)), această linie urmează să deschidă dialogul de final de joc în cazul în care nu mai avem vieți (3 bug-uri eliminate), mai târziu în această postare vom vedea cum să facem acest dialog.

Codul temporizatorului (îl putem pune sub 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 else {nfaults = nfaults + 1 if (nfaults <3) {num = num + 1 Logic.nextQuestion (num) time.value = time.minimumValue} else {simpletimer.stop () PopupUtils.open (dialog)}} }}

După cum putem vedea, în onTriggered punem codul care va crește bara de progres adăugând 1 unitate la fiecare 100 (interval) mili-secunde. Rețineți că am adăugat două atribute la ProgressBar, minimumValue și maximumValue, care, după cum puteți vedea, este valoarea maximă și valoarea minimă.

Pentru a porni și a opri cronometrul:

simpletimer.start () simpletimer.stop ()

Opțiuni (50%, Freeze și Next)

Mai întâi să creăm trei variabile care controlează faptul că opțiunile pot fi folosite o singură dată:

    proprietate int procent: 0 proprietate int cu: 0 proprietate int următor: 0

50%

Buton {id: b50 text: "50%" onClick: {if (percent == 0) {var corect = aDocument.contents.questions [num] .correcta if (correct == 1) {resp2.enabled = false resp3. enabled = false} else if (corect == 2) {resp1.enabled = false resp4.enabled = false} else if (corect == 3) {resp1.enabled = false resp4.enabled = false} else {resp2.enabled = false resp1.enabled = false} procente = 1}}

Cu enabled = false ceea ce facem este să punem butonul astfel încât să nu poată fi apăsat, în așa fel încât să obținem răspunsul corect cu aDocument.contents.questions [num]. Corect și de aici în funcție de care este corect «noi elimina »Două butoane care nu sunt.

Îngheţa

                Buton {id: bCon text: „Înghețare” activat: {if (cu == 0) simpletimer.stop () cu = 1}}

Acesta este unul dintre cele ușoare, trebuie doar să oprim cronometrul cu simpletimer.stop (), da, trebuie să-l pornim din nou (și să setăm progresia la 0) când trecem prin întrebare.

Pagina Următoare →

                 Buton {id: bText următor: „Următorul” activatFăcut: {if (next == 0) {num = num + 1 Logic.nextQuestion (num) next = 1}}}

Folosim funcția pe care am creat-o deja pentru a trece întrebarea (următoarea întrebare).

Dialoguri

Pentru a încheia jocul vom folosi un dialog, fie pentru că am câștigat (nu mai sunt întrebări), fie pentru că am pierdut (am făcut 3 greșeli), pentru a utiliza dialogurile trebuie să importăm modulul:

importă Ubuntu.Components.Popups 0.1

Vom crea dialogul care ne spune că am pierdut:

        Componenta {id: dialog Dialog {id: dialog title: "Joc terminat!" text: "Ați pierdut toate viețile :(" Buton {text: "Ieșiți" peClick: Qt.quit ()} Buton {text: "Reporniți" culoare: UbuntuColors.orange onClick: {num = 0; Logica.nextQuestion (num ) npoints = 0 nașteri = 0 PopupUtils.close (dialog)}}}}

Avem două butoane, unul pentru a închide aplicația (Qt.quit ()) și altul pentru a începe jocul. Inițializăm variabilele la 0 și închidem caseta de dialog.

Pentru a deschide caseta de dialog:

PopupUtils.open (dialog)

Pentru a o închide:

PopupUtils.close (dialog)

Să vedem dialogul de la sfârșitul jocului:

Ubuntu Touch

Putem crea un dialog exact la fel schimbând identificatorul și textul în care scrie că am câștigat.

Proiectarea agregatului de întrebări

Când îl proiectăm în GTK, creăm un dialog, dar de data aceasta o vom face într-o filă, oricum va avea aceeași structură:

După cum putem vedea, vom folosi o etichetă, o TextArea pentru a scrie întrebarea, 4 TextField și 4 Switch; în cele din urmă, un buton pentru a adăuga întrebarea. Să ne uităm doar la cod:

import QtQuick 2.0 import Ubuntu.Components 0.1 Tab {title: i18n.tr ("+ Întrebări") Pagina {id: pageAdd Column {anchors.top: pageAdd.top anchors.topMargin: 50 spațiu: 15 lățime: parent.width height: parent.height - 50 Label {id: question text: "Adăugați o întrebare în baza de date:" 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: "Răspuns 1" lățime: 300} Comutați {bifat: fals}} Rând {spațiere: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {placeholderText: "Răspuns 2" lățime: 300} Comutator {verificat: fals}} Rând {spațiu: 15 anchors.horizontalCenter: părinte. horizontalCenter TextField {placeholderText: "Răspuns 3" lățime: 300} Comutator {verificat: fals}} Rând {spațiere: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {placeholderText: "Răspuns 4" lățime: 300} Comutator {bifat: fals}} Buton {text: "Adăugați +" anchors.horizontalCenter: parent.horizontalCenter lățime: parent.width - 20}}}}
Dacă există vreo îndoială cu privire la cod, știți deja comentarii

Să vedem cum arată:

Captură din 2014-07-24 16:54:37

Dacă testăm acum comutatoarele, vom vedea că le putem marca pe toate ca fiind întrebarea corectă și, în mod firesc, poate fi una singură, prin urmare vom face următoarele: vom putea furniza un identificator fiecărui comutator (de asemenea textfields, deoarece trebuie să obținem conținutul pentru a-l salva în baza de date) în funcție de răspunsul dvs., și atunci când facem clic pe acesta, vom pune pe toți ceilalți în verificat = modul fals:

             Rând {spațiere: 15 anchors.horizontalCenter: parent.horizontalCenter TextField {id: res1 placeholderText: "Răspuns 1" lățime: 300} Comutator {id: sw1 verificat: fals peClick: {if (sw1.checked == true) {sw2. verificat = fals sw3.checked = fals sw4.checked = fals}}}}

Dacă o încercăm acum, vom vedea cum putem marca doar una.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   vr_rv el a spus

    Articole foarte bune și bine explicate.
    Apropo, recomandați câteva cărți, canale YouTube sau bloguri în limba spaniolă pentru a afla cum să vă dezvoltați în QML pentru Ubuntu.

    1.    lolbimbo el a spus

      Ei bine, în spaniolă există cu siguranță câteva tutoriale pe YouTube sau blogul ciudat, dar adevărul este că există puține materiale.

      Văd că vă conectați printr-un nokia dacă este un simbol al ultimului, puteți crea și aplicații cu QML, de fapt așa am învățat, aici este site-ul de dezvoltare nokia: http://developer.nokia.com/ (există tutoriale, proiecte complete ...)

  2.   Înțelept el a spus

    Serii excelente de postări, mulțumesc pentru contribuție.

  3.   Marti el a spus

    Vă mulțumim pentru tutorial,
    Dar nu înțeleg cum sunt adăugate întrebările și răspunsurile în baza de date.
    Cu butonul de adăugare.
    Mulțumesc pentru tot.