Ubuntu टच [QML] के लिए एक ऐप बनाना - [भाग 2]

परिचय:

खैर यहां हमारे पास वह पोस्ट है जो इस प्रकार है पहला भाग, इसमें हम डेटा (प्रश्नों) को संभालने पर ध्यान केंद्रित करने जा रहे हैं, और हम खेल के तर्क भाग से शुरू करेंगे, अगले भाग में हम तर्क समाप्त करेंगे और समय और 3 विकल्पों को लागू करेंगे।

आप मेरे लॉन्चपैड रिपॉजिटरी में कोड पा सकते हैं (जलीय जलीय), जहां मैं प्रगति करते हुए अपडेट करूंगा।

डेटाबेस:

डेटाबेस के लिए हम उपयोग करेंगे u1db, कि यह एक डेटाबेस है जो डेटा को फॉर्मेट में सेव करता है JSON.

सबसे पहले आइए देखें कि हमें कौन सा डेटा सहेजना चाहिए, हमारे पास 1 प्रश्न है (प्रश्न के पाठ के अलावा एक पहचानकर्ता रखना अच्छा होगा), 4 संभावित उत्तरों के साथ, जिनमें से केवल 1 ही हो सकता है, इसलिए दस्तावेज़ में JSON एक ही प्रश्न का होना चाहिए:

{
"id": 1,
"pregunta": " habra dev.desdelinux.net ",
"respuestas" : { r1: "si" , r2: "no" , r3: "no se sabe" ,  r4: "esto es una respuesta falsa" },
"correcta": 3
}

जैसा कि हम देख सकते हैं, हमने प्रारूप में संरचित किया है JSON जहां हमारे पास एक पहचानकर्ता, प्रश्न के साथ एक स्ट्रिंग और r1,r2 है जो उत्तर 1 और उत्तर 2 का प्रतिनिधित्व करता है, अंततः हमारे पास है कि कौन सा उत्तर सही है।

आइए थोड़ा देखें कि U1db कैसे काम करता है, U1db का उपयोग करने के लिए हमें सबसे पहले मॉड्यूल को आयात करना होगा:

import U1db 1.0 as U1db

हम डेटाबेस घोषित करते हैं:

U1db.Database {
id: aDatabase
path: "aU1DbDatabase"
}

डेटाबेस को aU1DbDatabase.u1db के रूप में सहेजा जाएगा, अब हम एक दस्तावेज़ बनाते हैं:

U1db.Document {
id: aDocument
database: aDatabase
docId: 'helloworld'
create: true
defaults: { "hello": "Hello World!" }
}

जहां हम क्वेरी निष्पादित करने, डेटा जोड़ने, डेटा प्राप्त करने, उन्हें हटाने आदि के लिए प्रारूप { «हैलो»: «कुछ» } देख सकते हैं। हमारे पास U1db.Query तत्व है।

हम एक मिल सकते हैं ट्यूटोरियल विकास वेबसाइट पर Ubuntu.

आइए अपने एप्लिकेशन पर जाएं और अपना डेटाबेस बनाएं, जैसा कि हमने देखा है कि हम डेटाबेस को परिभाषित करते हैं:

U1db.डेटाबेस {आईडी: dbquestions; पथ: "questionsdb.u1db" }

ठीक है, अब preguntasdb डेटाबेस दस्तावेज़ में कुछ डिफ़ॉल्ट तत्व डालते हैं:

    U1db.Document {
        id: aDocument
        database: preguntasdb
        docId: 'preguntas'
        create: true
        defaults: { "preguntas":
                    [
                        {"pregunta":"Habra dev.desdelinux.net ?", 
                        "r1":"si", "r2":"no", "r3":"nose", 
                        "r4":"respuesta falsa", "correcta": "3" },
                        {"pregunta":"Quien es hagrid (harry potter) ?", 
                        "r1":"El vicedirector de la escuela", 
                        "r2":"El guardabosques", 
                        "r3":"El profesor de transformaciones", 
                        "r4":"Un prefecto", 
                        "correcta": "2"},
                        {"pregunta":"¿Cúal es la capital de Islandia?", 
                       "r1":"Amsterdam",
                       "r2":"Reykjavik", 
                       "r3":"Tiflis", 
                       "r4":"Almaty",
                       "correcta": "2"}
                    ] }
    }

