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.
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.
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:
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.
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.