Warning, /education/marble/examples/cpp/marble-game/ClickOnThat.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2014 Abhinav Gangwar <abhgang@gmail.com> 0004 // 0005 0006 0007 import QtQuick 2.0 0008 import QtQuick.Controls 1.2 0009 import QtQuick.Controls.Styles 1.2 0010 0011 Rectangle { 0012 id: clickOnThat 0013 objectName: "clickOnThat" 0014 0015 color: "#C2D1B2" 0016 0017 signal nextQuestionRequested() 0018 signal gameQuitRequested() 0019 signal answerDisplayRequested() 0020 signal questionsTimeout() 0021 0022 property int panelWidth: 200 0023 property int panelHeight: 600 0024 0025 width: panelWidth 0026 height: panelHeight 0027 0028 // Display the button to show correct Answer 0029 property bool showCorrectAnswer: false 0030 0031 // Result Display 0032 property bool showResult: false 0033 property string result: qsTr("Undetermined") 0034 property int score: 0 0035 property bool scoreDetermined: false 0036 property int totalQuestionsAsked: 0 // Total no. of questions that user is asked 0037 property int maximumQuestions: 0 0038 0039 property bool showQuestion: false 0040 property string countryName: qsTr("Undetermined") 0041 0042 Rectangle { 0043 id: gameDescription 0044 width: panelWidth 0045 height: panelHeight/10 0046 anchors.top: parent.top 0047 anchors.topMargin: 10 0048 0049 color: "#C2D1B2" 0050 0051 Rectangle { 0052 id: gameName 0053 width: parent.width/2 0054 height: parent.height 0055 anchors.left: parent.left 0056 anchors.leftMargin: 5 0057 border.width: 1 0058 border.color: "#000000" 0059 0060 radius: 6 0061 smooth: true 0062 color: "#696969" 0063 0064 Text { 0065 width: parent.width 0066 wrapMode: Text.WordWrap 0067 horizontalAlignment: Text.AlignHCenter 0068 anchors.verticalCenter: parent.verticalCenter 0069 color: "white" 0070 0071 text: qsTr("Click On That Country") 0072 } 0073 } 0074 0075 CustomButton { 0076 id: quitGameButton 0077 buttonWidth: parent.width/2 0078 buttonHeight: parent.height 0079 0080 normalColor: "#696969" 0081 borderColor: "#000000" 0082 0083 labelText: qsTr("Quit Game") 0084 labelSize: parent.width/15 0085 labelColor: "white" 0086 0087 anchors.left: gameName.right 0088 anchors.leftMargin: 5 0089 0090 anchors.top: parent.top 0091 anchors.right: parent.right 0092 anchors.rightMargin: 5 0093 0094 onButtonClick: { 0095 gameQuitRequested(); 0096 resetOptions(); 0097 } 0098 } 0099 } 0100 0101 Rectangle { 0102 id: question 0103 0104 anchors.top: gameDescription.bottom 0105 anchors.topMargin: parent.height/17 0106 anchors.left: parent.left 0107 anchors.leftMargin: 10 0108 anchors.right: parent.right 0109 anchors.rightMargin: 10 0110 height: panelHeight/8 0111 color: "#A9A9A9" 0112 radius: width*0.5 0113 smooth: true 0114 border.width: 1 0115 border.color: "#696969" 0116 0117 visible: true 0118 0119 Text { 0120 id: questionText 0121 color: "white" 0122 width: parent.width 0123 height: parent.height/2 0124 horizontalAlignment: Text.AlignHCenter 0125 font.pixelSize: parent.height/5 0126 text: qsTr("Click on") 0127 } 0128 0129 Text { 0130 id: country 0131 anchors.top: questionText.bottom 0132 anchors.topMargin: 5 0133 width: parent.width 0134 height: parent.height/2 0135 horizontalAlignment: Text.AlignHCenter 0136 0137 font.pixelSize: parent.height/5 0138 font.bold: true 0139 color: "white" 0140 text: qsTr(countryName) 0141 } 0142 } 0143 0144 CustomButton { 0145 id: nextButton 0146 anchors.top: question.bottom 0147 anchors.topMargin: 20 0148 anchors.horizontalCenter: parent.horizontalCenter 0149 buttonWidth: panelWidth*4/5 0150 buttonHeight: panelHeight/14 0151 normalColor: "#696969" 0152 borderColor: "#000000" 0153 0154 labelText: qsTr("Next") 0155 labelColor: "#ffffff"; 0156 onButtonClick: { 0157 nextQuestionRequested() 0158 } 0159 } 0160 0161 Rectangle { 0162 id: resultDisplay 0163 0164 anchors.left: parent.left 0165 anchors.leftMargin: 20 0166 anchors.right: parent.right 0167 anchors.rightMargin: 20 0168 anchors.top: nextButton.bottom 0169 anchors.topMargin: 20 0170 0171 color: "#80FFFF" 0172 border.width: 1 0173 border.color: "#262626" 0174 radius: 40 0175 smooth: true 0176 0177 height: panelHeight/6 0178 0179 visible: showResult 0180 0181 Text { 0182 id: text 0183 anchors.left: parent.left 0184 anchors.leftMargin: 25 0185 anchors.right: parent.right 0186 anchors.rightMargin: 5 0187 anchors.verticalCenter: parent.verticalCenter 0188 0189 wrapMode: Text.WordWrap 0190 text: qsTr(result) 0191 } 0192 } 0193 0194 CustomButton { 0195 id: viewCorrectAnswer 0196 0197 anchors.top: resultDisplay.bottom 0198 anchors.topMargin: 20 0199 anchors.left: parent.left 0200 anchors.leftMargin: 10 0201 anchors.right: parent.right 0202 anchors.rightMargin: 10 0203 0204 buttonHeight: panelHeight*5/(6*14) 0205 borderColor: "#696969" 0206 labelColor: "green" 0207 labelText: qsTr("View Answer") 0208 0209 visible: showCorrectAnswer 0210 0211 onButtonClick: { 0212 answerDisplayRequested(); 0213 } 0214 } 0215 0216 Rectangle { 0217 id: scoreDisplay 0218 0219 anchors.left: parent.left 0220 anchors.leftMargin:10 0221 anchors.right: parent.right 0222 anchors.rightMargin: 10 0223 anchors.top: viewCorrectAnswer.bottom 0224 anchors.topMargin: 20 0225 border.width: 1 0226 border.color: "#696969" 0227 0228 height: panelHeight/8 0229 0230 color: "#808080" 0231 0232 Text { 0233 id: scoreContent 0234 color: "white" 0235 width: parent.width 0236 horizontalAlignment: Text.AlignHCenter 0237 font.pixelSize: 18 0238 text: { 0239 qsTr("Your Progress \n\n" + score + "/" + totalQuestionsAsked) 0240 } 0241 } 0242 } 0243 0244 Timer { 0245 id: timer 0246 interval: 700 0247 repeat: false 0248 onTriggered: { 0249 questionsTimeout(); 0250 } 0251 } 0252 0253 onQuestionsTimeout: { 0254 timer.stop(); 0255 showCorrectAnswer = false; 0256 nextQuestionRequested(); 0257 } 0258 0259 function initGame() { 0260 score = 0; 0261 totalQuestionsAsked = 0; 0262 } 0263 0264 function resetOptions() { 0265 result = "Undetermined"; 0266 showResult = false; 0267 showQuestion = false; 0268 } 0269 0270 function setQuestion( name ) { 0271 if ( maximumQuestions > 0 ) { 0272 resetOptions(); 0273 ++totalQuestionsAsked; 0274 countryName = name; 0275 scoreDetermined = false; 0276 showQuestion = true; 0277 } 0278 else { 0279 gameQuitRequested() 0280 } 0281 maximumQuestions = maximumQuestions - 1; 0282 } 0283 0284 function displayResult( correct ) { 0285 showResult = true 0286 if ( correct && !scoreDetermined ) { 0287 ++score 0288 scoreDetermined = true; 0289 result = "<font face=\"verdana\" size=\"4\" color=\"#00ff00\"><b>Hooray !! Right Answer</b></font>" 0290 timer.start(); 0291 } 0292 else { 0293 /** 0294 * Stop timer ( so that the game 0295 * doesn't switch to next question 0296 * automatically ) and let the user 0297 * choose whether he/she wants 0298 * to see the correct answer. 0299 **/ 0300 if ( timer.running == true ) { 0301 timer.stop(); 0302 } 0303 0304 result = "<p align=\"center\"> <font face=\"verdana\" size=\"4\" color=\"#ff0000\"><b>Oops, Wrong Answer</b></font> </p>" 0305 showCorrectAnswer = true; 0306 } 0307 } 0308 0309 function setMaximumQuestions( questionsCount ) { 0310 maximumQuestions = questionsCount; 0311 } 0312 }