मुझे पता है कि कोड उस तरह प्रदर्शित नहीं होता जैसा उसे होना चाहिए, लेकिन अगर हम बारीकी से देखें तो हम देखेंगे कि हमारे पास एक तत्व है पूछताछ, जो कि » [ ] » के साथ हम निर्दिष्ट करते हैं कि कई (वे स्थिर नहीं हैं) तत्व हो सकते हैं; इस मामले में हमारे पास पहले से ही डिफ़ॉल्ट रूप से 4 प्रश्न होंगे, उनके संबंधित उत्तरों के साथ।

दस्तावेज़ के तत्व प्राप्त करने के लिए JSON, हम उस दस्तावेज़ के पहचानकर्ता को निर्दिष्ट कर सकते हैं जिसे हमने बनाया है (जो है एक दस्तावेज़). आइए कल्पना करें कि हम पहले प्रश्न का पाठ प्राप्त करना चाहते हैं:

aDocument.contents.questions[0].प्रश्न

Esta línea de código nos retorna el contenido de pregunta del documento aDocument, del elemento 0 (el primero del índice), que es: «Habra dev.desdelinux.net?». Si ponemos en el índice el número 1, entonces seáa la segunda pregunta.

खेल के तर्क को प्रोग्रामिंग करना

खैर, अब जब हम जानते हैं कि उस डेटाबेस को कैसे संभालना है जहां हमने प्रश्न सहेजे हैं, तो हम गेम के तर्क को प्रोग्राम करने जा रहे हैं। सबसे पहले हम एक फाइल बनाएंगे जावास्क्रिप्ट (.js): नई जोड़ें -> Qt -> Js फ़ाइल। मैं उसे फोन करुंगा तर्क.जे.एस.

फ़ाइल में हम js फ़ाइल को अपने qml दस्तावेज़ में आयात करने के लिए कई फ़ंक्शन बनाने जा रहे हैं:

"logica.js" को Logica के रूप में आयात करें

हम इसके साथ Logica नाम जोड़ते हैं, इसलिए जब हम किसी फ़ंक्शन को कॉल करना चाहते हैं तो हम इसे Logica.function() के रूप में करेंगे, जैसे कि यह एक ऑब्जेक्ट था जिसके अपने तरीके हैं।

अभी के लिए, ताकि पोस्ट बहुत लंबी न हो जाए, हम प्रश्न का समय और विकल्प बाद के लिए छोड़ देंगे, हम प्रश्नों और बिंदुओं पर ध्यान केंद्रित करेंगे, आइए एक फ़ंक्शन देखें जिसका उपयोग हम प्रश्न को पास करने के लिए करेंगे:

