瀏覽代碼

Intial commit

Igor 6 年之前
當前提交
f937146dbd
共有 27 個文件被更改,包括 161625 次插入0 次删除
  1. 二進制
      img/3840.jpg
  2. 二進制
      img/background.jpg
  3. 二進制
      img/background.png
  4. 二進制
      img/bto_caminhar.png
  5. 二進制
      img/bto_encerrar.png
  6. 二進制
      img/bto_frente.png
  7. 二進制
      img/bto_iniciar.png
  8. 二進制
      img/bto_resultados.png
  9. 二進制
      img/bto_tras.png
  10. 二進制
      img/bto_voltar.png
  11. 二進制
      img/conquista.png
  12. 二進制
      img/iHealth.png
  13. 二進制
      img/ico_balanca.png
  14. 二進制
      img/ico_coracao.png
  15. 二進制
      img/ico_pulmao.png
  16. 二進制
      img/sky1.png
  17. 二進制
      img/vulto.jpg
  18. 二進制
      img/vulto.png
  19. 35 0
      index.html
  20. 41 0
      js/ajuda.js
  21. 54 0
      js/inicio.js
  22. 136 0
      js/jogo.js
  23. 160759 0
      js/phaser.js
  24. 1 0
      js/phaser.min.js
  25. 14 0
      js/phaser_addon.js
  26. 380 0
      js/resultados.js
  27. 205 0
      js/resultados_bkp.js

二進制
img/3840.jpg


二進制
img/background.jpg


二進制
img/background.png


二進制
img/bto_caminhar.png


二進制
img/bto_encerrar.png


二進制
img/bto_frente.png


二進制
img/bto_iniciar.png


二進制
img/bto_resultados.png


二進制
img/bto_tras.png


二進制
img/bto_voltar.png


二進制
img/conquista.png


二進制
img/iHealth.png


二進制
img/ico_balanca.png


二進制
img/ico_coracao.png


二進制
img/ico_pulmao.png


二進制
img/sky1.png


二進制
img/vulto.jpg


二進制
img/vulto.png


+ 35 - 0
index.html

@@ -0,0 +1,35 @@
+<!DOCTYPE html> 
+<html> 
+<head> 
+	<meta charset="UTF-8" />
+    <title>iHealth</title>
+
+    <script src="./js/phaser.js"></script>
+    <script src="./js/inicio.js"></script>
+    <script src="./js/resultados.js"></script>
+    <script src="./js/jogo.js"></script>
+    <!--script src="./js/phaser_addon.js"></script>
+    <script src="./js/ajuda.js"></script-->
+    <script type="text/javascript">
+	    if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) document.write('<style type="text/css">body { margin: 0; } canvas { id: "Canvas"; width: 100%; } </style>');
+		else document.write('<style type="text/css">body { margin: 0; } canvas { id: "Canvas"; width: 30%; } </style>');
+	</script>
+</head>
+<body>
+
+<script type="text/javascript">
+
+    var config = {
+        type: Phaser.AUTO,
+        width: 975,
+        height: 1550,
+        backgroundColor: '#313191',
+		scene: [ Inicio, Resultados, Jogo ]
+    };
+
+	var game       = new Phaser.Game(config);
+
+</script>
+
+</body>
+</html>

+ 41 - 0
js/ajuda.js

@@ -0,0 +1,41 @@
+// Phaser3 example game
+// tutorial scene
+
+var TutorScene = new Phaser.Class({
+
+    Extends: Phaser.Scene,
+
+    initialize:
+
+    function TutorScene ()
+    {
+        Phaser.Scene.call(this, { key: 'tutorscene' });
+    },
+
+    preload: function ()
+    {
+    },
+
+    create: function ()
+    {
+		// add logo
+		//this.sys.config.backgroundColor = '#f3cca3';
+        var logo = this.add.sprite(400, 100, 'sprites', 'phaser3');
+		
+		// text
+		var txt = this.add.bitmapText(400, 300, 'fontwhite', 'This is an example game.\nTake a look at the code\nto see how it works.');
+		txt.setOrigin(0.5).setCenterAlign();
+
+		// back Button
+		this.btnback = this.addButton(400, 520, 'sprites', this.doBack, this, 'btn_back_hl', 'btn_back', 'btn_back_hl', 'btn_back');
+
+		console.log('create is ready');
+    },
+
+    doBack: function ()
+    {
+        console.log('doBack was called!');
+		this.scene.start('mainmenu');
+    }
+
+});

+ 54 - 0
js/inicio.js

