Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fiotinhotg

Jogo da Memória AS3

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.