Alkalmazás létrehozása az Ubuntu Touch [QML] - [2. rész] számára

Bevezetés:

Nos, itt van a következő bejegyzés első részEbben az adatok (kérdések) kezelésére fogunk összpontosítani, és a játék logikai részével kezdünk, a következőben befejezzük a logikát, és megvalósítjuk az időt és a 3 lehetőséget.

A kódot a Launchpad adattáramban találja (klic aquí), ahol menet közben frissítem.

Adatbázis:

Az általunk használt adatbázishoz u1db, amely egy adatbázis, amely az adatokat formátumban menti JSON.

Először nézzük meg, milyen adatokat kell elmentenünk, van 1 kérdésünk (a kérdés szövegén kívül jó lenne azonosítóval rendelkezni), 4 lehetséges válaszsal, amelyek közül csak 1 lehet, ezért a dokumentum JSON egyetlen kérdés legyen:

{ "id": 1, "question": " lesz fejlesztő.desdelinux.net ", "válaszok" : { r1: "igen", r2: "nem", r3: "nem tudom", r4: "ez egy hamis válasz" }, "helyes": 3 }

Amint látjuk, formátumban strukturáltuk JSON ahol van egy azonosítónk, egy karakterlánc a kérdéssel és r1, r2, amelyek az 1. és a 2. választ képviselik, végül megkapjuk, hogy melyik válasz helyes.

Lássuk kicsit, hogyan működik az U1db, az U1db használatához az első dolog, hogy importáljuk a modult:

import U1db 1.0 as U1db

Kijelentjük az adatbázist:

U1db.Database {
id: aDatabase
path: "aU1DbDatabase"
}

Az adatbázisok aU1DbDatabase.u1db néven kerülnek mentésre, most létrehozunk egy dokumentumot:

U1db.Document {
id: aDocument
database: aDatabase
docId: 'helloworld'
create: true
defaults: { "hello": "Hello World!" }
}

Ahol láthatjuk a {«hello»: «valami»} formátumot, lekérdezések végrehajtására, akár adatok hozzáadásához, adatok megszerzéséhez, törléséhez stb. Megvan az U1db.Query elem.

Megtalálhatjuk a oktatói fejlesztő honlapján Ubuntu.

Menjünk az alkalmazásunkhoz, és hozzuk létre az adatbázisunkat, amint láttuk, definiáljuk az adatbázist:

U1db.Database {id: db kérdések; elérési út: "questionsdb.u1db"}

