File indexing completed on 2024-04-28 15:07:53
0001 /* GCompris - Hexagon.qml 0002 * 0003 * SPDX-FileCopyrightText: 2014 Bruno Coudoin 0004 * 0005 * Authors: 0006 * Christof Petig and Ingo Konrad (GTK+ version) 0007 * Bruno Coudoin <bruno.coudoin@gcompris.net> (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 url = "qrc:/gcompris/src/activities/hexagon/resource/" 0016 var numberOfLevel = 12; 0017 var main 0018 var items 0019 0020 // The size of the array 0021 var nbx 0022 var nby 0023 // The strawberry position 0024 var strawBerryX 0025 var strawBerryY 0026 0027 function start(main_, items_) { 0028 main = main_ 0029 items = items_ 0030 items.currentLevel = Core.getInitialLevel(numberOfLevel) 0031 initLevel() 0032 } 0033 0034 function stop() { 0035 } 0036 0037 function initLevel() { 0038 items.hexagonModel.clear() 0039 nbx = 10 + items.currentLevel 0040 nby = Math.floor(nbx * (main.height / main.width)) 0041 0042 // Select a random place for the strawberry 0043 strawBerryX = Math.floor(Math.random() * (nbx -1)) 0044 strawBerryY = Math.floor(Math.random() * nby) 0045 0046 var model = [] 0047 for(var ix = 0; ix < nbx; ++ix) { 0048 for(var iy = 0; iy < nby; ++iy) { 0049 if( (iy % 2 && ix < nbx - 1) || iy % 2 == 0) 0050 items.hexagonModel.append( { 0051 "m_ix": ix, "m_iy": iy, "m_nbx": nbx, "m_nby": nby, 0052 "m_hasStrawberry": (strawBerryX === ix && strawBerryY === iy) ? true : false 0053 } ) 0054 } 0055 } 0056 } 0057 0058 function nextLevel() { 0059 items.currentLevel = Core.getNextLevel(items.currentLevel, numberOfLevel); 0060 initLevel(); 0061 } 0062 0063 function previousLevel() { 0064 items.currentLevel = Core.getPreviousLevel(items.currentLevel, numberOfLevel); 0065 initLevel(); 0066 } 0067 0068 function strawberryFound() { 0069 items.bonus.good("flower") 0070 } 0071 0072 function getDistance(ix, iy) { 0073 return Math.sqrt(Math.pow((ix - strawBerryX), 2) + Math.pow((iy - strawBerryY), 2)) 0074 } 0075 0076 function getColor(dist) { 0077 var r = 0 0078 var b = 0 0079 var g = 0 0080 if (dist < 5) { 0081 r = 0xFF 0082 g = 0xFF * (dist / 5) 0083 } else if(dist < 10) { 0084 g = 0xFF 0085 r = 0xFF - 0xFF * ((dist - 5) / 5) 0086 } else if (dist < 15) { 0087 g = 0xFF - 0xFF * ((dist - 10) / 5) 0088 b = 0xFF * ((dist - 10) / 5) 0089 } else { 0090 // Calc the max size 0091 var maxSize = Math.sqrt(Math.pow(nbx, 2) + Math.pow(nby, 2)) 0092 b = 0xFF 0093 r = 0xFF * ((dist - 15) / maxSize) 0094 } 0095 return Qt.rgba(r/255, g/255, b/255, 1) 0096 }