उबंटू टच [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 जिथे आमच्याकडे एक अभिज्ञापक आहे, प्रश्नाची एक स्ट्रिंग आणि आर 1, आर 2 जे उत्तर 1 आणि उत्तर 2 दर्शवते, शेवटी आपल्याकडे कोणती उत्तरे योग्य आहेत.

U1db कसे कार्य करते ते पाहू या, U1db वापरण्यासाठी आपल्याला सर्वात आधी मॉड्यूल आयात करणे आवश्यक आहेः

import U1db 1.0 as U1db

आम्ही डेटाबेस घोषित करतो:

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

डेटाबेस AU1DbDatedia.u1db म्हणून सेव्ह केले जातील, आता आपण डॉक्युमेंट तयार करू:

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

जिथे आपण {«हॅलो»: «काहीतरी» the स्वरूप पाहू शकता, क्वेरी कार्यान्वित करण्यासाठी, एकतर डेटा जोडण्यासाठी, डेटा प्राप्त करण्यासाठी, ते हटविणे इ. आमच्याकडे U1db.Query घटक आहे.

आम्ही शोधू शकतो प्रशिक्षण च्या विकास वेबसाइटवर उबंटू.

आपण आपल्या applicationप्लिकेशन वर जाऊन आपला डेटाबेस बनवू, जसे आपण पाहिले आहे की आपण डेटाबेस परिभाषित करतो:

यू 1 डीबी. डेटाबेस {आयडी: डीबी प्रश्न; पथ: "પ્રશ્નોdb.u1db"

ठीक आहे, आता डेटाबेस डॉक्यूमेंट्स डीएसडीबी मध्ये काही डीफॉल्ट घटक टाकू.

    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"}
                    ] }
    }

मला माहित आहे की कोड जसा पाहिजे तसा प्रदर्शित होत नाही, परंतु जर आपण पाहिले तर आपल्याकडे एक घटक असल्याचे दिसेल प्रश्न, जे »[] with सह आम्ही निर्दिष्ट करतो की तेथे बरेच (ते स्थिर नाहीत) घटक असू शकतात; या प्रकरणात आपल्याकडे डीफॉल्टनुसार 4, त्यांच्या संबंधित उत्तरासह 4 प्रश्न असतील.

दस्तऐवज घटक मिळविण्यासाठी JSONआम्ही तयार केलेल्या दस्तऐवजाचा अभिज्ञापक निर्दिष्ट करू शकतो (जो आहे) aDocament). आपण प्रथम प्रश्नाचे मजकूर मिळवू इच्छित आहोत अशी कल्पना करूया:

aDocament.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 -> जेएस फाइल. मी त्याला बोलावतो तर्कशास्त्र.

फाईलमधे आम्ही आपल्या क्यूएमएल डॉक्युमेंटमध्ये जेएस फाईल आयात करण्यासाठी अनेक फंक्शन्स तयार करणार आहोत.

लॉगिका म्हणून "logica.js" आयात करा

आम्ही लोगिका हे नाव जोडतो, म्हणून जेव्हा जेव्हा आपल्याला एखाद्या फंक्शनला कॉल करायचे असते तेव्हा आम्ही हे लॉजिका.फनसिओन () म्हणून करू, जणू जणू एखाद्या वस्तूची पध्दती आहे.

आत्तासाठी, हे पोस्ट फार लांब होणार नाही म्हणून आम्ही प्रश्नाची वेळ आणि नंतरचे पर्याय सोडत आहोत, आम्ही प्रश्नांवर आणि मुद्द्यांवर लक्ष केंद्रित करूया, प्रश्नावरुन पुढे जाण्यासाठी आपण असे कार्य पाहू याः