@@ -0,0 +1,54 @@
+
+var Inicio = new Phaser.Class({
+
+    Extends: Phaser.Scene,
+
+    initialize:
+
+    function Inicio ()
+    {
+		Phaser.Scene.call(this, {
+			key: 'inicio'
+			/*, pack: {
+				files: [
+					{ type: 'image', key: 'fundo', url: 'assets/background.jpg' },
+					{ type: 'image', key: 'btoIniciar', url: 'assets/bto_iniciar.png' }
+				]
+			}*/
+		});
+    },
+
+    preload: function ()
+    {
+		this.load.image('fundo', 'img/background.jpg');
+		this.load.image('btCaminhar', 'img/bto_caminhar.png');
+		this.load.image('btResultados', 'img/bto_resultados.png');
+    },
+
+    create: function ()
+    {
+
+	    this.fundo = this.add.image(487, 775, 'fundo');
+
+	    const btoCaminhar = this.add.image(500, 400, 'btCaminhar', { fill: '#0f0' })
+    	  .setInteractive()
+	      .on('pointerdown', () => this.doCaminhada() );
+
+
+	    const btoResultados = this.add.image(500, 800, 'btResultados', { fill: '#0f0' })
+    	  .setInteractive()
+	      .on('pointerdown', () => this.doResultados() );
+
+	},
+
+    doCaminhada: function ()
+    {
+		this.scene.start('jogo');
+    },
+	
+	doResultados: function ()
+    {
+		this.scene.start('resultados');
+    }
+
+});

+ 136 - 0
js/jogo.js

@@ -0,0 +1,136 @@
+var estilo     = { font: "40px Arial", fill: "#fff", align: "center" };
+var longitude  = 0;
+var latitude   = 0;
+var local;
+var msg;
+
+var Jogo = new Phaser.Class({
+
+	Extends: Phaser.Scene,
+
+	initialize:
+
+	function Jogo ()
+	{
+		// note: the pack:{files[]} acts like a pre-preloader
+		// this eliminates the need for an extra "boot" scene just to preload the loadingbar images
+		Phaser.Scene.call(this, {
+			key: 'jogo'
+			//pack: {
+			//	files: [
+			//		{ type: 'image', key: 'loadingbar_bg', url: 'img/loadingbar_bg.png' },
+			//		{ type: 'image', key: 'loadingbar_fill', url: 'img/loadingbar_fill.png' }
+			//	]
+			//}
+		});
+	},
+
+    preload: function ()
+    {
+		this.load.image('fundo', 'img/background.jpg');
+		this.load.image('btEncerrar', 'img/bto_encerrar.png');
+		this.load.image('paisagem', 'img/3840.jpg');
+    },
+
+    create: function ()
+    {
+	    this.fundo = this.add.image(487, 775, 'fundo');
+	    this.paisagem = this.add.image(490, 650, 'paisagem');
+	    const btoEncerrar = this.add.image(500, 400, 'btEncerrar', { fill: '#0f0' })
+    	  .setInteractive()
+	      .on('pointerdown', () => this.doVoltar() );
+
+		local = this.add.text(300,1250,local,estilo);
+		msg   = this.add.text(200,950,local,estilo);
+		msg.setText('Inicie sua caminhada!\n\nNão esqueça de apertar o botão\n\nEncerrar quando terminar.');
+		
+		this.limpaDados();
+		this.registraInicio();
+		this.insereTeste();
+
+    },
+
+    update: function ()
+    {
+		//setTimeout(this.getLocation(),5000);
+    },
+    
+    handleOrientation: function (e) {
+		// Device Orientation API
+		var x = e.gamma; // range [-90,90], left-right
+		var y = e.beta;  // range [-180,180], top-bottom
+		var z = e.alpha; // range [0,360], up-down
+	},
+	
+    getLocation: function () {
+    	this.simulaLocalizacao();
+        //if (navigator.geolocation) {
+	    //    navigator.geolocation.getCurrentPosition(this.mostraLocalizacao, this.simulaLocalizacao, { timeout:5000 });
+        //} else{this.add.text="O seu navegador não suporta Geolocalização.";}
+    },
+    
+    mostraLocalizacao: function (position) {
+    	latitude  = position.coords.latitude;
+    	longitude = position.coords.longitude;
+    	local.setText('la: ' + latitude + '\nlo: ' + longitude + ', ');
+
+    	
+    	var data = localStorage.getItem('Data');
+		if (data == null) data = '';
+		var hoje = new Date();       	
+    	localStorage.setItem('Data', data + ', ' + hoje);
+    	
+    	data = localStorage.getItem('Local');
+		if (data == null) data = '';
+    	localStorage.setItem('Local', data + 'la: ' + latitude + ' lo: ' + longitude + ', ');    	
+    },
+
+    simulaLocalizacao: function (error) {
+    	 
+    	/*if (latitude == 0) latitude  = -23.5809644;
+    	if (longitude == 0) longitude = -46.7738114;
+    	latitude = latitude - 0.00000002;
+    	longitude = longitude - 0.00000002;
+    	local.setText('la: ' + latitude + '\nlo: ' + longitude + ', ');*/
+
+    	
+    	var data = localStorage.getItem('Data');
+		if (data == null) data = '';
+		var hoje = new Date();       	
+    	localStorage.setItem('Data', data + hoje + ', ');
+    	
+    	data = localStorage.getItem('Local');
+		if (data == null) data = '';
+    	localStorage.setItem('Local', data + 'SIMULAR DADOS, ');
+   	},
+    
+	registraInicio: function () {
+    	var marca = localStorage.getItem('Data');
+	    localStorage.setItem('Data', marca + '| ');
+	    marca = localStorage.getItem('Local');
+	    localStorage.setItem('Local', marca + '| ');
+    },
+
+	limpaDados: function () {
+    	var strNome = '';
+    	do {
+    		strNome = localStorage.key(0);
+    		localStorage.removeItem(strNome);
+    	} while (localStorage.length > 0);
+		localStorage.setItem('MetaDeHoje', '200'); //--- precisa ser criado uma scena individual para a definição de metas
+	},
+	
+    doVoltar: function ()
+    {
+		this.scene.start('inicio');
+    },
+	
+	insereTeste: function () {
+		// --- insere dados de teste ---
+    	localStorage.setItem('Data', '100|Thu May 16 2019 13:05:39 GMT-0300 (Horário Padrão de Brasília), Thu May 16 2019 13:07:41 GMT-0300 (Horário Padrão de Brasília), Thu May 16 2019 13:08:00 GMT-0300 (Horário Padrão de Brasília)');
+    	localStorage.setItem('Local', '|la: -23.580767 lo: -46.774423, la: -23.581152 lo: -46.773000, la: -23.580916 lo: -46.772764');
+    	//-------------------------------
+    	//alert(localStorage.getItem('Data'));
+
+	}
+});

