એક એપ્લિકેશન બનાવી રહ્યાં છે [Vala + Gtk 3] (2 ભાગ)

આ બીજા ભાગમાં આપણે એપ્લિકેશનનું તર્ક બનાવીશું (કોડને જોવા માટે અને તેનું વિશ્લેષણ કરવા માટે તેને સારી રીતે જોવા માટે કે હું તેને પોસ્ટની નીચે મૂકીશ), પરંતુ તે પહેલાં આપણે sqlite3 લાઇબ્રેરીઓ ઇન્સ્ટોલ કરવાની જરૂર પડશે જેનો ઉપયોગ આપણે પ્રશ્નો અને તેના સંબંધિત જવાબોને સાચવવામાં સમર્થ બનવા માટે કરીશું:

sudo apt-get install libsqlite3-dev

એકવાર પુસ્તકાલયો ઇન્સ્ટોલ થઈ ગયા પછી અમને ફક્ત "સ્ક્લાઇટનો ઉપયોગ કરીને" જરૂર પડશે; વાલા માં sqlite વાપરવા માટે સમર્થ થવા માટે.

આપણે એક કોષ્ટક બનાવવાની જરૂર પડશે જેમાં આ શામેલ છે:

પ્રશ્ન
જવાબ 1
જવાબ 2
જવાબ 3
જવાબ 4
સાચું

ઉદાહરણ:

પ્રશ્ન = છે desdelinux સારો બ્લોગ?

જવાબ 1 = તે બ્લોગ અસ્તિત્વમાં નથી
જવાબ 2 = ના
જવાબ = = હા
જવાબ 4 = હેલો

કેમ કે આપણે બધાને ખબર પડશે કે સાચો જવાબ 2 છે (સારી એક 3 છે)

સાચું = 3

કોષ્ટક બનાવવા અને તેને હેન્ડલ કરવા માટે અમને એસક્યુએલ જાણવાની જરૂર રહેશે (તમે તમારા મનપસંદ સર્ચ એન્જિનમાં શોધી શકો છો), ટેબલ બનાવવા માટેનું નિવેદન:

CREATE TABLE preguntas (pregunta TEXT, respuesta1 TEXT, respuesta2 TEXT, respuesta3 TEXT, respuesta4 TEXT, correcto INT);
પ્રશ્નો શામેલ કરો…:

પ્રશ્નો દાખલ કરો (પ્રશ્ન, જવાબ1, જવાબ2, જવાબ3, જવાબ4, સાચા) મૂલ્યો ('es desdelinux સારો બ્લોગ', 'તે બ્લોગ નથી', 'ના', 'હા', 'હેલો', 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; // ડેટાબેઝ ખોલો / ડેટાબેઝ બનાવો int ec = Sqlite.Database.open("test.db", આઉટ db); જો (ec != Sqlite.OK) { stderr.printf ("ડેટાબેઝ ખોલી શકાતો નથી: %d: %s\n", db.errcode (), db.errmsg ()); } જો (!FileUtils.test ("test.db", FileTest.IS_REGULAR)) { સ્ટ્રિંગ ક્વેરી = """ કોષ્ટક પ્રશ્નો બનાવો ( પ્રશ્ન ટેક્સ્ટ, જવાબ1 ટેક્સ્ટ, જવાબ2 ટેક્સ્ટ, જવાબ3 ટેક્સ્ટ, જવાબ4 ટેક્સ્ટ, સાચો INT); દાખલ કરો INTO પ્રશ્નો (પ્રશ્ન, જવાબ1, જવાબ2, જવાબ3, જવાબ4, સાચો) મૂલ્યો ('છે desdelinux સારો બ્લોગ', 'તે બ્લોગ નથી', 'ના', 'હા', 'હેલો', 3); પ્રશ્નો દાખલ કરો (પ્રશ્ન, જવાબ1, જવાબ2, જવાબ3, જવાબ4, સાચા) મૂલ્યો ('5+5', '25', '10', '3', '5', 2); """; ec = db.exec (ક્વેરી, નલ, આઉટ errmsg); જો (ec != Sqlite.OK) { stderr.printf ("ભૂલ: %s\n", errmsg); } } }

તપાસો કે તેમાં કોઈ ભૂલ નથી:

 જો (ઇસી! = Sqlite.OK) der stderr.printf ("ભૂલ:% s \ n", errmsg); વળતર -1; }

