உபுண்டு டச் [QML] க்கான பயன்பாட்டை உருவாக்குகிறது - [பகுதி 2]

அறிமுகம்:

சரி இங்கே நாம் பின்வருமாறு பகுதி ஒன்றுஇதில் நாம் தரவை (கேள்விகளை) கையாள்வதில் கவனம் செலுத்தப் போகிறோம், மேலும் விளையாட்டின் தர்க்கப் பகுதியுடன் தொடங்குவோம், அடுத்த ஒன்றில் தர்க்கத்தை முடித்துவிட்டு நேரத்தையும் 3 விருப்பங்களையும் செயல்படுத்துவோம்.

எனது லாஞ்ச்பேட் களஞ்சியத்தில் குறியீட்டைக் காணலாம் (இங்கே கிளிக் செய்க), நான் செல்லும்போது அதை புதுப்பிப்பேன்.

தரவுத்தளம்:

தரவுத்தளத்திற்கு நாங்கள் பயன்படுத்துவோம் u1db, இது வடிவத்தில் தரவைச் சேமிக்கும் தரவுத்தளமாகும் எஞ்சினியரிங்.

முதலில் நாம் என்ன தரவைச் சேமிக்க வேண்டும் என்று பார்ப்போம், எங்களிடம் 1 கேள்வி உள்ளது (கேள்வியின் உரையைத் தவிர ஒரு அடையாளங்காட்டி வைத்திருப்பது நன்றாக இருக்கும்), 4 சாத்தியமான பதில்களுடன், அவற்றில் 1 மட்டுமே இருக்க முடியும், எனவே ஆவணம் எஞ்சினியரிங் ஒற்றை கேள்வி இருக்க வேண்டும்:

{ "id": 1, "question": " dev இருக்கும்.desdelinux.net ", "பதில்கள்" : { r1: "ஆம்", r2: "இல்லை", r3: "தெரியாது", r4: "இது தவறான பதில்" }, "சரியானது": 3 }

நாம் பார்க்க முடியும் என நாம் வடிவத்தில் கட்டமைக்கப்பட்டுள்ளோம் எஞ்சினியரிங் எங்களிடம் ஒரு அடையாளங்காட்டி உள்ளது, கேள்வியுடன் ஒரு சரம் மற்றும் பதில் 1 மற்றும் பதில் 2 ஐக் குறிக்கும் r1, r2, இறுதியாக எந்த பதில்கள் சரியானவை.

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

கேள்விகளைச் செயல்படுத்த, தரவைச் சேர்ப்பது, தரவைப் பெறுவது, அவற்றை நீக்குதல் போன்றவற்றை «« ஹலோ »:« ஏதாவது »the வடிவத்தைக் காணலாம். எங்களிடம் U1db.Query உறுப்பு உள்ளது.

நாம் ஒரு காணலாம் பயிற்சி இன் மேம்பாட்டு இணையதளத்தில் உபுண்டு.

தரவுத்தளத்தை வரையறுப்பதைப் பார்த்தபடி, எங்கள் பயன்பாட்டிற்குச் சென்று எங்கள் தரவுத்தளத்தை உருவாக்குவோம்:

U1db.Database {id: db கேள்விகள்; பாதை: "questionsdb.u1db"}

சரி, இப்போது தரவுத்தள ஆவணத்தில் சில இயல்புநிலை கூறுகளை வைப்போம் கேள்விகள்:

    U1db.Document { id: aDocument database: questionsdb docId: 'questions' create: true defaults: { "questions": [ {"question":"dev இருக்கும்.desdelinux.net ?", "r1":"ஆம்", "r2":"இல்லை", "r3":"மூக்கு", "r4":"தவறான பதில்", "சரியானது": "3" }, {"கேள்வி ":"ஹாக்ரிட் (ஹாரி பாட்டர்) யார்?", "r1":"பள்ளியின் துணை முதல்வர்", "r2":"கேம்கீப்பர்", "r3":"மாற்றும் ஆசிரியர்", "r4":" ஒரு ப்ரீஃபெக்ட்", "சரியானது": "2"}, {"கேள்வி":"ஐஸ்லாந்தின் தலைநகரம் என்ன?", "r1":"ஆம்ஸ்டர்டாம்", "r2":"Reykjavik", "r3":" Tbilisi ", "r4":"Almaty", "சரியானது": "2"} ] } }

குறியீடு அது போலவே காட்டப்படாது என்பதை நான் அறிவேன், ஆனால் நாம் நெருக்கமாகப் பார்த்தால், நமக்கு ஒரு உறுப்பு இருப்பதைக் காண்போம் கேள்விகள், அவை »[] with உடன் பல (அவை நிலையானவை அல்ல) கூறுகள் இருக்கலாம் என்று குறிப்பிடுகிறோம்; இந்த விஷயத்தில் இயல்புநிலையாக 4, அந்தந்த பதில்களுடன் 4 கேள்விகள் இருக்கும்.

