// Tractor and Square states /****************************** MENU ****************************/ var stairsRight, stairsLeft; var menuSquareOne={ create: function() { // Creating sound variable var beepSound = game.add.audio('sound_beep'); // Reading dictionary var words = game.cache.getJSON('dictionary'); // Menu options //information label m_info = game.add.text(14, 53, "", { font: "20px Arial", fill: "#330000", align: "center" }); // Return to language button // Remove language icon ::Igor m_world = game.add.sprite(10, 10, 'about'); m_world.inputEnabled = true; m_world.input.useHandCursor = true; m_world.events.onInputDown.add(showInfo); m_world.events.onInputOver.add(this.showOption, {message: words.menu_world}); m_world.events.onInputOut.add(this.showOption, {message: ""}); // Return to menu button m_list = game.add.sprite(60, 10, 'list'); m_list.inputEnabled = true; m_list.input.useHandCursor = true; m_list.events.onInputDown.add(this.loadState, {state: "menu", beep: beepSound}); m_list.events.onInputOver.add(this.showOption, {message: words.menu_list}); m_list.events.onInputOut.add(this.showOption, {message: ""}); // Setting title var style = { font: '28px Arial', fill: '#00804d'}; var title = game.add.text(860, 40, words.game_menu_title, style); title.anchor.setTo(1, 0.5); //Showing Games and Levels var maxHeight = 120; //Max height of a stair var stairHeight = 40; //height growth of a stair var stairWidth = 100; //Width of a stair var startStair = 320; var startSymbol = 150; var startSquare = (startSymbol/2)+startStair+stairWidth*3; //First stairs, plus, 3 levels, blue square var blueSquare = game.add.graphics(startSquare, 175); blueSquare.anchor.setTo(0.5,0.5); blueSquare.lineStyle(2, 0x31314e); blueSquare.beginFill(0xefeff5); blueSquare.drawRect(0, 0, 80, 40); blueSquare.endFill(); var bplus = game.add.sprite(startSymbol, 195, 'h_arrow'); bplus.frame = 0; bplus.scale.setTo(0.7); bplus.anchor.setTo(0.5,0.5); var stairsPlus = []; for(var i=1;i<=3;i++){ //stair var x1 = startStair+(stairWidth*(i-1)); var y1 = 135+maxHeight-i*stairHeight; var x2 = stairWidth;//x1 + 40; var y2 = stairHeight*i;//y1 + 24; stairsPlus[i] = game.add.graphics(0, 0); stairsPlus[i].lineStyle(1, 0xFFFFFF, 1); stairsPlus[i].beginFill(0x99b3ff); stairsPlus[i].drawRect(x1, y1, x2, y2); stairsPlus[i].endFill(); //event stairsPlus[i].inputEnabled = true; stairsPlus[i].input.useHandCursor = true; stairsPlus[i].events.onInputDown.add(this.loadMap, {beep: beepSound, difficulty: i, operator: 'Plus' }); stairsPlus[i].events.onInputOver.add(function (item) { item.alpha=0.5; }, this); stairsPlus[i].events.onInputOut.add(function (item) { item.alpha=1; }, this); //label var xl = x1+stairWidth/2; //x label var yl = y1+(stairHeight*i)/2; //y label var label = game.add.text(xl, yl, i, { font: '25px Arial', fill: '#ffffff', align: 'center' }); label.anchor.setTo(0.5, 0.4); } //Second stairs, minus, 5 levels, red Square var redSquare = game.add.graphics(startSquare, 330); redSquare.anchor.setTo(0.5,0.5); redSquare.lineStyle(2, 0xb30000); redSquare.beginFill(0xefeff5); redSquare.drawRect(0, 0, 80, 40); redSquare.endFill(); var rminus = game.add.sprite(startSymbol, 350, 'h_arrow'); rminus.frame = 5; rminus.scale.setTo(0.7); rminus.scale.x *= -1; rminus.anchor.setTo(0.5,0.5); var stairsMinus = []; for(var i=1;i<=3;i++){ //stair var x1 = startStair+(stairWidth*(i-1)); var y1 = 285+maxHeight-i*stairHeight; var x2 = stairWidth;//x1 + 40; var y2 = stairHeight*i;//y1 + 24; stairsMinus[i] = game.add.graphics(0, 0); stairsMinus[i].lineStyle(1, 0xFFFFFF, 1); stairsMinus[i].beginFill(0xff6666); stairsMinus[i].drawRect(x1, y1, x2, y2); stairsMinus[i].endFill(); //event stairsMinus[i].inputEnabled = true; stairsMinus[i].input.useHandCursor = true; stairsMinus[i].events.onInputDown.add(this.loadMap, {beep: beepSound, difficulty: i, operator: 'Minus' }); stairsMinus[i].events.onInputOver.add(function (item) { item.alpha=0.5; }, this); stairsMinus[i].events.onInputOut.add(function (item) { item.alpha=1; }, this); //label var xl = x1+stairWidth/2; //x label var yl = y1+(stairHeight*i)/2; //y label var label = game.add.text(xl, yl, i, { font: '25px Arial', fill: '#ffffff', align: 'center' }); label.anchor.setTo(0.5, 0.4); } // ::Igor //this.beep.play(); onePosition = 0; //Map position oneMove = true; //Move no next point oneDifficulty = jogo.difficulty; //Number of difficulty (1 to 5) oneOperator = jogo.operator; oneLabel = (jogo.label == 'true'); game.state.start('mapSOne'); /// ::Igor }, //Navigation functions, showOption: function(){ m_info.text = this.message; }, loadState: function(){ this.beep.play(); game.state.start(this.state); }, //MapLoading function loadMap: function(){ this.beep.play(); onePosition = 0; //Map position oneMove = true; //Move no next point oneDifficulty = this.difficulty; //Number of difficulty (1 to 5) oneOperator = this.operator; //Operator of game if(onePosition<5){ game.state.start('mapSOne'); }else{ game.state.start('unofinal'); } } }; /****************************** MAP ****************************/ var mapSquareOne={ create: function() { // Creating sound variable beepSound = game.add.audio('sound_beep'); // Reading dictionary var words = game.cache.getJSON('dictionary'); // Background game.add.image(0, 40, 'bgmap'); if(oneMenu){ // Menu options //information label m_info = game.add.text(14, 53, "", { font: "20px Arial", fill: "#330000", align: "center" }); // Return to language button // Remove language icon ::Igor m_world = game.add.sprite(10, 10, 'about'); m_world.inputEnabled = true; m_world.input.useHandCursor = true; m_world.events.onInputDown.add(showInfo); m_world.events.onInputOver.add(this.showOption, {message: words.menu_world}); m_world.events.onInputOut.add(this.showOption, {message: ""}); // Return to menu button m_list = game.add.sprite(60, 10, 'list'); m_list.inputEnabled = true; m_list.input.useHandCursor = true; m_list.events.onInputDown.add(this.loadState, {state: "menu", beep: beepSound}); m_list.events.onInputOver.add(this.showOption, {message: words.menu_list}); m_list.events.onInputOut.add(this.showOption, {message: ""}); // Return to diffculty m_back = game.add.sprite(110, 10, 'back'); m_back.inputEnabled = true; m_back.input.useHandCursor = true; m_back.events.onInputDown.add(this.loadState, {state: "menuSOne", beep: beepSound}); m_back.events.onInputOver.add(this.showOption, {message: words.menu_back}); m_back.events.onInputOut.add(this.showOption, {message: ""}); } // Styles for labels var stylePlace = { font: '26px Arial', fill: '#ffffff', align: 'center'}; var styleMenu = { font: '30px Arial', fill: '#000000', align: 'center'}; // Progress bar var percentText = onePosition*20; var percentBlocks = onePosition; for(var p=1;p<=percentBlocks;p++){ var block = game.add.image(680+(p-1)*30, 10, 'block'); block.scale.setTo(2, 1); //Scaling to double width } game.add.text(840, 10, percentText+'%', styleMenu); game.add.text(670, 10, words.difficulty + ' ' + oneDifficulty, styleMenu).anchor.setTo(1,0); game.add.image(680, 10, 'pgbar'); //Road this.points = { 'x': [ 90, 204, 318, 432, 546, 660 ], 'y': [ 486, 422, 358, 294, 230, 166 ] }; //Garage var garage = game.add.image(this.points.x[0], this.points.y[0], 'garage'); garage.scale.setTo(0.4); garage.anchor.setTo(0.5, 1); //Farm var farm = game.add.image(this.points.x[5], this.points.y[5], 'farm'); farm.scale.setTo(0.6); farm.anchor.setTo(0.1, 0.7); //Trees and Rocks this.rocks = { 'x': [156, 275, 276, 441, 452, 590, 712], 'y': [309, 543, 259, 156, 419, 136, 316] } this.r_types = [1, 1, 2, 1, 2, 2, 2]; for(var i=0; i<this.r_types.length; i++){ if(this.r_types[i]==1){ var sprite = game.add.image(this.rocks.x[i], this.rocks.y[i], 'rock'); sprite.scale.setTo(0.32); sprite.anchor.setTo(0.5, 0.95); }else if(this.r_types[i]==2){ var sprite = game.add.image(this.rocks.x[i], this.rocks.y[i], 'birch'); sprite.scale.setTo(0.4); sprite.anchor.setTo(0.5, 0.95); } } this.trees = { 'x': [105, 214, 354, 364, 570, 600, 740, 779], 'y': [341, 219, 180, 520, 550, 392, 488, 286] } this.t_types = [2, 4, 3, 4, 1, 2, 4, 4]; for(var i=0; i<this.t_types.length; i++){ var sprite = game.add.image(this.trees.x[i], this.trees.y[i], 'tree'+this.t_types[i]); sprite.scale.setTo(0.6); sprite.anchor.setTo(0.5, 0.95); } // places for (var p = 1; p < this.points.x.length -1; p++){ var place; if(p<onePosition) place = game.add.image(this.points.x[p], this.points.y[p], 'place_b'); else if (oneMove && p==onePosition) place = game.add.image(this.points.x[p], this.points.y[p], 'place_b'); else place = game.add.image(this.points.x[p], this.points.y[p], 'place_a'); place.anchor.setTo(0.5, 0.5); place.scale.setTo(0.3); var sign = game.add.image(this.points.x[p]-20, this.points.y[p]-60, 'sign'); sign.anchor.setTo(0.5, 1); sign.scale.setTo(0.4); if(p>0 && p<this.points.x.length-1){ var text = game.add.text(this.points.x[p]-23, this.points.y[p]-84, p, stylePlace); text.anchor.setTo(0.35, 0.5); } } // tractor start position this.tractor = game.add.sprite(this.points.x[onePosition], this.points.y[onePosition], 'tractor'); this.tractor.anchor.setTo(0.5, 1); this.tractor.scale.setTo(0.5); game.physics.arcade.enable(this.tractor); var walk = this.tractor.animations.add('walk',[0,1,2,3,4]); this.tractor.animations.play('walk', 5, true); this.tractor.angle -= 10; // Delay to next level this.count = 0; this.wait = 60; }, update: function() { // Wait 2 seconds before moving or staring a game this.count ++; if(this.count<=this.wait) return; // If movement is stopped or position is 6 (final), load game if(onePosition==6){ oneMove = false; } if(!oneMove){ this.loadGame(); } // If momevent is enabled, move to next point from actual if(oneMove){ game.physics.arcade.moveToXY( this.tractor, this.points.x[onePosition+1], this.points.y[onePosition+1], 100 ); // I tractor reached the end, stop movement if(Math.ceil(this.tractor.x)==this.points.x[onePosition+1] || Math.ceil(this.tractor.y)==this.points.y[onePosition+1]){ oneMove=false; onePosition += 1; //Update position } } }, //Navigation functions, showOption: function(){ m_info.text = this.message; }, loadState: function(){ this.beep.play(); game.state.start(this.state); }, //MapLoading function loadGame: function(){ beepSound.play(); if(onePosition<5){ game.state.start('gameSOne'); }else{ game.state.start('endSOne'); } } }; /****************************** GAME ****************************/ var clicked, hideLabels, animate, checkCollide, result, move, moveCounter, moveEnd, hasFigure; var startX, tractor, arrow; var maxBlocks, blocks, numBlocks, curBlock, blockDirection, blockDistance, blockLabel, blockSeparator; var blockWidth, endPosition, blockIndex; var floorBlocks, floorIndex, floorCount, floorClicked; var arrowPlace, fractionClicked, fractionIndex; var okImg, errorImg; var curFloor; var detail; var gameSquareOne={ create: function() { // ::Igor if (conta == true) { start[iterator] = Math.floor(Date.now()/1000); conta = false; } //timer totalTime = 0; timer = game.time.create(false); timer.loop(1000, this.updateCounter, this); timer.start(); detail=""; // Creating sound variable beepSound = game.add.audio('sound_beep'); okSound = game.add.audio('sound_ok'); errorSound = game.add.audio('sound_error'); // Reading dictionary var words = game.cache.getJSON('dictionary'); // Background game.add.image(0, 0, 'bgimage'); //Clouds game.add.image(300, 100, 'cloud'); game.add.image(660, 80, 'cloud'); game.add.image(110, 85, 'cloud').scale.setTo(0.8); // Styles for labels var stylePlace = { font: '26px Arial', fill: '#400080', align: 'center'}; var styleLabel = { font: '26px Arial', fill: '#000080', align: 'center'}; var styleFraction = { font: '15px Arial', fill: '#000080', align: 'center'}; var styleMenu = { font: '30px Arial', fill: '#000000', align: 'center'}; //Floor and road var startX = 170; //Initial tractor and place position if(oneOperator=='Minus') startX = 730; startX = startX; //Workaround for initial position inside update var blockWidth = 80; //Width of blocks and floor spaces var blockHeight = 40; //Height of blocks and floor spaces for(var i=0;i<9;i++){ game.add.image(i*100, 501, 'floor'); } //Control variables clicked = false; //Floor blocks or apilled blocks clicked hideLabels = false; //Labels of blocks animate = false; //Start move animation checkCollide = false; //Check if tractor fon't any block left or floor hole result = false; //Game is correct move = false; //Continue tractor animation moveCounter = 0; //Move counter moveEnd = 140; //Move end counter //tractor var tractorAlign = -80; if(oneOperator=='Minus'){ tractorAlign *= -1; } tractor = game.add.sprite(startX+tractorAlign, 445, 'tractor'); tractor.anchor.setTo(0.5, 0.5); tractor.scale.setTo(0.8); tractor.animations.add('right',[0,1,2,3,4]); if(oneOperator=='Minus'){ tractor.scale.x *= -1; } //generator //Blocks and fractions console.log("pos " +onePosition); maxBlocks = onePosition+4; //Maximum blocks if(oneType=='B' || oneOperator=='Mixed') maxBlocks = 10; blocks = game.add.group(); //Fraction arrays (apilled) numBlocks = game.rnd.integerInRange(onePosition+2, maxBlocks); //Number of blocks console.log("num " + numBlocks+", min " + (onePosition+2) + ", max " + maxBlocks); curBlock = 0; //Actual index block blockDirection = []; //Directions right(plus), left (minus) blockDistance = []; //Displacement distance of the blocks blockLabel = game.add.group(); //Labels of the blocks blockSeparator = game.add.group(); //Separator of the labels //blockAngle = []; //Angles of blocks //blockTraceColor = []; //Trace colors endPosition = startX; //Ending position, accumulative if(oneOperator=='Minus') endPosition -= blockWidth; else endPosition += blockWidth; //Game A exclusive variables floorBlocks = game.add.group(); //Selectable floor blocks floorIndex = -1; //Selected floor block floorCount = 8; //Number of floor blocks floorClicked = false; //If clicked portion of floor curFloor = -1; //Game B exclusive variables arrowPlace = startX; //Fixed place for help arrow if(oneOperator=='Minus') arrowPlace -= blockWidth; else arrowPlace += blockWidth; fractionClicked = false; //If clicked a fraction (game B) fractionIndex = -1; //Index of clicked fraction (game B) hasFigure = false; for(var p=0;p<numBlocks;p++){ var portion = game.rnd.integerInRange(1, oneDifficulty); //Portion of the square, according to difficulty if(portion==3) detail+= "4,"; else detail += portion+","; if(portion==oneDifficulty) hasFigure = true; var direction = ''; var lineColor = ''; if(oneOperator=='Plus'){ direction = 'Right'; lineColor = 0x31314e; }else if(oneOperator=='Minus'){ direction = 'Left'; lineColor = 0xb30000; } var block = game.add.graphics(startX, 460-p*blockHeight); block.anchor.setTo(0.5, 0.5); block.lineStyle(2, lineColor); block.beginFill(0xefeff5); blockDirection[p] = direction; if(portion==1){ block.drawRect(0, 0, blockWidth, blockHeight); blockDistance.push(blockWidth); //blockAngle.push(360); if(oneLabel){ var labelX = startX; if(oneOperator=='Minus') labelX -= (15+blockWidth); else labelX += blockWidth+15; var label = game.add.text(labelX, 480-p*blockHeight, portion , styleLabel); label.anchor.setTo(0.5, 0.5); blockLabel.add(label); } }else{ if(portion==3) portion = 4; var distance = blockWidth/portion; block.drawRect(0, 0, distance, blockHeight); blockDistance.push(distance); if(oneLabel){ var labelX = startX; if(oneOperator=='Minus') labelX -= (15+distance); else labelX += 15+distance; var separator = game.add.sprite(labelX, 480-p*blockHeight, 'separator'); separator.scale.setTo(0.6); separator.anchor.setTo(0.5, 0.5); blockSeparator.add(separator); var label = game.add.text(labelX, 483-p*blockHeight, '1\n'+portion , styleFraction); label.anchor.setTo(0.5, 0.5); blockLabel.add(label); } } if(direction=='Right'){ endPosition += Math.floor(blockWidth/portion); }else if(direction=='Left'){ endPosition -= Math.floor(blockWidth/portion); block.scale.x *= -1; } block.endFill(); //If game is type B, (select fractions, adding event) if(oneType=='B'){ block.alpha = 0.5; block.inputEnabled = true; block.input.useHandCursor = true; block.events.onInputDown.add(this.clickSquare, {indice: p}); block.events.onInputOver.add(this.overSquare, {indice: p}); block.events.onInputOut.add(this.outSquare, {indice: p}); } blocks.add(block); } //Calculate next block if(blockDirection[curBlock]=='Right'){ nextEnd = startX+blockDistance[curBlock]; }else{ nextEnd = startX-blockDistance[curBlock]; } //If end position is out of bounds, restart if(!hasFigure) game.state.start('gameSOne'); if (oneOperator=='Plus' && (endPosition<(startX+blockWidth) || endPosition>(startX+8*blockWidth))){ game.state.start('gameSOne'); }else if (oneOperator=='Minus' && (endPosition>(startX) || endPosition<(startX-(8*blockWidth)))){ game.state.start('gameSOne'); } //If game is type B, selectiong a random block floor place if(oneType=='B'){ var end = game.rnd.integerInRange(1, numBlocks); for(var i=0;i<end;i++){ if(blockDirection[i]=='Right') arrowPlace += blockDistance[i]; else if(blockDirection[i]=='Left') arrowPlace -= blockDistance[i]; } } //Selectable floor floorCount = 8*oneDifficulty; var widFloor = blockWidth/oneDifficulty; if(oneDifficulty==3){ floorCount = 8*4; widFloor = blockWidth/4; } for(var i = 0; i<floorCount; i++){ var posX = startX; if(oneOperator=='Minus') posX -= (blockWidth + i*widFloor); else posX += (blockWidth + i*widFloor); if(oneType=='B'){ if(oneOperator=='Minus'){ if(posX<=arrowPlace){ floorCount = i+1; floorIndex = i-1; break; } }else{ if(posX>=arrowPlace){ floorCount = i+1; floorIndex = i-1; break; } } } var block = game.add.graphics(posX, 500); block.anchor.setTo(0.5, 0); block.lineStyle(0.2, 0xffffff); block.beginFill(0x000000); block.drawRect(0, 0, widFloor, blockHeight); block.endFill(); if(oneOperator=='Minus') block.scale.x *= -1; if(oneType=="A"){ block.alpha = 0.5; block.inputEnabled = true; block.input.useHandCursor = true; block.events.onInputDown.add(this.clickSquare, {indice: i}); block.events.onInputOver.add(this.overSquare, {indice: i}); block.events.onInputOut.add(this.outSquare, {indice: i}); } floorBlocks.add(block); } for(var i=0;i<=8;i++){ var posX = startX; if(oneOperator=='Minus')posX -= ((9-i)*blockWidth); else posX+=((i+1)*blockWidth); game.add.text(posX, 560, i , stylePlace).anchor.setTo(0.5, 0.5); } if(oneMenu){ // Menu options //information label m_info = game.add.text(14, 53, "", { font: "20px Arial", fill: "#330000", align: "center" }); // Return to language button // Remove language icon ::Igor m_world = game.add.sprite(10, 10, 'about'); m_world.inputEnabled = true; m_world.input.useHandCursor = true; m_world.events.onInputDown.add(showInfo); m_world.events.onInputOver.add(this.showOption, {message: words.menu_world}); m_world.events.onInputOut.add(this.showOption, {message: ""}); // Return to menu button m_list = game.add.sprite(60, 10, 'list'); m_list.inputEnabled = true; m_list.input.useHandCursor = true; m_list.events.onInputDown.add(this.loadState, {state: "menu", beep: beepSound}); m_list.events.onInputOver.add(this.showOption, {message: words.menu_list}); m_list.events.onInputOut.add(this.showOption, {message: ""}); // Return to diffculty m_back = game.add.sprite(110, 10, 'back'); m_back.inputEnabled = true; m_back.input.useHandCursor = true; m_back.events.onInputDown.add(this.loadState, {state: "menuSOne", beep: beepSound}); m_back.events.onInputOver.add(this.showOption, {message: words.menu_back}); m_back.events.onInputOut.add(this.showOption, {message: ""}); } // Help button /* m_help = game.add.sprite(160, 10, 'help'); m_help.inputEnabled = true; m_help.input.useHandCursor = true; m_help.events.onInputDown.add(this.viewHelp, {beep: this.beepSound}); m_help.events.onInputOver.add(this.showOption, {message: words.menu_help}); m_help.events.onInputOut.add(this.showOption, {message: ""}); */ //ok and error images okImg = game.add.image(game.world.centerX, game.world.centerY, 'h_ok'); okImg.anchor.setTo(0.5); okImg.alpha = 0; errorImg = game.add.image(game.world.centerX, game.world.centerY, 'h_error'); errorImg.anchor.setTo(0.5); errorImg.alpha = 0; //Help arrow arrow = game.add.sprite(this.arrowPlace, 480, 'down'); arrow.anchor.setTo(0.5, 0.5); if(oneType=="B") arrow.alpha = 0; else if(oneType=="A") arrow.alpha = 0.5; }, updateCounter: function() { totalTime++; }, overSquare: function(){ if(!clicked){ if(oneType=="A"){ for(var i=0;i<floorCount;i++){ if(i<=this.indice){ floorBlocks.children[i].alpha = 1; }else{ floorBlocks.children[i].alpha = 0.5; } } floorIndex = this.indice; }else if(oneType=="B"){ for(var i=0;i<numBlocks;i++){ if(i<=this.indice){ blocks.children[i].alpha = 1; }else{ blocks.children[i].alpha = 0.5; } } blockIndex = this.indice; } } }, outSquare: function(){ if(!clicked){ if(oneType=="A"){ for(var i=0;i<floorCount;i++){ floorBlocks.children[i].alpha = 0.5; } floorIndex = -1; }else if(oneType=="B"){ for(var i=0;i<=this.indice;i++){ blocks.children[i].alpha = 0.5; } blockIndex = -1; } } }, clickSquare: function(){ if(!clicked && !move){ if(oneType=='A'){ arrow.alpha = 1; clicked = true; animate = true; beepSound.play(); tractor.animations.play('right', 5, true); if(oneLabel){ //Hiding labels blockLabel.visible = false; blockSeparator.visible = false; } //cleaning path if(oneOperator=='Minus'){ for(var i=0; i< floorCount; i++){ if(i>floorIndex){ floorBlocks.children[i].alpha = 0; } } }else{ for(var i=0; i< floorCount; i++){ if(i>floorIndex){ floorBlocks.children[i].alpha = 0; } } } blockIndex = numBlocks - 1; }else if(oneType=='B'){ //Delete unselected blocks var minusBlocks = 0; for(var i=0;i<numBlocks;i++){ if(i<=blockIndex){ blocks.children[i].alpha = 1; }else{ blocks.children[i].visible = false; //Delete unselected block minusBlocks +=1; //number of blocks to reduce } } numBlocks -= minusBlocks; //Final reduced blocks arrow.alpha = 1; clicked = true; animate = true; beepSound.play(); tractor.animations.play('right', 5, true); if(oneLabel){ //Hiding labels blockLabel.visible = false; blockSeparator.visible = false; } } } }, postScore: function (){ // ::Igor var fi = 0; if (result == true) { // Correct student's result: hits[onePosition - 1] ++; end[onePosition - 1] = Math.floor(Date.now()/1000); conta = true; if (onePosition == 4) { fi = 1; } } else { // Error student's result: errors[onePosition - 1] ++; } iterator = onePosition; sendResults(fi); /*var abst = "numBlocks:"+numBlocks+", valBlocks: " + detail+" blockIndex: " + blockIndex + ", floorIndex: " + floorIndex; var hr = new XMLHttpRequest(); // Create some variables we need to send to our PHP file var url = "resource/cn/save.php"; var vars = "s_ip="+hip+"&s_name="+name+"&s_lang="+lang+"&s_game="+oneShape+"&s_mode="+oneType; vars += "&s_oper="+oneOperator+"&s_leve="+oneDifficulty+"&s_posi="+onePosition+"&s_resu="+result+"&s_time="+totalTime+"&s_deta="+abst; hr.open("POST", url, true); hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); hr.onreadystatechange = function() { console.log(hr); if(hr.readyState == 4 && hr.status == 200) { var return_data = hr.responseText; console.log(return_data); } } // Send the data to PHP now... and wait for response to update the status div hr.send(vars); // Actually execute the request console.log("processing...");*/ }, update: function() { if(!clicked){ if(!move){ if(oneType=='A'){ //Follow mouse if (game.physics.arcade.distanceToPointer(arrow, game.input.activePointer) > 8){ var xPos = game.input.mousePointer.x; arrow.x = xPos; } } } } //Start animation if(animate){ if(blockDirection[curBlock]=='Right'){ tractor.x+=2; }else if(blockDirection[curBlock]=='Left'){ tractor.x-=2; } for(var i=0;i<numBlocks;i++){ //Moving every block if(blockDirection[curBlock]=='Right'){ blocks.children[i].x +=2; }else{ blocks.children[i].x -=2; } } var extra = 80-blockDistance[curBlock]; if(blockDirection[curBlock]=='Right'){ if(blocks.children[curBlock].x>=nextEnd+extra){ blocks.children[curBlock].alpha = 0; blocks.y += 40; curBlock +=1; nextEnd += blockDistance[curBlock]; for(var i=0; i<=floorIndex; i++ ){ if(floorBlocks.children[i].x<(blocks.children[curBlock-1].x+blockDistance[curBlock-1])){ floorBlocks.children[i].alpha = 0.2; curFloor = i; } } } }else if(blockDirection[curBlock]=='Left'){ if(blocks.children[curBlock].x<=(nextEnd-extra)){ blocks.children[curBlock].alpha = 0; blocks.y += 40; curBlock+=1; nextEnd -= blockDistance[curBlock]; for(var i=0; i<=floorIndex; i++ ){ if(floorBlocks.children[i].x>(blocks.children[curBlock-1].x-blockDistance[curBlock-1])){ floorBlocks.children[i].alpha = 0.2; curFloor = i; } } } } if( curBlock>blockIndex || curFloor>=floorIndex){ //Final position animate= false; checkCollide = true; } } //Check if tractor has blocks left or floor holes if(checkCollide){ tractor.animations.stop(); timer.stop(); //Check left blocks var resultBlock = true; for(var i=0; i<=blockIndex; i++){ if(blocks.children[i].alpha==1) resultBlock = false; } //check floor Holes var resultFloor = true; for(var i=0; i<=floorIndex; i++){ if(floorBlocks.children[i].alpha==1) resultFloor = false; } if(resultBlock && resultFloor){ result = true; }else{ result = false; } this.postScore(); move = true; checkCollide = false; } //Continue moving animation if(move){ if(moveCounter==0){ if(result){ tractor.animations.play('right', 6, true); okSound.play(); okImg.alpha = 1; }else{ errorSound.play(); errorImg.alpha = 1; } } moveCounter += 1; if(result){ if(oneOperator=='Minus'){ tractor.x -=2; }else{ tractor.x +=2; } } if(moveCounter>=moveEnd){ if(result){ oneMove = true; }else{ oneMove = false; } game.state.start('mapSOne'); } } }, //Navigation functions, showOption: function(){ m_info.text = this.message; }, loadState: function(){ this.beep.play(); game.state.start(this.state); }, viewHelp: function(){ if(!clicked){ var pointer; if(oneType=='A'){ var pointer = game.add.image(endPosition, 490, 'pointer'); }else{ var pointer = game.add.image(blocks.children[endIndex-1].x, blocks.children[endIndex-1].y-blockSize/2, 'pointer'); } pointer.anchor.setTo(0.5, 0); pointer.alpha = 0.7; } } }; /****************************** END ****************************/ var endSquareOne={ create: function() { // Creating sound variable this.beepSound = game.add.audio('sound_beep'); this.okSound = game.add.audio('sound_ok'); this.errorSound = game.add.audio('sound_error'); // Reading dictionary var words = game.cache.getJSON('dictionary'); // Background game.add.image(0, 0, 'bgimage'); //Clouds game.add.image(300, 100, 'cloud'); game.add.image(660, 80, 'cloud'); game.add.image(110, 85, 'cloud').scale.setTo(0.8); // Styles for labels var stylePlace = { font: '26px Arial', fill: '#400080', align: 'center'}; var styleLabel = { font: '26px Arial', fill: '#000080', align: 'center'}; var styleMenu = { font: '30px Arial', fill: '#000000', align: 'center'}; //Floor for(var i=0;i<9;i++){ game.add.image(i*100, 501, 'floor'); } // Progress bar for(var p=1;p<=5;p++){ var block = game.add.image(680+(p-1)*30, 10, 'block'); block.scale.setTo(2, 1); //Scaling to double width } game.add.text(830, 10, '100%', styleMenu); game.add.text(670, 10, words.difficulty + ' ' + oneDifficulty, styleMenu).anchor.setTo(1,0); game.add.image(680, 10, 'pgbar'); //Farm and trees game.add.sprite(650, 260 , 'farm').scale.setTo(1.1); game.add.sprite(30, 280 , 'tree4'); game.add.sprite(360, 250 , 'tree2'); //tractor this.tractor = game.add.sprite(0, 490 , 'tractor'); this.tractor.anchor.setTo(0.5,0.5); this.tractor.scale.setTo(0.8); this.tractor.animations.add('right',[0,1,2,3,4]); this.tractor.animations.play('right', 5, true); }, update: function() { if(this.tractor.x<=700){ this.tractor.x += 2; }else{ if(oneMenu){ // REDIRECIONAR AQUI!! ::Igor if (redir == true) { this.tractor.animations.stop(); finish_redirect(); redir = false; } }else{ this.tractor.animations.stop(); } } }, verPrincipal: function(){ game.state.start('welcome'); }, verMenu: function(){ if(oneMenu){ game.state.start('menu'); } } };