Ukwakha uhlelo lokusebenza [Vala + Gtk 3] (ingxenye yesi-2)

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.

Ukuthathwa kusuka ngo-2013-11-06 19:48:02

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:

Ukuthathwa kusuka ngo-2013-11-03 12:58:42

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);

this.box.pack_start (box2);

Ukuthathwa kusuka ngo-2013-11-06 20:48:46

Qedela ikhodi: http://paste.desdelinux.net/4882


Shiya umbono wakho

Ikheli lakho le ngeke ishicilelwe. Ezidingekayo ibhalwe nge *

*

*

  1. Ubhekele imininingwane: Miguel Ángel Gatón
  2. Inhloso yedatha: Lawula Ugaxekile, ukuphathwa kwamazwana.
  3. Ukusemthethweni: Imvume yakho
  4. Ukuxhumana kwemininingwane: Imininingwane ngeke idluliselwe kubantu besithathu ngaphandle kwesibopho esisemthethweni.
  5. Isitoreji sedatha: Idatabase ebanjwe yi-Occentus Networks (EU)
  6. Amalungelo: Nganoma yisiphi isikhathi ungakhawulela, uthole futhi ususe imininingwane yakho.

  1.   fabian kusho

    Ngiyabonga kakhulu ngesifundo, sithakazelisa kakhulu kulabo abafuna ukuqala ngento elula, ngidinga usizo olwengeziwe ngengxenye yokwakha amatafula wedatha. Jabulela

  2.   kunhlanhlathisiwe kusho

    Kuhle kakhulu! Kuchazwe kahle futhi kuningiliziwe. Siyabonga ngemininingwane. (futhi)

  3.   rho kusho

    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: =)