File diff suppressed because it is too large
+ 160759 - 0
js/phaser.js


File diff suppressed because it is too large
+ 1 - 0
js/phaser.min.js


+ 14 - 0
js/phaser_addon.js

@@ -0,0 +1,14 @@
+		
+// add a button to a scene
+// similar to buttons in Phaser v2
+Phaser.Scene.prototype.addButton = function(x, y, key, callback, callbackContext, overFrame, outFrame, downFrame, upFrame)
+{
+		// add a button
+		var btn = this.add.sprite(x, y, key, outFrame).setInteractive();
+		btn.on('pointerover', function (ptr, x, y) { this.setFrame(overFrame) } );
+		btn.on('pointerout',  function (ptr)       { this.setFrame(outFrame) } );
+		btn.on('pointerdown', function (ptr)       { this.setScale(0.9, 0.9) } );
+		btn.on('pointerup', callback.bind(callbackContext));
+		
+		return btn;
+};

+ 380 - 0
js/resultados.js

@@ -0,0 +1,380 @@
+// --- variáveis de estilo ---
+var estilo        = { font: "40px Arial", fill: "#fff", align: "center" };
+var educativo     = { font: "40px Arial", fill: "#000", align: "justify" };
+var infos         = { font: "40px Arial", fill: "#fff", align: "justify" };
+var titulo        = { font: "50px Arial", fill: "#000", align: "justify" };
+
+// --- variáveis para posicionamento na tela ---
+var pagina       = 975;
+var posImg       = 285;
+var posTxt       = 450;
+var posPorc      = 420;
+var posCoracao   = 285;
+var posPulmao    = 485;
+var posBalanca   = 685;
+var ponteiro     = 1;
+
+// --- variáveis de tratamento de dados ---
+var qtdCaminhadas = 0;
+var arrResultados = new Array();
+var meta          = 200;
+
+var Resultados = new Phaser.Class({
+
+	Extends: Phaser.Scene,
+
+	initialize:
+
+	function Resultados ()
+	{
+		Phaser.Scene.call(this, { key: 'resultados' });
+	},
+
+    preload: function ()
+    {
+		this.load.image('fundo', 'img/background.jpg');
+		this.load.image('btVoltar', 'img/bto_voltar.png');
+		this.load.image('btFrente', 'img/bto_frente.png');
+		this.load.image('btTras', 'img/bto_tras.png');
+		this.load.image('iHealth', 'img/iHealth.png');
+		this.load.image('coracao', 'img/ico_coracao.png');
+		this.load.image('pulmao', 'img/ico_pulmao.png');
+		this.load.image('balanca', 'img/ico_balanca.png');
+    },
+
+    create: function ()
+    {
+
+		// --- componentes da tela ---
+
+	    this.fundo = this.add.image(487, 775, 'fundo');
+	    const btoVoltar = this.add.image(500, 1300, 'btVoltar', { fill: '#0f0' })
+    	  .setInteractive()
+	      .on('pointerdown', () => this.doVoltar() );
+	      
+	    this.grpCaminhadas = this.add.group();       
+	    this.grpEducativo  = this.add.group();
+	    //this.cursores = this.input.keyboard.createCursorKeys();
+
+		//--------- INÍCIO DO TRATAMENTO DOS DADOS -------------------------------
+		//--- separa os registros de localização por ocorrências de caminhada ----
+	   	var dbData        = localStorage.getItem('Data'); // todos os registros de data
+		var dbCoor        = localStorage.getItem('Local');
+		var arrDBData     = dbData.split('|'); // registros separados por dia
+		var arrDBCoor     = dbCoor.split('|');
+
+		var x1           = 1;
+		do {
+			//--- analisa o percurso e calcula tempo, distância e velocidade média ---
+    		var datafim      = '';
+    		var coorfim      = '';
+    		var distancia    = 0;
+    		var tempo        = 0; 
+    		var velocidade   = 0;
+    		var calorias     = 0;
+			var x2           = 0;
+
+			var arrData = arrDBData[x1].split(','); // registros individuais de data
+			var arrCoor = arrDBCoor[x1].split(','); // registros individuais de localização
+  			do {
+    			if (arrData[x2] != '' && arrData[x2] != null && arrData[x2] != 'null') {
+    				var date1 = new Date(arrData[x2]);
+					var date2 = new Date(datafim);
+					if (date1.getDate() == date2.getDate() && date1.getMonth() == date2.getMonth() && date1.getYear() == date2.getYear()) { 
+	
+	    				// --- calcula o tempo entre os registros ---
+	    				var t = Math.abs(date1 - date2) / 3600000; // tempo total em horas incluindo os minutos
+						if (t < 0) t = t * (-1);
+	
+						// --- calcula a distância em metros entre os regitros ---
+						if (arrCoor[x2].trim() == 'SIMULAR DADOS') {
+							// --- Considera o tempo em que o jogo ficou aberto na caminhada e multiplica por 5 ( velocidade média em uma caminhada em k/h )
+							var d = (tempo * 5);
+						} else {
+							// --- Calcula a distância em kilometros ---
+							var PI = 3.14159265358979323846;
+		
+							if (arrCoor[x2].trim() != '' && coorfim.trim() != '' && (arrCoor[x2].trim() != coorfim.trim())) {
+		
+								var lat1 = parseFloat(arrCoor[x2].substr((arrCoor[x2].indexOf('la:')+4),(arrCoor[x2].indexOf('lo:')-6)));
+								var lon1 = parseFloat(arrCoor[x2].substr((arrCoor[x2].indexOf('lo:')+4),arrCoor[x2].length));
+								var lat2 = parseFloat(coorfim.substr((coorfim.indexOf('la:')+4),(coorfim.indexOf('lo:')-6)));
+								var lon2 = parseFloat(coorfim.substr((coorfim.indexOf('lo:')+4),coorfim.length));
+		
+								rad = function(x) {return x*Math.PI/180;}
+								
+  								var R     = 6378.137; //Raio da Terra no km (WGS84)
+  								var dLat  = rad( lat2 - lat1 );
+  								var dLong = rad( lon2 - lon1 );
+								
+  								var a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(rad(lat1)) * Math.cos(rad(lat2)) * Math.sin(dLong/2) * Math.sin(dLong/2);
+  								var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
+  								var d = R * c;
+								
+  							}
+						}
+			
+		    			// ----- calcula a velocidade -------
+		    			var v = d / t;
+
+						// --- acumula os dados
+						tempo = tempo + t; // horas
+		    			velocidade = velocidade + v; // k/h
+		    			distancia = distancia + d; // quilometros
+    				}
+    			}
+
+    	 	   	datafim = arrData[x2];
+    	 	   	coorfim = arrCoor[x2];
+				x2 = x2 + 1;
+
+    		} while (x2 < arrData.length); // cada um dos registros de localização
+
+			if (distancia > 0) {
+				arrResultados = [];
+				var arrTemp = new Array;
+				
+				// --- organiza os resultados do último dia ---				
+				var horas = parseInt(tempo); // apenas as horas
+				var minutos    = Math.round((tempo - parseInt(tempo)) * 60); // apenas os minutos
+
+				distancia = distancia * 1000; // converte para metros
+				calorias = ((horas * 60) + minutos) * 5; // calcula o gasto energético
+				
+				velocidade = parseFloat(velocidade/(x2-1)).toFixed(2);
+				
+				var arrTemp = [
+					date2,
+					distancia,
+					horas,
+					minutos,
+					velocidade,
+					calorias
+				];
+				arrResultados.push(arrTemp);
+
+				qtdCaminhadas++; // --- registra esta caminhada no contador
+			}
+			x1 = x1 + 1;
+	
+    	} while (x1 < arrDBData.length); // cada uma das caminhadas
+    	if (qtdCaminhadas < 1) var Texto1 = this.add.text(250,500,'Comece suas caminhadas\ne veja aqui os resultados',estilo);
+	    const btoTras = this.add.image(246, 1150, 'btTras', { fill: '#0f0' })
+    	.setInteractive()
+	    .on('pointerdown', () => this.moveCaminhadas('-') );
+	    const btoFrente = this.add.image(728, 1150, 'btFrente', { fill: '#0f0' })
+    	.setInteractive()
+	    .on('pointerdown', () => this.moveCaminhadas('+') );
+    
+    	this.mostraResultados();
+    	this.mostraProjecao();
+    	this.poeConteudo();
+    },
+    
+    update: function ()
+    {
+		
+    },
+    
+    mostraResultados: function ()
+    {
+    	// --- mostra os resultados na tela separados por data, finalizando com as projeções ---
+		for (y = 0; y < arrResultados.length; y++ ) {
+			eval('var Destaque' + y + ' = this.add.image(' + posImg + ', 650, "iHealth");');
+			eval('var Texto' + y + ' = this.add.text(' + posTxt + ', 450, "Data: ' + arrResultados[y][0].getDate() + '/' + arrResultados[y][0].getMonth() + '/' + arrResultados[y][0].getFullYear() + ' \\n\\nDistância: ' + parseFloat(arrResultados[y][1]).toFixed(2) + ' m\\n\\nTempo: ' + arrResultados[y][2] + ' h ' + arrResultados[y][3] +' m\\n\\nVelocidade: ' + arrResultados[y][4] + ' k/h\\n\\nGasto calórico: ' + arrResultados[y][5] + '", infos);');
+			eval('var Coracao' + y + ' = this.add.image(' + posCoracao + ', 950, "coracao");');
+			eval('var Pulmao' + y + ' = this.add.image(' + posPulmao + ', 950, "pulmao");');
+			eval('var Balanca' + y + ' = this.add.image(' + posBalanca + ', 950, "balanca");');
+			
+    		eval('this.grpCaminhadas.add(Destaque' + y + ');');
+    		eval('this.grpCaminhadas.add(Texto' + y + ');');
+    		eval('this.grpCaminhadas.add(Coracao' + y + ');');
+    		eval('this.grpCaminhadas.add(Pulmao' + y + ');');
+    		eval('this.grpCaminhadas.add(Balanca' + y + ');');
+
+			this.mostraBarra(meta, arrResultados[y][1], posPorc);
+			
+			// --- ajusta a posição para mostrar os dados da próxima caminhada ---
+			posImg     = posImg  - pagina;
+			posTxt     = posTxt - pagina;
+			posPorc    = posPorc - pagina;
+			posCoracao = posCoracao  - pagina;
+			posPulmao  = posPulmao  - pagina;
+			posBalanca = posBalanca  - pagina;
+		}
+    },
+    
+    mostraProjecao: function ()
+    {
+    	var y = arrResultados.length;
+
+		// --- tira a média ---
+		var medDistancia  = 0;
+		var medHoras      = 0;
+		var medMinutos    = 0;
+		var medVelocidade = 0;
+		var medCalorias   = 0;
+		for (x3 = 0; x3 < arrResultados.length; x3++) {
+			medDistancia  = medDistancia + arrResultados[x3][1];
+			medHoras      = medHoras + arrResultados[x3][2];
+			medMinutos    = medMinutos + arrResultados[x3][3];
+			medVelocidade = medVelocidade + arrResultados[x3][4];
+			medCalorias   = medCalorias + arrResultados[x3][5];
+		}
+		
+		medDistancia  = (medDistancia / x3) * 3;
+		medHoras      = (medHoras / x3) * 3;
+		medMinutos    = (medMinutos / x3) * 3;
+		medVelocidade = (medVelocidade / x3);
+		medCalorias   = (medCalorias / x3) * 3;
+	
+		eval('var Destaque' + y + ' = this.add.image(1260, 650, "iHealth");');
+		eval('var Texto' + y + ' = this.add.text(1425, 450, "Data: daqui 3 meses \\n\\nDistância: ' + parseFloat(medDistancia).toFixed(2) + ' m\\n\\nTempo: ' + medHoras + ' h ' + medMinutos +' m\\n\\nVelocidade: ' + parseFloat(medVelocidade).toFixed(2) + ' k/h\\n\\nGasto calórico: ' + medCalorias + '", infos);');
+		//eval('alert(Texto' + qtdCaminhadas + '.text);');
+		//eval('var Coracao' + y + ' = this.add.image(' + posCoracao + ', 950, "coracao");');
+		//eval('var Pulmao' + y + ' = this.add.image(' + posPulmao + ', 950, "pulmao");');
+		//eval('var Balanca' + y + ' = this.add.image(' + posBalanca + ', 950, "balanca");');
+		
+    	eval('this.grpCaminhadas.add(Destaque' + y + ');');
+    	eval('this.grpCaminhadas.add(Texto' + y + ');');
+    	//eval('this.grpCaminhadas.add(Coracao' + y + ');');
+    	//eval('this.grpCaminhadas.add(Pulmao' + y + ');');
+    	//eval('this.grpCaminhadas.add(Balanca' + y + ');');
+
+		this.mostraBarra(meta, -1, 1395);
+    },
+    
+    poeConteudo: function ()
+    {
+		/*
+    	//var boxFechar    = this.add.graphics();
+    	var boxConteudo1 = this.add.graphics();
+    	
+    	//boxFechar.fillStyle(0xffffff, 1);
+		//boxFechar.fillCirc(120, 150, 740);
+	    //const btoFechar = this.add.text(500, 200, 'X', { fill: '#0f0' })
+    	//  .setInteractive()
+	    //  .on('pointerdown', () => boxConteudo1.visible = false; boxCoracao1.visible = false; boxConteudo1.visible = false; );
+    	
+    	boxConteudo1.fillStyle(0xffffff, 1);
+		boxConteudo1.fillRect(120, 150, 740, 1000);
+		eval('var boxCoracao' + qtdCaminhadas + ' = this.add.image(240, 250, "coracao");');
+		eval('var boxTitCoracao' + qtdCaminhadas + ' = this.add.text(350, 220,"Saúde Cardíaca", titulo);');
+		eval('var boxTxtCoracao' + qtdCaminhadas + ' = this.add.text(180, 350,"As caminhadas que você fez\\naceleraram seu coração aumentando\\no fluxo sanguíneo em seu sistema\\ncirculatório.\\n\\nEntre outros benefícios, isso fortalece\\nseu coração e acelera a troca de\\nnutrientes e de gases entre as células,\\npromovendo maior consumo de\\nenergia, ou seja, emagrecimento\\nsaudável. ", educativo);');
+		
+		
+		boxConteudo1.visible = false;
+		boxCoracao1.visible = false;
+		boxTitCoracao1.visible = false;
+		boxTxtCoracao1.visible = false;		
+		
+    	var boxConteudo2 = this.add.graphics();
+    	
+    	boxConteudo2.fillStyle(0xffffff, 1);
+		boxConteudo2.fillRect(120, 150, 740, 1000);
+		boxConteudo2.visible = false;
+		
+    	var boxConteudo3 = this.add.graphics();
+    	
+    	boxConteudo3.fillStyle(0xffffff, 1);
+		boxConteudo3.fillRect(120, 150, 740, 1000);
+		boxConteudo3.visible = false;*/
+    
+    },
+    
+    converteMes: function (mes)
+    {
+    	if (mes == 'Jan') return '01';
+    	if (mes == 'Feb') return '02';
+    	if (mes == 'Mar') return '03';
+    	if (mes == 'Apr') return '04';
+    	if (mes == 'May') return '05';
+    	if (mes == 'Jun') return '06';
+    	if (mes == 'Jul') return '07';
+    	if (mes == 'Aug') return '08';
+    	if (mes == 'Sep') return '09';
+    	if (mes == 'Oct') return '10';
+    	if (mes == 'Nov') return '11';
+    	if (mes == 'Dec') return '12';
+    },
+
+	getDistanceFromLatLonInKm: function (position1, position2) {
+    	"use strict";
+    	var deg2rad = function (deg) { return deg * (Math.PI / 180); },
+        	R = 6371,
+        	dLat = deg2rad(position2.lat - position1.lat),
+        	dLng = deg2rad(position2.lng - position1.lng),
+        	a = Math.sin(dLat / 2) * Math.sin(dLat / 2)
+            	+ Math.cos(deg2rad(position1.lat))
+            	* Math.cos(deg2rad(position1.lat))
+            	* Math.sin(dLng / 2) * Math.sin(dLng / 2),
+        	c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
+    	return ((R * c *1000).toFixed());
+	},
+	
+    doVoltar: function ()
+    {
+		this.scene.start('inicio');
+    },
+    
+    /*moveEsquerda: function ()
+    {
+		this.cursores.left.isDown = false;
+		
+    },
+    
+    moveDireita: function ()
+    {
+		this.cursores.right.isDown = false;
+    },*/
+    
+    moveCaminhadas: function (direcao)
+    {
+    	if ((ponteiro < qtdCaminhadas && direcao == '-') || (ponteiro == 1 && direcao == '+')) {
+	    	if (direcao == '+') ponteiro--;
+    		else ponteiro++;
+    		var grpMovel = this.grpCaminhadas.getChildren();
+	    	for (var i = 0; i < grpMovel.length; i++) {
+    			//alert(grpMovel[i].x + ' -> ' +grpMovel[i].text) ;
+    			if (direcao == '+') grpMovel[i].x -= pagina;
+    			else grpMovel[i].x += pagina;
+	  		}
+	  	}
+	},
+	
+	mostraBarra: function (meta, distancia, posPorc)
+	{
+		//--- barra de progressão da caminhada ---
+		if (distancia > 0) {
+			eval('var progressBox' + qtdCaminhadas + ' = this.add.graphics();');
+			var porcentagem = (distancia*100)/meta;		
+			var compBarra   = (parseInt(porcentagem*330)/100) + 200;
+	
+			eval('progressBox' + qtdCaminhadas + '.fillStyle(0xffffff, 0.8);');
+			eval('progressBox' + qtdCaminhadas + '.fillRect(210, 320, compBarra, 50);');
+	
+			eval('progressBox' + qtdCaminhadas + '.fillStyle(0xcccccc, 0.8);');
+			eval('progressBox' + qtdCaminhadas + '.fillRect(200, 310, 550, 70);	');
+		}
+	
+		if (distancia > 0) {
+			var txtTopo = '';
+			if (porcentagem <= 30) txtTopo = "DÁ PRA MELHORAR!";
+			if (porcentagem > 30 && porcentagem <= 60) txtTopo = "JÁ FOI UM COMEÇO!";
+			if (porcentagem > 60 && porcentagem < 100) txtTopo = "MUITO BEM, CONTINUE!";
+			if (porcentagem == 100) txtTopo = "CONQUISTA DESBLOQUEADA!";
+			
+			txtTopo = txtTopo + '\\n\\nmeta: ' + meta + ' metros';
+			eval('var txtTopo' + qtdCaminhadas + ' = this.add.text(260, 150, "' + txtTopo + '", estilo);');
+			eval('var Porcentagem' + qtdCaminhadas + ' = this.add.text(' + posPorc + ',325, parseFloat(' + porcentagem + ').toFixed(2) + "%",{ font: "40px Arial", fill: "#CD5C5C", align: "justify" });');
+
+			eval('this.grpCaminhadas.add(progressBox' + qtdCaminhadas + ');');
+			eval('this.grpCaminhadas.add(txtTopo' + qtdCaminhadas + ');');
+			eval('this.grpCaminhadas.add(Porcentagem' + qtdCaminhadas + ');');
+		} else {
+			eval('var txtTopo' + qtdCaminhadas + ' = this.add.text(1200, 150, "PROJEÇÃO PARA 3 MESES!", estilo);');
+			eval('this.grpCaminhadas.add(txtTopo' + qtdCaminhadas + ');');
+		}
+	}
+	
+});

