अ‍ॅप तयार करीत आहे [Vala + Gtk 3] (दुसरा भाग)

या दुसर्‍या भागात आम्ही अनुप्रयोगाचे लॉजिक तयार करू (कोड पहाण्यासाठी आणि त्याचे विश्लेषण करण्यासाठी मी त्या पोस्टच्या खाली ठेवेल त्याबद्दल अधिक चांगले विचार करण्यासाठी), परंतु त्यापूर्वी आम्हाला प्रश्न आणि त्यांची संबंधित उत्तरे जतन करण्यात सक्षम होण्यासाठी sqlite3 लायब्ररी स्थापित करण्याची आवश्यकता आहेः

sudo apt-get install libsqlite3-dev

एकदा ग्रंथालये स्थापित झाली की आपल्याला फक्त "स्क्लाईट वापरुन" आवश्यक असेल; वाल्यात स्क्लाईट वापरण्यास सक्षम होण्यासाठी.

आम्हाला असा एक टेबल तयार करण्याची आवश्यकता असेल ज्यामध्ये:

प्रश्न
उत्तर 1
उत्तर 2
उत्तर 3
उत्तर 4
योग्य

उदाहरण:

प्रश्न = लिनक्स कडून चांगला ब्लॉग आहे?

उत्तर 1 = तो ब्लॉग अस्तित्त्वात नाही
उत्तर २ = नाही
उत्तर = = होय
उत्तर = = नमस्कार

कारण आपल्या सर्वांना माहित असेल की योग्य उत्तर 2 आहे (चांगली 3 आहे)

बरोबर = 3

टेबल तयार करण्यासाठी आणि ते हाताळण्यासाठी आपल्याला एसक्यूएल माहित असणे आवश्यक आहे (आपण आपल्या आवडत्या शोध इंजिनमध्ये त्याचा शोध घेऊ शकता), सारणी तयार करण्यासाठी विधानः

CREATE TABLE preguntas (pregunta TEXT, respuesta1 TEXT, respuesta2 TEXT, respuesta3 TEXT, respuesta4 TEXT, correcto INT);
प्रश्न घाला ...:

प्रश्न समाविष्ट करा (प्रश्न, उत्तर 1, उत्तर 2, उत्तर 3, उत्तर 4, बरोबर) मूल्ये ('हा लिनक्सचा चांगला ब्लॉग आहे', 'हा ब्लॉग नाही', 'नाही', 'हो', 'हॅलो', 3);

ठीक आहे आता एक प्रश्न मिळवा (सहजगत्या क्रमवारी लावलेले):

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

डेटाबेस उघडणे:

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

जर आमच्याकडे तो आधीपासून तयार केलेला नाही (प्रथमच आम्ही कोड चालवितो तेव्हा) ते स्वतः तयार करेल.

2013-11-06 19:48:02 पासून कॅप्चर करा

सारणी तयार करा आणि प्रश्न घाला:

 खाजगी शून्य बीडी () {स्ट्रिंग एरम्सग; // डेटाबेस उघडा / डेटाबेस तयार करा int ec = Sqlite.Dat database.open ("test.db", आउट डीबी); if (eC! = Sqlite.OK) der stderr.printf ("डेटाबेस उघडू शकत नाही:% d:% s \ n", db.errcode (), db.errmsg ()); } if (! FileUtils.test ("test.db", FileTest.IS_REGULAR)) {स्ट्रिंग क्वेरी = "" "सारणी प्रश्न तयार करा (प्रश्न पाठ, उत्तर 1 टेक्स्ट, उत्तर 2 टेक्स्ट, उत्तर 3 टेक्स्ट, उत्तर 4 टेक्स्ट, बरोबर आयएनटी); INSERT प्रश्न (प्रश्न, उत्तर 1, उत्तर 2, उत्तर 3, उत्तर 4, बरोबर) मूल्ये ('हा लिनक्सचा चांगला ब्लॉग आहे', 'हा कोणताही ब्लॉग नाही', 'नाही', 'हो', 'हॅलो', 3); अंतर्भूत प्रश्नांमध्ये (प्रश्न, उत्तर 1, उत्तर 2, उत्तर 3, उत्तर 4, बरोबर) व्हॅल्यू ('5 + 5', '25', '10', '3', '5', 2); "" "; ec = db.exec (क्वेरी, शून्य, आउट एआरएमएसजी); if (eC! = Sqlite.OK) der stderr.printf ("त्रुटी:% s \ n", errmsg); }}}

कोणतीही त्रुटी नाही हे तपासा:

 if (eC! = Sqlite.OK) der stderr.printf ("त्रुटी:% s \ n", errmsg); परतावा -1; }