Oké, most tegyünk néhány alapértelmezett elemet az adatbázisdokumentum kérdésekdb-be:

    U1db.Document { id: aDokumentum adatbázis: questionsdb docId: 'questions' create: true defaults: { "questions": [ {"question":"Lesz dev.desdelinux.net ?", "r1":"igen", "r2":"nem", "r3":"orr", "r4":"hamis válasz", "helyes": "3" }, {"kérdés" ":"Ki az a Hagrid (Harry Potter)?", "r1":"Az iskola igazgatóhelyettese", "r2":"A vadőr", "r3":"Az átalakuló tanár", "r4":" A prefektus", "helyes": "2"}, {"question":"Mi Izland fővárosa?", "r1":"Amszterdam", "r2":"Reykjavík", "r3":" Tbiliszi ", "r4":"Almaty", "helyes": "2"} ] } }

Tisztában vagyok vele, hogy a kód nem úgy jelenik meg, ahogy kellene, de ha jól megnézzük, látni fogjuk, hogy van elemünk kikérdezés, amely a »[]» kifejezéssel meghatározzuk, hogy több (nem statikus) elem lehet; ebben az esetben alapértelmezés szerint 4 kérdésünk lesz, 4 kérdés a megfelelő válaszokkal együtt.

A dokumentumelemek megszerzése JSON, megadhatjuk a létrehozott dokumentum azonosítóját (ami egy dokumentum). Képzeljük el, hogy meg akarjuk kapni az első kérdés szövegét:

aDocument.contents.questions [0] .question

Ez a kódsor visszaadja nekünk az aDocument dokumentum 0. elemének kérdéstartalmát (az első az indexben), ami a következő: «Lesz dev.desdelinux.háló?" Ha az 1-es számot tesszük az indexbe, akkor ez a második kérdés.

A játék logikájának programozása

Nos, most, hogy tudjuk, hogyan kell kezelni egy kicsit az adatbázist, ahová elmentettük a kérdéseket, programozni fogjuk a játék logikáját. Először létrehozunk egy fájlt JavaScript (.js): Új -> Qt -> Js fájl hozzáadása. fel fogom hívni logic.js.

A fájlban több funkciót fogunk létrehozni, hogy importáljuk a js fájlt a qml dokumentumunkba:

importálja a "logica.js" fájlt Logica néven

A Logica névhez társítjuk, ezért amikor egy függvényt meg akarunk hívni, akkor Logica.funcion () néven fogjuk megtenni, mintha egy objektum lenne, amelynek metódusai vannak.

Egyelőre, hogy a poszt ne legyen túl hosszú, a kérdés idejét és a lehetőségeket későbbre hagyjuk, a kérdésekre és a pontokra koncentrálunk, lássunk egy funkciót, amelyet a kérdésre való továbblépéshez használunk:

function nextQuestion (num) {// time = 0 question.text = aDocument.contents.questions [num] .question; resp1.text = aDocument.contents.questions [szám] .r1; resp2.text = aDocument.contents.questions [szám] .r2; resp3.text = aDocument.contents.questions [szám] .r3; resp4.text = aDocument.contents.questions [szám] .r4; }

Mint láthatjuk, érvként átadjuk a kérdés számát, ahol vagyunk, és innen a válaszokat a gombokra és a kérdés címkére helyezi. Nézzük meg most, hogy ellenőrizzük-e, hogy a kiválasztott válasz helyes-e:

függvény találat (szám, opció) {var hit = hamis; var num_correcto = aDokumentum.contents.questions [num]. helyes; if (opció == helyes_szám) hit = igaz; visszatérési találat; }

A kód önmagáért beszél, ha a választott opció megegyezik az adatbázis által biztosítottal, akkor igaz lesz, különben nem. Most, hogy definiáltuk ezeket a függvényeket, alkalmazni fogjuk őket a qml kódunkban.

Először hozzáadunk egy változót, amely vezérli, hogy milyen kérdésben vagyunk, hívjuk num; Három további változónk is lesz: találatok, elmaradások és pontok.

    tulajdonság int szám: 0 tulajdonság int n hibák: 0 tulajdonság int születések: 0 tulajdonság int pontok: 0

Kezdetben mind 0-on vannak.

Most hozzáadunk egy onClick-et az összes válasz gombhoz. Az onClick, amint a neve is mondja, egy esemény, amely erre a gombra kattintva történik:

            Gomb {id: resp1 text: "1. válasz" horgonyok.horizontalCenter: parent.horizontalCenter szélesség: parent.width - 20 onClicked: {if (Logic.biztos (szám, 1)) {num = num + 1; Logic.nextQuestion (szám) npontok = npontok + 50 születés = születések + 1} else {nfaults = nfaults + 1}}}

Látjuk, hogy a gombra kattintva ellenőrzi, hogy helyes-e vagy sem, ha helyes, adjuk hozzá a pontokat és adjuk át a kérdést, különben egy élet marad.

Végül az első kérdés betöltődik, amikor az oldal komponens betöltődik:

    {Id: pageGame Component.onCompleted: {Logic.nextPregunta (0)}

Lássuk, hogyan alakult:

teszt


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.

  1.   gabielus dijo

    Követem a lépéseket, és minden működik. Csak az együttműködés érdekében azt mondom, hogy:
    * Nem változtatja meg a találatok és a kihagyások értékét. Ezt hozzá kell adnia a kattintási esemény minden gombjához.
    * És ez a sorban:
    if (Logic.acerto (num, 1)) {
    változtassa meg az 1 értéket a gomb / válasz számára.

    lolbimbo, érdekesnek tartom a hozzászólásodat. Remélem új tutók !!!

    Köszönjük, hogy elmondtad.

    1.    lolbimbo dijo

      Tetszik, hogy kommentáltad ezeket a pontokat, mert nem tettem egyértelművé a bejegyzésben, mi több, nem emlékszem a pontokra, a sikerekre és a kudarcokra, ha megnézed, látni fogod, hogy amikor rákattintunk a gombra, összeadjuk a sikerek pontjait ... de ezek nem tükröződnek a címkében, ezért be kell tennünk a szöveg tulajdonságába a pontok megjelenítéséhez:

      Címke {
      id: kudarcok
      szöveg: «Hibák:» + nhibák
      piros szín"
      }

      Címke {
      id: slágerek
      szöveg: «Találatok:» + született
      }

      Címke {
      id: pontok
      szöveg: «Pontok:» + npont
      fontSize: "közepes"
      }

      A 3. részben is tisztázom.