Kugadzira app [Vala + Gtk 3] (2nd chikamu)

Muchikamu chechipiri ichi tichavaka pfungwa yekushandisa (kuona nekuongorora kodhi iri nani kuitarisa zvizere kuti ndichaiisa pazasi pepositi), asi zvisati zvaitika tichafanira kuisa raibhurari ye sqlite3 iyo yatichazoshandisa kuti tikwanise kusevha mibvunzo nemhinduro dzadzo dzakasiyana:

sudo apt-get install libsqlite3-dev

Kana maraibhurari aiswa isu tinongoda chete "kushandisa Sqlite;" kukwanisa kushandisa sqlite mu vala.

Tichada kugadzira Tafura ine:

Mubvunzo
Pindura 1
Pindura 2
Pindura 3
Pindura 4
rakarurama

muenzaniso:

Mubvunzo = ndizvo desdelinux blog yakanaka?

Mhinduro1 = iyo blog haipo
Mhinduro2 = kwete
Mhinduro3 = hongu
Mhinduro4 = mhoro

sezvo isu tese tichiziva mhinduro kwayo ndeye 2 (yakanaka ndeye 3)

chaiyo = 3

Kugadzira tafura uye kuibata isu tinofanirwa kuziva sql (unogona kuitsvaga muinjini yako yekutsvaga), chirevo chekugadzira tafura:

CREATE TABLE preguntas (pregunta TEXT, respuesta1 TEXT, respuesta2 TEXT, respuesta3 TEXT, respuesta4 TEXT, correcto INT);
Isa mibvunzo…:

PINDA MUmibvunzo (mubvunzo, mhinduro1, mhinduro2, mhinduro3, mhinduro4, yakarurama) ZVINOKOSHA ('s desdelinux bhurogi rakanaka', 'haisi bhurogi', 'kwete', 'hongu', 'mhoro', 3);

Ok ikozvino tora mubvunzo (wakarongedzwa zvisina kurongeka):

SELECT pregunta, respuesta1, respuesta2, respuesta3, respuesta4, correcto FROM preguntas ORDER BY RANDOM()

Kuvhura iyo 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 ());
}

Kana isu tisina iyo yakatogadzirwa kare (kekutanga kumhanyisa kodhi yacho) inozozvigadzira

Capture kubva 2013-11-06 19:48:02

Gadzira tafura uye isa mibvunzo:

 yakavanzika void bd() {tambo errmsg; // Vhura dhatabhesi / Gadzira dhatabhesi int ec = Sqlite.Database.open("test.db", kunze db); kana (ec != Sqlite.OK) { stderr.printf ("Haikwanisi kuvhura dhatabhesi: %d: %s\n", db.errcode (), db.errmsg ()); } kana (!FileUtils.test ("test.db", FileTest.IS_REGULAR)) {string query = """ GADZIRA mibvunzo yeTABLE ( mubvunzo TEXT, mhinduro1 TEXT, mhinduro2 TEXT, mhinduro3 TEXT, mhinduro4 TEXT, yakarurama INT ); INSERT KUPINDA mibvunzo (mubvunzo, mhinduro1, mhinduro2, mhinduro3, mhinduro4, yakarurama) ZVINOKOSHA ('ndizvo desdelinux bhurogi rakanaka', 'haisi bhurogi', 'kwete', 'hongu', 'mhoro', 3); PINDA MUmibvunzo (mubvunzo, mhinduro1, mhinduro2, mhinduro3, mhinduro4, yakarurama) ZVINOKOSHA ('5+5', '25', '10', '3', '5', 2); """; ec = db.exec (mubvunzo, null, kunze errmsg); kana (ec != Sqlite.OK) {stderr.printf ("Error: %s\n", errmsg); }}}

Tarisa uone kuti hapana kukanganisa:

 kana (ec! = Sqlite.OK) {stderr.printf ("Kanganiso:% s \ n", errmsg); dzoka -1; }

Isu tichagadzira tambo nhanhatu dzinozotibatsira isu kuita kupihwa kwemibvunzo nemhinduro.

 tambo yakasarudzika p; yakasarudzika tambo r1; yakasarudzika tambo r2; yakasarudzika tambo r3; yakasarudzika tambo r4; tambo yakasarudzika c;

Kuisa mubvunzo (watinowana kubva ku test.db) ne SELECT:

 private void bd_select_questions () {string query = "Sarudza mubvunzo, mhinduro1, mhinduro2, mhinduro3, pindura4, pindura2, gadzirisa KUBVA kumibvunzo KUTAURA NERANDOM ()"; int rc = db.prepare_v1 (mubvunzo, -0, kunze stmt, null); int cols = stmt.column_count (); rc = stmt.step (); int col; kana (rc == Sqlite.ROW) {ye (col = 0; col <cols; col ++) {txt txt = stmt.column_text (col); kana (col == 1) {p = txt; } zvimwe kana (col == 1) {r2 = txt; } zvimwe kana (col == 2) {r3 = txt; } zvimwe kana (col == 3) {r4 = txt; } zvimwe kana (col == 4) {rXNUMX = txt; } zvimwe {c = txt; } // kudhinda ("% s =% s \ n", stmt.column_name (col), txt); }}}

Isa mubvunzo kumifananidzo yakajeka:

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

Rate:

private void puntua () {
this.punts = this.punts + 50;
this.puntos.set_label(this.punts.to_string());
}

Edza kana mhinduro iri yechokwadi:


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

Nguva yekufunga, sezvatakaona mune yapfuura posvo, isu tinongofanirwa kuwedzera iyo if inosimbisa kuti iyo nguva kana yasvika 1 tinopa mhinduro seisiriyo:

Capture kubva 2013-11-03 12:58:42

Unganidza (tinowedzera -pkg sqlite3)
valac -v lol.vala --pkg gtk+-3.0 --pkg sqlite3

Kugadzira matatu mabhatani (50%, Gadzira, Pfuura):

Isu tinogadzira Gbox nyowani yakatwasuka uye tinowedzera mabhatani matatu mairi, tinowedzera iyi Gbox kune iyo yatakatogadzira.

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

Capture kubva 2013-11-06 20:48:46

Yakazara kodhi http://paste.desdelinux.net/4882


Siya yako yekutaura

Your kero e havazobvumirwi ichibudiswa. Raida minda anozivikanwa ne *

*

*

  1. Inotarisira iyo data: Miguel Ángel Gatón
  2. Chinangwa cheiyo data: Kudzora SPAM, manejimendi manejimendi.
  3. Legitimation: Kubvuma kwako
  4. Kutaurirana kwedata
  5. Dhata yekuchengetedza: Dhatabhesi inobatwa neOccentus Networks (EU)
  6. Kodzero: Panguva ipi neipi iwe unogona kudzora, kupora uye kudzima ruzivo rwako

  1.   fabian akadaro

    Ndatenda kwazvo nedzidziso, inonakidza kwazvo kwatiri isu vanoda kutanga nechinhu chakareruka, ini ndaizoda rumwe rubatsiro nechikamu chekugadzira matafura edata. Mufaro

  2.   nuanced akadaro

    Kugona chose! Zvakanyatsotsanangurwa uye zvakadzama. Kutenda neiyo data. (uye)

  3.   rho akadaro

    Thanks murume! Inonakidza kwazvo sekutanga.
    Zvingave zvakanaka kuona akasiyana akasiyana mamiriro, nyora makomendi (iwo mhando pop ups) kana mamenu (nyora iwo emapaneru anowanikwa mune yekutanga kana gnome-shell) ...
    Chokwadi, zvakanaka kwazvo.
    Tinoverenga: =)