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 }