અમે 6 શબ્દમાળાઓ બનાવીશું જે અમને પ્રશ્નો અને જવાબોની સોંપણી બનાવવામાં મદદ કરશે.

 ખાનગી શબ્દમાળા પી; ખાનગી શબ્દમાળા r1; ખાનગી શબ્દમાળા r2; ખાનગી શબ્દમાળા r3; ખાનગી શબ્દમાળા r4; ખાનગી શબ્દમાળા સી;

કોઈ પ્રશ્ન (જે આપણે test.db માંથી મેળવીએ છીએ) સાથે પસંદ કરો:

 ખાનગી રદબાતલ બીડી_સેલેક_વેક્શન્સ () query શબ્દમાળા ક્વેરી = "પ્રશ્ન, જવાબ 1, જવાન્સ2, જવાન્સ3, ઉત્તર 4, રેન્ડમ () દ્વારા ઓર્ડર દ્વારા સચોટ પ્રશ્નો પસંદ કરો"; પૂર્ણાંક rc = db.prepare_v2 (ક્વેરી, -1, આઉટ stmt, નલ); પૂર્ણાંક cols = stmt.column_count (); rc = stmt.step (); પૂર્ણાંક જો (rc == Sqlite.ROW) {(કોલ = 0; કોલ <કોલ્સ; કોલ ++) માટે {શબ્દમાળા txt = stmt.column_text (કોલ); જો (કોલ == 0) {પી = ટેક્સ્ટ; } અન્યથા જો (કોલ == 1) {r1 = txt; } અન્યથા જો (કોલ == 2) {r2 = txt; } અન્યથા જો (કોલ == 3) {r3 = txt; } અન્યથા જો (કોલ == 4) {r4 = txt; } બીજું {સી = txt; print // પ્રિંટ ("% s =% s \ n", stmt.column_name (કોલ), 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


તમારી ટિપ્પણી મૂકો

તમારું ઇમેઇલ સરનામું પ્રકાશિત કરવામાં આવશે નહીં. આવશ્યક ક્ષેત્રો સાથે ચિહ્નિત થયેલ છે *

*

*

  1. ડેટા માટે જવાબદાર: મિગ્યુએલ gelંજેલ ગેટóન
  2. ડેટાનો હેતુ: નિયંત્રણ સ્પામ, ટિપ્પણી સંચાલન.
  3. કાયદો: તમારી સંમતિ
  4. ડેટાની વાતચીત: કાયદાકીય જવાબદારી સિવાય ડેટા તૃતીય પક્ષને આપવામાં આવશે નહીં.
  5. ડેટા સ્ટોરેજ: cસેન્ટસ નેટવર્ક્સ (ઇયુ) દ્વારા હોસ્ટ કરેલો ડેટાબેઝ
  6. અધિકાર: કોઈપણ સમયે તમે તમારી માહિતીને મર્યાદિત, પુન recoverપ્રાપ્ત અને કા deleteી શકો છો.

  1.   ફેબિઅન જણાવ્યું હતું કે

    ટ્યુટોરિયલ માટે ખૂબ ખૂબ આભાર, આપણામાંના માટે ખૂબ જ રસપ્રદ, જે કંઇક સરળ વસ્તુથી પ્રારંભ કરવા માગે છે, મને ડેટા કોષ્ટકો બનાવવાના ભાગમાં વધુ સહાયની જરૂર પડશે. ચીર્સ

  2.   nuanced જણાવ્યું હતું કે

    ખૂબ સરસ! સારી રીતે સમજાવ્યું અને વિગતવાર. ડેટા માટે આભાર. (અને)

  3.   રે જણાવ્યું હતું કે

    આભાર! પ્રથમ તરીકે ખૂબ જ રસપ્રદ.
    વિવિધ પૂરક દાખલાઓ, પ્રકારનાં ટિપ્પણીઓ (તે પ્રકારનાં પ upપ અપ્સ) અથવા મેનૂઝ (પ્રારંભિક અથવા જીનોમ-શેલમાં દેખાતી પેનલો લખો) ને જોવું સારું રહેશે ...
    સત્ય, ખૂબ સારું.
    અમે વાંચ્યું: =)