د اپلیکیشن رامینځته کول [Vala + Gtk 3] (دویمه برخه)

پدې دوهمه برخه کې به موږ د غوښتنلیک منطق رامینځته کړو (د دې لپاره چې کوډ وګورئ او تحلیل یې په بشپړ ډول وګورئ چې زه به یې د پوسټ لاندې کېږدم) ، مګر د دې دمخه به موږ د sqlite3 کتابتونونو نصبولو ته اړتیا ولرو چې موږ به یې د پوښتنو او د دوی اړوندو ځوابونو خوندي کولو لپاره وکاروو:

sudo apt-get install libsqlite3-dev

یوځل چې کتابتونونه نصب شوي موږ به یوازې د "Sqlite کارولو" ته اړتیا ولرو؛ تر څو په vala کې sqlite وکاروئ.

موږ به اړتیا ولرو چې یو جدول جوړ کړو چې پکې شامل دي:

پوښتنه
ځواب 1
ځواب 2
ځواب 3
ځواب 4
سم

مثال:

پوښتنه = د لینکس څخه ښه بلاګ دی؟

ځواب 1 = هغه بلاګ شتون نلري
ځواب 2 = نه
ځواب = = هو
ځواب = = سلام

لکه څنګه چې موږ به ټول پوه شو سم ځواب 2 دی (ښه 3 دی)

سم = 3

د جدول رامینځته کولو او اداره کولو لپاره موږ به اړتیا ولرو چې sql (تاسو کولی شئ د دې لپاره په خپل غوره لټون انجن کې لټون وکړئ) ، د میز جوړولو لپاره بیان:

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 څخه نیول

جدول جوړ کړئ او پوښتنې داخل کړئ:

 شخصي باطل bd () {تار errmsg؛ // ډیټابیس خلاص کړئ / ډیټابیس جوړ کړئ ec ec = Sqlite.Dat database.open ("test.db" ، db)؛ که (ec! = Sqlite.OK) der stderr.printf ("ډیټابیس نشي پرانیستلی:٪ d:٪ s \ n"، db.errcode ()، db.errmsg ())؛ } که (! FileUtils.test ("test.db" ، FileTest.IS_REGULAR)) {سلسلې پوښتنې = "" "د میز پوښتنې پیدا کړئ (د پوښتنې متن ، ځواب 1 TEXT ، ځواب 2 TEXT ، ځواب3 TEXT ، ځواب 4 متن ، سم INT)؛ INSERT د INTO پوښتنې (پوښتنې ، ځواب 1 ، ځواب 2 ، ځواب3 ، ځواب4 ، سم) د ارزښتونه ('دا د لینکس څخه ښه بلاګ دی' ، 'دا هیڅ بلاګ نه دی' ، 'نه' ، 'هو' ، 'هیلو' ، 3)؛ داخلول پوښتنې (پوښتنه ، ځواب 1 ، ځواب 2 ، ځواب3 ، ځواب 4 ، سم) ارزښتونه ('5 + 5'، '25'، '10'، '3'، '5'، 2) "" ""؛ ec = db.exec (پوښتنې ، نال ، بهر غلط)؛ که (ec! = Sqlite.OK) der stderr.printf ("تېروتنه:٪ s \ n"، errmsg)؛ }}}

وګوره چې هیڅ غلطي نشته:

 که (ec! = Sqlite.OK) der stderr.printf ("تېروتنه:٪ s \ n"، errmsg)؛ راستنیدنه -1؛ }

موږ به 6 تارونه رامینځته کړو چې زموږ سره به د پوښتنو او ځوابونو ګمارلو کې مرسته وکړي.

 شخصي تار p؛ شخصي تار r1؛ شخصي تار r2؛ شخصي تار r3؛ شخصي تار r4؛ شخصي تار c؛

د یوې انتخاب سره د پوښتنې ځای کول (کوم چې موږ له test.db څخه ترلاسه کوو):

 شخصي باطل bd_select_questions () query سلسله پوښتنه = "پوښتنه پوښتنه ، ځواب 1 ، ځواب 2 ، ځواب3 ، ځواب 4 ، د RNDOM لخوا ترتیب شوي پوښتنو څخه سمه تنظیم کړئ ()"؛ int rc = db.prepare_v2 (پوښتنه ، -1 ، د stmt ، null)؛ int کولس = stmt.column_count ()؛ rc = stmt.step ()؛ انټ کول؛ که (rc == Sqlite.ROW) {د (col = 0؛ col <cols؛ col ++) لپاره {تار txt = stmt.column_text (col)؛ که (col == 0) {p = txt؛ } بل که (col == 1) 1 r2 = txt؛ } بل که (col == 2) 3 r3 = txt؛ } بل که (col == 4) 4 rXNUMX = txt؛ } بل که (col == XNUMX) XNUMX rXNUMX = txt؛ } بل {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 څخه نیول

تالیف کړئ (موږ د kpkg sqlite3 اضافه کوو)
valac -v lol.vala --pkg gtk+-3.0 --pkg sqlite3

د درې تonsیو رامینځته کول (50٪ ، منجمد ، پاس):

موږ یو نوی افقی Gbox رامینځته کوو او پدې کې درې تonsۍ اضافه کوو ، موږ دا Gbox هغه ته اضافه کوو چې موږ دمخه رامینځته کړی و:

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. د معلوماتو ذخیره: ډیټابیس د Occentus شبکې (EU) لخوا کوربه شوی
  6. حقونه: په هر وخت کې تاسو کولی شئ خپل معلومات محدود ، له سره تنظیم او حذف کړئ.

  1.   فابین dijo

    د ټیوټوریل څخه ډیره مننه ، زموږ د هغوی لپاره خورا په زړه پورې څوک چې غواړي د یو څه ساده سره پیل وکړي ، زه به د ډیټا میزونو رامینځته کولو برخه کې نورې مرستې ته اړتیا ولرم. هڅول

  2.   nananced dijo

    ډیر ښه! ښه تشریح او توضیحي. د معلوماتو لپاره مننه. (او)

  3.   rho dijo

    مننه سړیه! د لومړي په څیر ډیر په زړه پوری.
    دا به ښه وي چې مختلف تکمیل مثالونه وګورئ ، د نظرونو ډولونه ټایپ کړئ (هغه ډول پاپ اپ) یا مینو (د پینلونو هغه ډول ولیکئ چې په ابتدايي یا ګینوم شیل کې ښکاري) ...
    حقیقت خورا ښه دی.
    موږ لوستل: =)

bool (ریښتیا)