Kule ngxenye yesibili sizokwakha umqondo wohlelo lokusebenza (ukubona nokuhlaziya ikhodi kangcono ukuyibheka ngokugcwele ukuthi ngizoyibeka ngaphansi kweposi), kodwa ngaphambi kwalokho sizodinga ukufaka imitapo yolwazi ye-sqlite3 esizoyisebenzisa ukusindisa imibuzo nezimpendulo zazo:
sudo apt-get install libsqlite3-dev
Lapho imitapo yolwazi isifakiwe sizodinga kuphela i- "using Sqlite;" ukwazi ukusebenzisa i-sqlite ku-vala.
Sizodinga ukudala Ithebula eliqukethe:
Umbuzo
Impendulo 1
Impendulo 2
Impendulo 3
Impendulo 4
okulungile
isibonelo:
Pregunta = es desdelinux un buen blog?
Impendulo1 = leyo bhulogi ayikho
Impendulo2 = cha
Impendulo3 = yebo
Impendulo4 = sawubona
njengoba sonke sizokwazi ukuthi impendulo eyiyo ngu-2 (omuhle ngu-3)
okulungile = 3
Ukwenza itafula futhi siliphathe kuzodingeka sazi i-sql (ungayisesha kunjini yakho yokusesha oyithandayo), isitatimende sokwenza itafula:
CREATE TABLE preguntas (pregunta TEXT, respuesta1 TEXT, respuesta2 TEXT, respuesta3 TEXT, respuesta4 TEXT, correcto INT);
Faka imibuzo…:
INSERT INTO preguntas (pregunta, respuesta1, respuesta2, respuesta3, respuesta4, correcto) VALUES ('es desdelinux un buen blog', 'no es ningun blog', 'no', 'si', 'hola', 3);
Kulungile manje thola umbuzo (uhlelwe ngokungahleliwe):
SELECT pregunta, respuesta1, respuesta2, respuesta3, respuesta4, correcto FROM preguntas ORDER BY RANDOM()
Ukuvula i-database:
int ec = Sqlite.Database.open ("test.db", out db);
if (ec != Sqlite.OK) {
stderr.printf ("Can't open database: %d: %s\n", db.errcode (), db.errmsg ());
}
Uma kwenzeka singenayo vele idaliwe (okokuqala lapho sisebenzisa ikhodi) izozidala.
Dala itafula bese ufaka imibuzo:
private void bd () { string errmsg; // Abre la base de datos / Crea la base de datos int ec = Sqlite.Database.open ("test.db", out db); if (ec != Sqlite.OK) { stderr.printf ("Can't open database: %d: %s\n", db.errcode (), db.errmsg ()); } if (!FileUtils.test ("test.db", FileTest.IS_REGULAR)) { string query = """ CREATE TABLE preguntas ( pregunta TEXT, respuesta1 TEXT, respuesta2 TEXT, respuesta3 TEXT, respuesta4 TEXT, correcto INT ); INSERT INTO preguntas (pregunta, respuesta1, respuesta2, respuesta3, respuesta4, correcto) VALUES ('es desdelinux un buen blog', 'no es ningun blog', 'no', 'si', 'hola', 3); INSERT INTO preguntas (pregunta, respuesta1, respuesta2, respuesta3, respuesta4, correcto) VALUES ('5+5', '25', '10', '3', '5', 2); """; ec = db.exec (query, null, out errmsg); if (ec != Sqlite.OK) { stderr.printf ("Error: %s\n", errmsg); } } }
Bheka ukuthi alikho yini iphutha:
uma (ec! = Sqlite.OK) {stderr.printf ("Iphutha:% s \ n", errmsg); buyela -1; }
Sizokwakha izintambo eziyisi-6 ezizosisiza ukwenza ukwabiwa kwemibuzo nezimpendulo.
intambo yangasese p; intambo yangasese r1; intambo yangasese r2; intambo yangasese r3; intambo yangasese r4; intambo yangasese c;
Ukubeka umbuzo (esiwuthola ku-test.db) NGOKUKHETHA:
i-void yangasese i-bd_select_questions yangasese () {string query = "KHETHA umbuzo, impendulo1, impendulo2, impendulo3, impendulo4, impendulo2, lungisa KUSUKA kwimibuzo EYALELWA YI-RANDOM ()"; int rc = db.lungiselela_v1 (umbuzo, -0, out stmt, null); int cols = stmt.column_count (); rc = stmt.step (); int col; uma (rc == Sqlite.ROW) {for (col = 0; col <cols; col ++) {string txt = stmt.column_text (col); uma (col == 1) {p = txt; } okunye uma (col == 1) {r2 = txt; } okunye uma (col == 2) {r3 = txt; } okunye uma (col == 3) {r4 = txt; } okunye uma (col == 4) {rXNUMX = txt; } okunye {c = txt; } // ukuphrinta ("% s =% s \ n", stmt.column_name (col), txt); }}}
Faka umbuzo ezintweni ezicacile:
private void next_pregunta () {
this.pregunta.set_label(this.p);
this.resposta1.set_label(this.r1);
this.resposta2.set_label(this.r2);
this.resposta3.set_label(this.r3);
this.resposta4.set_label(this.r4);
}
Linganisa:
private void puntua () {
this.punts = this.punts + 50;
this.puntos.set_label(this.punts.to_string());
}
Zama uma impendulo ilungile:
private void correcto (string cor) {
if (this.c == cor) {
this.puntua ();
this.bd_select_preguntas ();
this.next_pregunta();
}
else{
//incorrecto
}
}
resposta1.clicked.connect (() => {
this.correcto("1");
});
resposta2.clicked.connect (() => {
this.correcto("2");
});
resposta3.clicked.connect (() => {
this.correcto("3");
});
resposta4.clicked.connect (() => {
this.correcto("4");
});
Isikhathi somqondo, njengoba sibonile kokuthunyelwe kwangaphambilini, kufanele sengeze kuphela uma lokho kuqinisekisa ukuthi isikhathi uma sifinyelela ku-1 sinikeza impendulo njengengalungile:
Hlanganisa (sifaka i-pkg sqlite3)
valac -v lol.vala --pkg gtk+-3.0 --pkg sqlite3
Ukwakha izinkinobho ezintathu (50%, Freeze, Pass):
Sakha i-Gbox entsha evundlile futhi sengeza izinkinobho ezintathu kuyo, sengeza le Gbox kuleyo ebesivele siyidalile:
this.box2 = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 0);
var button1 = new Gtk.Button.with_label ("50%");
var button2 = new Gtk.Button.with_label ("congelar");
var button3 = new Gtk.Button.with_label ("passar");
this.box2.pack_start(button1);
this.box2.pack_start(button2);
this.box2.pack_start(button3);
Qedela ikhodi: http://paste.desdelinux.net/4882
Ngiyabonga kakhulu ngesifundo, sithakazelisa kakhulu kulabo abafuna ukuqala ngento elula, ngidinga usizo olwengeziwe ngengxenye yokwakha amatafula wedatha. Jabulela
Kuhle kakhulu! Kuchazwe kahle futhi kuningiliziwe. Siyabonga ngemininingwane. (futhi)
Ngiyabonga ndoda! Kuyathakazelisa kakhulu njengowokuqala.
Kungakuhle ukubona izimo ezahlukahlukene ezihambisanayo, thayipha ukuphawula (lezo zinhlobo zama-pop ups) noma amamenyu (thayipha lawo wamapaneli avela ku-elementary or gnome-shell) ...
Iqiniso, lihle kakhulu.
Siyafunda: =)