कार्य पुढील प्रश्न (क्रमांक) {// वेळ = 0 प्रश्न.टेक्स्ट = एक डॉक्युमेंट कॉन्टेंट्स.क्यूशन्स [क्रमांक] .कॉक्शन; resp1.text = aDocament.contents.questions [num] .r1; resp2.text = aDocament.contents.questions [num] .r2; resp3.text = aDocament.contents.questions [num] .r3; resp4.text = aDocament.contents.questions [num] .r4; }

जसे आपण पाहू शकतो, आम्ही अर्ग्युमेंट म्हणून आम्ही प्रश्न क्रमांक पास करतो आणि येथून बटणे आणि प्रश्न लेबलला उत्तरे दिली. निवडलेले उत्तर बरोबर असल्यास ते सत्यापित करण्यासाठी आता पाहू:

फंक्शन हिट (संख्या, पर्याय) {var हिट = चुकीचे; var num_correct = aDocament.contents.questions [num]. दुरुस्त; जर (पर्याय == बरोबर_num) हिट = सत्य; रिटर्न हिट }

कोड स्वतःच बोलतो, जर निवडलेला पर्याय डेटाबेसद्वारे प्रदान केलेल्या सारखाच असेल तर तो खरा असेल, अन्यथा तसे होणार नाही. आता ही फंक्शन्स डिफाईन्ड असल्यामुळे ती आमच्या क्यूएमएल कोड मध्ये लागू करू.

सर्वप्रथम आपण एक व्हेरिएबल जोडू जे आपण कोणत्या प्रश्नावर आहोत हे नियंत्रित करेल, आम्ही त्याला num असे नाव देऊ; आमच्याकडे आणखी तीन व्हेरिएबल्स आहेत: हिट्स, मिस आणि पॉईंट्स.

    मालमत्ता पूर्व क्रमांक: 0 मालमत्ता पूर्व क्रमांक: 0 मालमत्ता पूर्वजन्म: 0 मालमत्ता पूर्वोत्तर: 0

सुरुवातीला ते सर्व 0 वर आहेत.

आता आम्ही सर्व उत्तर बटणावर एक ऑन क्लिक जोडा. ऑनक्लिक, ज्याचे नाव आहे त्यानुसार, एक कार्यक्रम आहे जो त्या बटणावर क्लिक केल्यावर होईल:

            बटण {आयडी: रेस 1 मजकूर: "प्रतिसाद 1" अँकरस हरिझोन्टलकेंटर: पॅरेंट .होरिजॉन्टलकेंटर रूंदी: पालक.विड्थ - 20 ऑनक्लिक केलेले: {जर (लॉजिक.सर्टेन (नंबर, 1)) {नंबर = क्रमांक + 1; लॉजिक.एन्क्स्ट क्यूशन (नंबर) एनपॉइंट्स = एनपोइंट्स + birth० जन्म = जन्म + १} अन्य {एनफाल्ट्स = एनफॉल्ट + १}}}

आम्ही पाहतो की बटणावर क्लिक करून ते योग्य आहे की नाही ते तपासेल, जर ते योग्य असेल तर, बिंदू जोडा आणि प्रश्न पास करा, अन्यथा एक जीवन बाकी आहे.

शेवटी जेव्हा पेज घटक लोड होईल तेव्हा आम्ही प्रथम प्रश्न लोड करू:

    पृष्ठ {आयडी: पृष्ठ गेम गेम कंपोनेंट.ऑन कॉम्पलेटेड: ic लॉजिक.नेक्स्टप्रिगंटा (0)}

ते कसे घडले ते पाहूयाः

चाचणी


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

आपला ई-मेल पत्ता प्रकाशित केला जाणार नाही. आवश्यक फील्ड चिन्हांकित केले आहेत *

*

*

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

  1.   गॅबिलस म्हणाले

    मी चरणांचे अनुसरण करतो आणि प्रत्येक गोष्ट कार्य करतो. फक्त सहयोग करण्यासाठी मी असे म्हणतो:
    * हिट्स आणि गमावलेले मूल्य बदलत नाही. आपल्या क्लिक इव्हेंटमधील प्रत्येक बटणावर आपल्याला ते जोडावे लागेल.
    * आणि त्या ओळीत:
    if (लॉजिक.एसेर्टो (क्रमांक, 1)) {
    आपल्याला बटण / उत्तर क्रमांकासाठी 1 बदलणे आवश्यक आहे.

    lolbimbo, मला आपले योगदान स्वारस्यपूर्ण वाटले. मी नवीन tutos आशा आहे !!!

    सामायिक केल्याबद्दल धन्यवाद.

    1.    lolbimbo म्हणाले

      मला हे आवडले आहे की आपण या मुद्द्यांवर टिप्पणी केली आहे कारण मी पोस्टमध्ये हे स्पष्ट केले नाही, आणखी काय आहे, मला त्या बिंदू, यश आणि अपयश आठवत नाहीत, जर आपण त्याकडे लक्ष दिले तर आपल्याला दिसेल की जेव्हा आपण बटण दाबाल, आम्ही यशामध्ये पॉइंट्स जोडतो ... परंतु ते लेबलमध्ये प्रतिबिंबित होत नाहीत, म्हणूनच आपल्याला ते बिंदू दर्शविणार्‍या मजकूर मालमत्तेत ठेवावे लागेल:

      लेबल {
      आयडी: अपयश
      मजकूर: ults दोष: »+ एनफॉल्ट
      रंग: "लाल"
      }

      लेबल {
      आयडी: हिट
      मजकूर: its हिट: born + जन्म
      }

      लेबल {
      आयडी: गुण
      मजकूर: oints गुण: »+ बिंदू
      फॉन्टसाइज: "मध्यम"
      }

      मी भाग in मध्ये देखील स्पष्टीकरण देईन.