fiotinhotg 0 Denunciar post Postado Fevereiro 5, 2014 Olá, Estou criando um jogo da memória e o jogo está funcionando certinho até a pessoa acertar todas as cartas, só que quero que o jogo tenha uma regra e que a pessoas só jogue 6 vezes, caso ela não consiga acertar tudo em 6 jogadas o jogo para vai para o próximo frame e da uma mensagem que ela não conseguiu completar, caso ela consiga vai para o próximo frame e da parabéns. No final tem um botão que vai para o início do jogo. Eu até consigo fazer isso mais por exemplo se ela não conseguir virar todas as cartas quando vai para o próximo frame as cartas não somem e fica por cima de tudo que tem no frame, como faço para que isso não aconteça? Se alguém puder me ajudar porfavor!!!! preciso entregar isso para o cliente o mais rápido possível. segue o código do jogo: 1º frame ------------------ import flash.events.MouseEvent; stop(); comecar.addEventListener(MouseEvent.CLICK, comecarJogo); function comecarJogo(e:MouseEvent){ gotoAndStop(2); } 2º frame ------------- import flash.events.MouseEvent; import flash.utils.setInterval; import flash.utils.clearInterval; const QUANT_CARTAS:int = 8; const CARTAS_POR_LINHA:int = 4; var cartas:Array = new Array(); var cartasColetadas:Array = new Array(); var intervalo:int; var podeJogar:Boolean = true; var erros:int = 0; var acertos:int = 0; var jogadas:int = 0; for(var i:int=0; i < QUANT_CARTAS/2; i++){ cartas.push(i); cartas.push(i); } for(var moeda:int = QUANT_CARTAS-1; moeda>0; moeda--){ var pos:int = Math.floor(Math.random() * moeda); var carta:int = cartas[moeda]; cartas[moeda] = cartas[pos]; cartas[pos] = carta; } for(i=0; i<QUANT_CARTAS; i++){ var novaCarta:Carta = new Carta(); novaCarta.tipoCarta = cartas; novaCarta.x = 300 + (novaCarta.width + 30) * ( i % CARTAS_POR_LINHA); novaCarta.y = 300 + (novaCarta.height + 30) * (Math.floor( i / CARTAS_POR_LINHA ) ); novaCarta.gotoAndStop(QUANT_CARTAS / 2 + 1); novaCarta.buttonMode = true; novaCarta.addEventListener(MouseEvent.CLICK, cartaClicada); addChild(novaCarta); } function cartaClicada(e:MouseEvent){ if(podeJogar == true){ var carta:Carta = e.currentTarget as Carta; if(cartasColetadas.indexOf(carta) == -1){ cartasColetadas.push(carta); carta.gotoAndStop(carta.tipoCarta+1); } if(cartasColetadas.length == 2){ podeJogar = false; if(cartasColetadas[0].tipoCarta == cartasColetadas[1].tipoCarta){ intervalo = setInterval(removeCartas, 500); } else{ intervalo = setInterval(resetaCartas, 500); } } } } function removeCartas(){ clearInterval(intervalo); cartasColetadas[0].removeEventListener(MouseEvent.CLICK, cartaClicada); cartasColetadas[1].removeEventListener(MouseEvent.CLICK, cartaClicada); removeChild(cartasColetadas[0]); removeChild(cartasColetadas[1]); cartasColetadas = new Array(); acertos++; jogadas++; txtJogadas.text = jogadas.toString(); podeJogar = true; if(acertos == 4 ){ gotoAndStop(3); } else if(jogadas == 6){ gotoAndStop(4); } } function resetaCartas(){ clearInterval(intervalo); cartasColetadas[0].gotoAndStop(QUANT_CARTAS / 2 + 1); cartasColetadas[1].gotoAndStop(QUANT_CARTAS / 2 + 1); cartasColetadas = new Array(); erros++; jogadas++; txtJogadas.text = jogadas.toString(); podeJogar = true; if(jogadas == 6){ gotoAndStop(4); } } 3º frame --------------- import flash.events.MouseEvent; recomecar.addEventListener(MouseEvent.CLICK, recomecarJogo); function recomecarJogo(e:MouseEvent){ gotoAndStop(1); } Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Fevereiro 6, 2014 Experimente criar um contador, após as 6 jogadas remova os eventos. Visible false ou removeChild() para remover as cartas. abs Compartilhar este post Link para o post Compartilhar em outros sites