फ़ंक्शन अगला प्रश्न (संख्या) {//समय = 0 प्रश्न.पाठ = aDocument.contents.questions[num].प्रश्न; resp1.text = aDocument.contents.questions[num].r1; resp2.text = aDocument.contents.questions[num].r2; resp3.text = aDocument.contents.questions[num].r3; resp4.text = aDocument.contents.questions[num].r4; }

जैसा कि हम देख सकते हैं, हम उस प्रश्न की संख्या को एक तर्क के रूप में पास करते हैं जहां हम हैं और यहां से यह उत्तरों को बटनों और प्रश्न के लेबल पर रखता है। आइए अब देखें कि चयनित उत्तर सही है या नहीं:

फ़ंक्शन हिट (संख्या, विकल्प) { var हिट = गलत; var सही_num = aDocument.contents.questions[num].correct; यदि (विकल्प == सही_संख्या) हिट = सत्य; वापसी हिट; }

कोड स्वयं बोलता है, यदि चुना गया विकल्प वही है जो डेटाबेस द्वारा प्रदान किया गया है, तो यह सत्य होगा, अन्यथा नहीं। अब जब हमारे पास ये फ़ंक्शन परिभाषित हैं, तो हम उन्हें अपने qml कोड में लागू करेंगे।

सबसे पहले हम एक वेरिएबल जोड़ेंगे जो यह नियंत्रित करेगा कि हम किस प्रश्न में हैं, हम इसे संख्या कहेंगे; हमारे पास तीन और चर भी होंगे: हिट, मिस और पॉइंट।

    संपत्ति पूर्णांक संख्या: 0 संपत्ति पूर्णांक nfailures: 0 संपत्ति पूर्णांक जन्म: 0 संपत्ति पूर्णांक npoints: 0

प्रारंभ में वे सभी 0 पर हैं।

अब हम सभी प्रतिक्रिया बटनों पर एक ऑनक्लिक जोड़ते हैं। ऑनक्लिक, जैसा कि इसके नाम से पता चलता है, एक घटना है जो उक्त बटन पर क्लिक करने पर घटित होगी:

            बटन {आईडी: रिस्पॉन्स1 टेक्स्ट: "रिस्पॉन्स 1" एंकर्स.हॉरिजॉन्टलसेंटर: पेरेंट.हॉरिजॉन्टलसेंटर चौड़ाई: पेरेंट.विड्थ - 20 ऑनक्लिक्ड: { अगर(लॉजिक.हिट(संख्या,1)){ संख्या = संख्या + 1; Logic.nextQuestion(num) npoints = npoints + 50 जन्म = जन्म + 1 } अन्यथा { nmisses = nmisses + 1 } } }

हम देखते हैं कि बटन पर क्लिक करते समय यह जाँचता है कि यह सही है या नहीं, यदि है तो अंक जोड़ें और प्रश्न छोड़ दें, अन्यथा एक जीवन घटा दें।

अंततः पेज घटक लोड होने पर हम पहला प्रश्न लोड करेंगे:

    पेज { आईडी: पेजगेम कंपोनेंट.ऑनकंप्लीटेड: { लॉजिक.नेक्स्टक्वेश्चन(0) }

आइए देखें कि यह कैसे हुआ:

परीक्षण


अपनी टिप्पणी दर्ज करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड के साथ चिह्नित कर रहे हैं *

*

*

  1. डेटा के लिए जिम्मेदार: मिगुएल elngel Gatón
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।

  1.   गेबियलस कहा

    मैं चरणों का पालन कर रहा हूं और सब कुछ काम करता है। केवल सहयोग के लिए मैं कहता हूं कि:
    * हिट और मिस का मूल्य नहीं बदलता। आपको इसे इसके क्लिक इवेंट में प्रत्येक बटन में जोड़ना होगा।
    * और वह पंक्ति में:
    यदि(तर्क.हिट(संख्या,1)){
    आपको बटन/प्रतिक्रिया की संख्या से 1 को बदलना होगा।

    लोलबिम्बो, मुझे आपका योगदान दिलचस्प लगता है। मैं नये ट्यूटोरियल्स की प्रतीक्षा कर रहा हूँ!!!

    बाँटने के लिए धन्यवाद.

    1.    लोलिम्बो कहा

      मुझे पसंद है कि आपने इन बिंदुओं पर टिप्पणी की है क्योंकि मैंने पोस्ट में इसे स्पष्ट नहीं किया है, इसके अलावा, मुझे बिंदु, सफलताएं और असफलताएं याद नहीं हैं, यदि आप इसे देखेंगे तो आप देखेंगे कि जब हम बटन दबाते हैं तो हम सफलताओं में अंक जोड़ते हैं... लेकिन वे लेबल में प्रतिबिंबित नहीं होते हैं, ऐसा इसलिए है क्योंकि हमें इसे इसकी टेक्स्ट प्रॉपर्टी में रखना होगा जो बिंदुओं को दिखाता है:

      लेबल {
      आईडी: दोष
      पाठ: "विफलताएँ:" + nविफलताएँ
      रंग: "लाल"
      }

      लेबल {
      आईडी:हिट
      पाठ: «हिट: » + जन्म
      }

      लेबल {
      आईडी: अंक
      पाठ: «अंक: » + npoints
      फ़ॉन्ट आकार: "मध्यम"
      }

      मैं इसे भाग 3 में भी स्पष्ट करूंगा।