File indexing completed on 2024-04-28 15:07:52

0001 /* GCompris - guessnumber.js
0002  *
0003  * SPDX-FileCopyrightText: 2014 Thib ROMAIN <thibrom@gmail.com>
0004  *
0005  * Authors:
0006  *   Clement Coudoin <clement.coudoin@free.fr> (GTK+ version)
0007  *   Thib ROMAIN <thibrom@gmail.com> (Qt Quick port)
0008  *
0009  *   SPDX-License-Identifier: GPL-3.0-or-later
0010  */
0011 .pragma library
0012 .import QtQuick 2.12 as Quick
0013 .import "qrc:/gcompris/src/core/core.js" as Core
0014 
0015 var numberOfLevel
0016 var items
0017 var numberToGuess = 0
0018 
0019 function start(items_) {
0020     items = items_
0021     numberOfLevel = items.levels.length
0022     items.currentLevel = Core.getInitialLevel(numberOfLevel)
0023     initLevel()
0024 }
0025 
0026 function stop() {
0027 }
0028 
0029 function initLevel() {
0030     items.currentMax = items.levels[items.currentLevel].maxNumber
0031     items.helico.init()
0032     items.helico.state = "horizontal"
0033     items.infoText.text = ""
0034     items.numpad.resetText()
0035     numberToGuess = getRandomInt(1, items.levels[items.currentLevel].maxNumber)
0036     items.textArea.text = items.levels[items.currentLevel].objective
0037 }
0038 
0039 function nextLevel() {
0040     items.currentLevel = Core.getNextLevel(items.currentLevel, numberOfLevel);
0041     initLevel();
0042 }
0043 
0044 function previousLevel() {
0045     items.currentLevel = Core.getPreviousLevel(items.currentLevel, numberOfLevel);
0046     initLevel();
0047 }
0048 
0049 function getRandomInt(min, max) {
0050     return Math.floor(Math.random() * (max - min + 1) + min);
0051 }
0052 
0053 function setUserAnswer(value){
0054     if(value === 0)
0055         return;
0056     if(value > items.levels[items.currentLevel].maxNumber){
0057         items.infoText.text = qsTr("Your number is too high")
0058         return;
0059     }
0060     if(value > numberToGuess){
0061         items.infoText.text = qsTr("Your number is too high")
0062     }
0063     if(value < numberToGuess){
0064         items.infoText.text = qsTr("Your number is too low")
0065     }
0066     items.helico.state = "advancing"
0067     if(value === numberToGuess) {
0068         items.infoText.text = qsTr("You found the number!")
0069         items.bonus.good("tux")
0070         items.helico.x = items.background.width
0071         items.helico.y = items.background.height / 2 - items.helico.height / 2
0072     } else {
0073         var diff = Math.abs(numberToGuess-value) / items.levels[items.currentLevel].maxNumber
0074         items.helico.x = (items.background.width-items.helico.width) - diff * items.background.width
0075         items.helico.y = items.background.height / 2 +
0076                 ((numberToGuess-value) / items.levels[items.currentLevel].maxNumber) * (items.background.height/2) - items.helico.height / 2
0077     }
0078 }