+ 205 - 0
js/resultados_bkp.js

@@ -0,0 +1,205 @@
+var estilo        = { font: "40px Arial", fill: "#fff", align: "center" };
+
+var Resultados = new Phaser.Class({
+
+	Extends: Phaser.Scene,
+
+	initialize:
+
+	function Resultados ()
+	{
+		Phaser.Scene.call(this, { key: 'resultados' });
+	},
+
+    preload: function ()
+    {
+		this.load.image('fundo', 'img/background.jpg');
+		this.load.image('btVoltar', 'img/bto_voltar.png');
+		this.load.image('iHealth', 'img/conquista.png');
+    },
+
+    create: function ()
+    {
+
+		// --- componentes da tela ---
+
+	    this.fundo = this.add.image(487, 775, 'fundo');
+	    const btoVoltar = this.add.image(500, 1300, 'btVoltar', { fill: '#0f0' })
+    	  .setInteractive()
+	      .on('pointerdown', () => this.doVoltar() );
+	      
+	    this.grupo    = this.add.group();       
+	    //this.cursores = this.input.keyboard.createCursorKeys();
+
+		//--- separa os registros de localização por ocorrências de caminhada ----
+	   	var dbData    = localStorage.getItem('Data'); // todos os registros de data
+		var dbCoor    = localStorage.getItem('Local');
+		var arrDBData = dbData.split('|'); // registros separados por dia
+		var arrDBCoor = dbCoor.split('|');
+
+		var x1           = 1;
+		var posImg       = 0;
+		var posTxt1      = 0;
+		var posTxt2      = 0;
+		do {
+			//--- analisa o percurso e calcula tempo, distância e velocidade média ---
+    		var datafim      = '';
+    		var coorfim      = '';
+    		var distancia    = 0;
+    		var tempo        = 0;
+    		var velocidade   = 0;
+
+			var x2      = 0;
+			var arrData = arrDBData[x1].split(','); // registros individuais de data
+			var arrCoor = arrDBCoor[x1].split(','); // registros individuais de localização
+
+  			do {
+    			if (arrData[x2] != '' && arrData[x2] != null && arrData[x2] != 'null') {
+    				// --- calcula o tempo entre os registros ---
+    				var date1 = new Date(arrData[x2]);
+					var date2 = new Date(datafim);
+					if (date1.getDate() == date2.getDate() && date1.getMonth() == date2.getMonth() && date1.getYear() == date2.getYear()) { }
+					else {
+						if (!isNaN(date2)) {
+							//Titulo.x = Titulo.x + posX;
+							// --- início dos registros de um dia específico, mostra os resultados do dia anterior ---
+							eval('var Destaque' + x1 + ' = this.add.image(' + posImg + ', 600, "iHealth");');
+							eval('var Titulo' + x1 + ' = this.add.text(' + posTxt1 + ', 150, "CONQUISTA DESBLOQUEADA!", estilo);');
+							eval('var Texto' + x1 + ' = this.add.text(' + posTxt2 + ', 480, "No dia ' + date1.getDate() + ' \\n\\n voce caminhou por \\n\\n' + parseFloat(distancia).toFixed(2) + ' metros!", estilo);');
+							posImg  = posImg  + 500;
+							posTxt1 = posTxt1 + 250;
+							posTxt2 = posTxt2 + 330;
+	    				}
+					}
+					if (isNaN(date2 - date1) == false) tempo = tempo + (date2 - date1);
+					if (tempo < 0) tempo = tempo * (-1);
+
+					// --- calcula a distância entre os regitros ---
+					var PI = 3.14159265358979323846;
+
+					if (arrCoor[x2].trim() != '' && coorfim.trim() != '' && (arrCoor[x2].trim() != coorfim.trim())) {
+
+						var lat1 = parseFloat(arrCoor[x2].substr((arrCoor[x2].indexOf('la:')+4),(arrCoor[x2].indexOf('lo:')-6)));
+						var lon1 = parseFloat(arrCoor[x2].substr((arrCoor[x2].indexOf('lo:')+4),arrCoor[x2].length));
+						var lat2 = parseFloat(coorfim.substr((coorfim.indexOf('la:')+4),(coorfim.indexOf('lo:')-6)));
+						var lon2 = parseFloat(coorfim.substr((coorfim.indexOf('lo:')+4),coorfim.length));
+
+						rad = function(x) {return x*Math.PI/180;}
+						
+  						var R     = 6378.137; //Raio da Terra no km (WGS84)
+  						var dLat  = rad( lat2 - lat1 );
+  						var dLong = rad( lon2 - lon1 );
+						
+  						var a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(rad(lat1)) * Math.cos(rad(lat2)) * Math.sin(dLong/2) * Math.sin(dLong/2);
+  						var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
+  						var d = R * c;
+						
+  						distancia = distancia + (d*1000);
+					}
+    			}
+    	 	   	datafim = arrData[x2];
+    	 	   	coorfim = arrCoor[x2];
+	    		x2 = x2 + 1;
+    		} while (x2 < arrData.length); // cada um dos registros de localização
+			// --- mostra os resultados do último dia ---
+    		x1 = x1 + 1;
+			eval('var Destaque' + x1 + ' = this.add.image(' + posImg + ', 600, "iHealth");');
+			eval('var Titulo' + x1 + ' = this.add.text(' + posTxt1 + ', 150, "CONQUISTA DESBLOQUEADA!", estilo);');
+			eval('var Texto' + x1 + ' = this.add.text(' + posTxt2 + ', 480, "No dia ' + date1.getDate() + ' \\n\\n voce caminhou por \\n\\n' + parseFloat(distancia).toFixed(2) + ' metros!", estilo);');
+
+ 	   		//velocidade = tempo / distancia;    		
+    		// apresentar os dados
+    		// pode ser um gráfico, pode ser um mapa de conquistas
+    		// mostra a projeção
+    	} while (x1 < arrDBData.length); // cada uma das caminhadas
+
+    	if (x1 <= 1) var Texto1 = this.add.text(posTxt1,150,'Comece suas caminhadas e veja aqui os resultados',estilo);
+    	else {
+    		for (x2 = 1; x2 <= x1; x2++) {
+    			eval('this.grupo.add(Destaque' + x2 + ')');
+    			eval('this.grupo.add(Titulo' + x2 + ')');
+    			eval('this.grupo.add(Texto' + x2 + ')');
+    		}
+    	}
+    },
+    
+    update: function ()
+    {
+		//if (this.cursores.left.isDown) this.moveEsquerda();
+		//if (this.cursores.right.isDown) this.moveDireita();
+		
+    },
+    
+    converteMes: function (mes)
+    {
+    	if (mes == 'Jan') return '01';
+    	if (mes == 'Feb') return '02';
+    	if (mes == 'Mar') return '03';
+    	if (mes == 'Apr') return '04';
+    	if (mes == 'May') return '05';
+    	if (mes == 'Jun') return '06';
+    	if (mes == 'Jul') return '07';
+    	if (mes == 'Aug') return '08';
+    	if (mes == 'Sep') return '09';
+    	if (mes == 'Oct') return '10';
+    	if (mes == 'Nov') return '11';
+    	if (mes == 'Dec') return '12';
+    },
+
+	getDistanceFromLatLonInKm: function (position1, position2) {
+    	"use strict";
+    	var deg2rad = function (deg) { return deg * (Math.PI / 180); },
+        	R = 6371,
+        	dLat = deg2rad(position2.lat - position1.lat),
+        	dLng = deg2rad(position2.lng - position1.lng),
+        	a = Math.sin(dLat / 2) * Math.sin(dLat / 2)
+            	+ Math.cos(deg2rad(position1.lat))
+            	* Math.cos(deg2rad(position1.lat))
+            	* Math.sin(dLng / 2) * Math.sin(dLng / 2),
+        	c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
+    	return ((R * c *1000).toFixed());
+	},
+	
+	mostraTempo: function (tempo) {	
+		var difHrs = Math.floor((tempo % 86400000) / 3600000);
+		var difMins = Math.round(((tempo % 86400000) % 3600000) / 60000);
+		tempo = difHrs + 'h ' + difMins + 'm';
+	},
+	
+    doVoltar: function ()
+    {
+		this.scene.start('inicio');
+    },
+    
+    moveEsquerda: function ()
+    {
+		this.moveGrupo('-');
+		this.cursores.left.isDown = false;
+		
+    },
+    
+    moveDireita: function ()
+    {
+		this.moveGrupo('+');
+		this.cursores.right.isDown = false;
+    },
+    
+    moveGrupo: function (direcao)
+    {
+    	var veloc = 10;
+    	let resultados = this.grupo.getChildren();
+    	let qtdResultados = resultados.length;
+    	for (let i = 0; i < qtdResultados; i++) {
+ 
+    		if (direcao == '+') resultados[i].x += veloc;
+    		else resultados[i].x -= veloc;
+ 		
+    		// faz parar quando sai da tela
+    		/*if (resultados[i].x >= this.enemyMaxY && resultados[i].speed > 0) {
+      		resultados[i].speed *= -1;
+    		} else if (resultados[i].x <= this.enemyMinY && resultados[i].speed < 0) {
+      		resultados[i].speed *= -1;*/
+  		}
+	}
+	
+});