आम्ही 6 स्ट्रिंग्स तयार करु ज्या आम्हाला प्रश्न व उत्तरे प्रदान करण्यास मदत करतील.

 खाजगी स्ट्रिंग पी; खासगी स्ट्रिंग r1; खाजगी स्ट्रिंग r2; खासगी स्ट्रिंग r3; खाजगी स्ट्रिंग r4; खाजगी स्ट्रिंग सी;

एखादे प्रश्न (जे आपण test.db वरून प्राप्त केले आहे) सह निवडत आहातः

 खाजगी शून्य बीडी_सेलेक्ट_केशन्स () query स्ट्रिंग क्वेरी = "प्रश्न, उत्तर 1, उत्तर 2, उत्तर 3, आंसर 4, रँडम () च्या आदेशावरून योग्य प्रश्न निवडा"; इंट आरसी = डीबी.प्रिपरे_व्ही 2 (क्वेरी, -1, आउट एसएमटी, शून्य); इंट कोल्स = stmt.column_count (); rc = stmt.step (); इंट कॉलम if (rc == Sqlite.ROW) {for (col = 0; col <cols; col ++) {स्ट्रिंग txt = stmt.column_text (कॉलम); if (col == 0) {p = txt; } अन्यथा जर (col == 1) {r1 = txt; } अन्यथा जर (col == 2) {r2 = txt; } अन्यथा जर (col == 3) {r3 = txt; } अन्यथा जर (col == 4) {r4 = txt; } else {c = txt; print // मुद्रण ("% s =% s \ n", stmt.column_name (col), txt); }}}

ग्राफिक घटकांकडे प्रश्न ठेवा:

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

दर:

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

उत्तर बरोबर असल्यास प्रयत्न करा:


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

मागील तर्कात जसे आपण आधीपासूनच पाहिले आहे, तार्किक तर्क, आम्ही फक्त एक जोडणे आवश्यक आहे जे ते सत्यापित करते की जर ते 1 पर्यंत पोहोचले तर आम्ही उत्तर चुकीचे म्हणून दिले:

2013-11-03 12:58:42 पासून कॅप्चर करा

संकलित करा (आम्ही –pkg sqlite3 जोडतो)
valac -v lol.vala --pkg gtk+-3.0 --pkg sqlite3

तीन बटणे तयार करीत आहे (50%, फ्रीझ, पास):

आम्ही एक नवीन क्षैतिज जीबॉक्स तयार करतो आणि त्यामध्ये तीन बटणे जोडतो, आम्ही हा जीबॉक्स आम्ही आधीपासून तयार केलेल्या एकामध्ये जोडतो:

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

2013-11-06 20:48:46 पासून कॅप्चर करा

 

पूर्ण कोडः http://paste.desdelinux.net/4882


लेखाची सामग्री आमच्या तत्त्वांचे पालन करते संपादकीय नीति. त्रुटी नोंदविण्यासाठी क्लिक करा येथे.

3 टिप्पण्या, आपल्या सोडा

आपली टिप्पणी द्या

आपला ई-मेल पत्ता प्रकाशित केला जाणार नाही.

*

*

  1. डेटा जबाबदार: मिगुएल Áन्गल गॅटन
  2. डेटाचा उद्देशः नियंत्रण स्पॅम, टिप्पणी व्यवस्थापन.
  3. कायदे: आपली संमती
  4. डेटा संप्रेषण: कायदेशीर बंधन वगळता डेटा तृतीय पक्षास कळविला जाणार नाही.
  5. डेटा संग्रहण: ओकेन्टस नेटवर्क (EU) द्वारा होस्ट केलेला डेटाबेस
  6. अधिकारः कोणत्याही वेळी आपण आपली माहिती मर्यादित, पुनर्प्राप्त आणि हटवू शकता.

  1.   फॅबिन म्हणाले

    या ट्यूटोरियल बद्दल आपले खूप खूप आभार चीअर्स

  2.   nuanced म्हणाले

    खुप छान! चांगले स्पष्टीकरण आणि तपशीलवार. डेटा धन्यवाद. (आणि)

  3.   आरएचओ म्हणाले

    धन्यवाद मनुष्य! प्रथम म्हणून खूप मनोरंजक.
    विविध पूरक घटना, टाइप टिप्पण्या (त्या प्रकारच्या पॉप अप) किंवा मेनू (प्राथमिक किंवा सूक्ष्म-शेलमध्ये दिसणारे पॅनेल टाइप करा) पहाणे चांगले होईल ...
    सत्य, खूप चांगले.
    आम्ही वाचतो: =)