ஆவண கூறுகளைப் பெற எஞ்சினியரிங், நாங்கள் உருவாக்கிய ஆவணத்தின் அடையாளங்காட்டியைக் குறிப்பிடலாம் (இது a ஆவணம்). முதல் கேள்வியின் உரையைப் பெற விரும்புகிறோம் என்று கற்பனை செய்யலாம்:

aDocument.contents.questions [0]. கேள்வி

இந்தக் குறியீட்டு வரியானது, ஆவணம் aDocument இன் கேள்வி உள்ளடக்கத்தை, உறுப்பு 0 (குறியீட்டில் முதலாவது), அதாவது: «தேவ் இருக்கும்.desdelinux.net?" குறியீட்டில் எண் 1 ஐ வைத்தால், அது இரண்டாவது கேள்வி.

விளையாட்டு தர்க்கத்தை நிரலாக்குகிறது

சரி, இப்போது நாம் கேள்விகளைச் சேமித்த தரவுத்தளத்தை எவ்வாறு கையாள்வது என்பது எங்களுக்குத் தெரியும், நாங்கள் விளையாட்டு தர்க்கத்தை நிரல் செய்யப் போகிறோம். முதலில் நாம் ஒரு கோப்பை உருவாக்குவோம் ஜாவா (.js): புதிய -> Qt -> Js கோப்பைச் சேர்க்கவும். நான் அவரை அழைப்பேன் log.js.

கோப்பில் நாம் பல செயல்பாடுகளை உருவாக்கப் போகிறோம், js கோப்பை எங்கள் qml ஆவணத்தில் இறக்குமதி செய்ய:

"Loga.js" ஐ லாஜிகாவாக இறக்குமதி செய்க

நாங்கள் லாஜிகா என்ற பெயரை இணைக்கிறோம், எனவே ஒரு செயல்பாட்டை அழைக்க விரும்பும்போது அதை லாஜிகா.பன்சியன் () என்று செய்வோம், அது அதன் வழிமுறைகளைக் கொண்ட ஒரு பொருளைப் போல.

இப்போதைக்கு, இடுகை மிக நீண்டதாக மாறாமல் இருப்பதற்கு, கேள்வியின் நேரத்தையும் பின்னர் விருப்பங்களையும் விட்டுவிடுவோம், கேள்விகள் மற்றும் புள்ளிகளில் கவனம் செலுத்துவோம், ஒரு செயல்பாட்டைப் பார்ப்போம் கேள்வி:

செயல்பாடு அடுத்த கேள்வி (எண்) {// நேரம் = 0 கேள்வி.டெக்ஸ்ட் = aDocument.contents.questions [எண்]. கேள்வி; resp1.text = aDocument.contents.questions [எண்] .r1; resp2.text = aDocument.contents.questions [எண்] .r2; resp3.text = aDocument.contents.questions [எண்] .r3; resp4.text = aDocument.contents.questions [எண்] .r4; }

நாம் பார்க்க முடியும் என, நாம் இருக்கும் இடத்தில் கேள்வி எண்ணை ஒரு வாதமாக அனுப்புகிறோம், இங்கிருந்து அது பொத்தான்கள் மற்றும் கேள்வி லேபிளுக்கான பதில்களை வைக்கிறது. தேர்ந்தெடுக்கப்பட்ட பதில் சரியாக இருந்தால் சரிபார்க்க இப்போது பார்ப்போம்:

செயல்பாடு வெற்றி (எண், விருப்பம்) {var hit = false; var num_correcto = aDocument.contents.questions [num]. சரியானது; if (விருப்பம் == correct_num) hit = true; திரும்ப வெற்றி; }

தேர்ந்தெடுக்கப்பட்ட விருப்பம் தரவுத்தளத்தால் வழங்கப்பட்டதைப் போலவே இருந்தால், அது உண்மையாக இருக்கும், இல்லையெனில் அது அவ்வாறு செய்யாது. இப்போது இந்த செயல்பாடுகளை வரையறுத்துள்ளதால், அவற்றை எங்கள் qml குறியீட்டில் பயன்படுத்துவோம்.

முதலில் நாம் ஒரு மாறியைச் சேர்ப்போம், அது நாம் எந்த கேள்வியைக் கட்டுப்படுத்துகிறது, அதை நாம் எண் என்று அழைப்போம்; மேலும் மூன்று மாறிகள் எங்களிடம் இருக்கும்: வெற்றி, மிஸ் மற்றும் புள்ளிகள்.

    சொத்து எண்ணின் எண்: 0 சொத்து எண்ணாக தவறுகள்: 0 சொத்து எண்ணாக பிறப்புகள்: 0 சொத்து எண்ணாக புள்ளிகள்: 0

ஆரம்பத்தில் அவை அனைத்தும் 0 இல் உள்ளன.

இப்போது எல்லா பதில் பொத்தான்களுக்கும் onClick ஐ சேர்க்கிறோம். onClick, அதன் பெயர் சொல்வது போல், பொத்தானைக் கிளிக் செய்யும் போது நடக்கும் ஒரு நிகழ்வு:

            பொத்தான் {id: resp1 உரை: "மறுமொழி 1" anchors.horizontalCenter: parent.horizontalCenter அகலம்: parent.wizth - 20 onClicked: {if (Logic.certain (num, 1)) {num = num + 1; Logic.nextQuestion (num) npoints = npoints + 50 births = births + 1} else {nfaults = nfaults + 1}}}

பொத்தானைக் கிளிக் செய்யும் போது, ​​அது சரியானதா இல்லையா என்பதைச் சரிபார்க்கிறது, அது சரியாக இருந்தால், புள்ளிகளைச் சேர்த்து கேள்வியைக் கடந்து செல்லுங்கள், இல்லையெனில் ஒரு வாழ்க்கை இருக்கும்.

பக்க கூறு ஏற்றும்போது இறுதியாக முதல் கேள்வி சுமை செய்வோம்:

    பக்கம் {id: pageGame Component.onCompleted: {Logic.nextPregunta (0)}

அது எப்படி மாறியது என்று பார்ப்போம்:

சோதனை


உங்கள் கருத்தை தெரிவிக்கவும்

உங்கள் மின்னஞ்சல் முகவரி வெளியிடப்பட்ட முடியாது. தேவையான புலங்கள் குறிக்கப்பட்டிருக்கும் *

*

*

  1. தரவுக்கு பொறுப்பு: மிகுவல் ஏஞ்சல் கேடன்
  2. தரவின் நோக்கம்: கட்டுப்பாட்டு ஸ்பேம், கருத்து மேலாண்மை.
  3. சட்டபூர்வமாக்கல்: உங்கள் ஒப்புதல்
  4. தரவின் தொடர்பு: சட்டபூர்வமான கடமையால் தவிர மூன்றாம் தரப்பினருக்கு தரவு தெரிவிக்கப்படாது.
  5. தரவு சேமிப்பு: ஆக்சென்டஸ் நெட்வொர்க்குகள் (EU) வழங்கிய தரவுத்தளம்
  6. உரிமைகள்: எந்த நேரத்திலும் உங்கள் தகவல்களை நீங்கள் கட்டுப்படுத்தலாம், மீட்டெடுக்கலாம் மற்றும் நீக்கலாம்.

  1.   கபிலஸ் அவர் கூறினார்

    நான் படிகளைப் பின்பற்றுகிறேன், எல்லாம் வேலை செய்யும். ஒத்துழைக்க நான் இதைச் சொல்கிறேன்:
    * வெற்றி மற்றும் மிஸ்ஸின் மதிப்பை மாற்றாது. உங்கள் கிளிக் நிகழ்வில் ஒவ்வொரு பொத்தானிலும் அதைச் சேர்க்க வேண்டும்.
    * அதுவும் வரிசையில்:
    if (Logic.acerto (எண், 1)) {
    1 ஐ பொத்தானின் / பதிலின் எண்ணாக மாற்றவும்.

    lolbimbo, உங்கள் பங்களிப்பை நான் சுவாரஸ்யமாகக் காண்கிறேன். நான் புதிய பயிற்சிகளை நம்புகிறேன் !!!

    பகிர்வுக்கு நன்றி.

    1.    லால்பிம்போ அவர் கூறினார்

      இந்த புள்ளிகளில் நீங்கள் கருத்துத் தெரிவித்திருப்பதை நான் விரும்புகிறேன், ஏனென்றால் நான் அதை இடுகையில் தெளிவுபடுத்தவில்லை, மேலும் என்னவென்றால், புள்ளிகள், வெற்றிகள் மற்றும் தோல்விகள் எனக்கு நினைவில் இல்லை, நீங்கள் அதைப் பார்த்தால், நாங்கள் பொத்தானைக் கிளிக் செய்யும் போது, புள்ளிகளை வெற்றிகளைச் சேர்க்கிறோம் ... ஆனால் அவை லேபிளில் பிரதிபலிக்கவில்லை, அதனால்தான் புள்ளிகளைக் காட்டும் அதன் உரைச் சொத்தில் வைக்க வேண்டும்:

      லேபிள் {
      ஐடி: தோல்விகள்
      உரை: als தவறுகள்: »+ n தவறுகள்
      நிறம்: "சிவப்பு"
      }

      லேபிள் {
      ஐடி: வெற்றி
      உரை: «வெற்றி:» + பிறந்தது
      }

      லேபிள் {
      ஐடி: புள்ளிகள்
      உரை: «புள்ளிகள்:» + n புள்ளிகள்
      fontSize: "நடுத்தர"
      }

      நான் அதை பகுதி 3 இல் தெளிவுபடுத்துவேன்.