Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia amigos do fórum Imasters.
Preciso desenvolver um jogo da memória com 20 cartas (10 pares). Como ainda não tenho conhecimento para desenvolver do zero, fui buscar algumas opções de código pronto, para alterar de acordo com o que preciso. Tentei usar um que encontrei no http://www.mxstudio.com.br/forum/index.php?showtopic=16444, mas ele não funciona com mais de 4 pares de cartas.
Dai encontrei um no site da Adobe, http://download.macromedia.com/pub/developer/memory_game.zip e esse já é bem melhor. Mas agora o problema é que ele não funciona com mais de 9 pares de cartas. E eu preciso com 10 pares!
Já estou fuçando no código a uns 2 dias e não consigo fazer funcionar. A questão é que quando tem 10 pares de cartas ou mais, ele se perde no sorteio e na comparação das cartas que fazem o par correto. Mais especificamente o último par (para 9 pares dá certo, o décimo que ele não consegue fazer a comparação).
Se vocês testarem o .fla, poderão ver que na janela trace ele vai mostrando em tempo real a comparação das cartas. Por exemplo, uma carta com o símbolo de coração tem o número 13. Para o flash comparar e saber qual é o par correto, ele vai fazendo a comparação com as outras cartas que o usuário vai clicando, até achar a outra que tem o número 13. O problema é que quando é acrescentado o 10 par, ele atribui a uma carta o valor 10 e a outra o valor 20, dai como 10 é diferente de 20, ele não encontra o par.
Alguém pode me dar uma ajuda pra fazer funcionar com os 10 pares de cartas?
O AS é o seguinte:
CODE
var gameScreen:Sprite = new Sprite();gameScreen.x = 220;
gameScreen.y = 140;
addChild(gameScreen);
var numSymbols:int = 10;
var numRows:int = 4;
var numColumns:int = 5;
var hSpace:int = 70;
var vSpace:int = 60;
var clicks:int = 0;
var firstClick:int;
var secondClick:int;
var tries:int;
var correct:int;
mWin.visible = false;
var aSpinners:Array = new Array();
var aSymbols:Array = new Array();
var aShuffle:Array = new Array();
var buzz:Buzz = new Buzz();
var ding:Ding = new Ding();
var applause:Applause = new Applause();
var delay:Timer = new Timer(1000,0);
delay.addEventListener(TimerEvent.TIMER, noMatch);
var painter:Timer = new Timer(50,(numSymbols*2));
painter.addEventListener(TimerEvent.TIMER, paintNewSymbol);
function setUpSymbols():void
{
aShuffle = [];
for (var i:int = 0; i<numSymbols*2; i++)
{
if ( i < numSymbols)
{
aSymbols* = i +10;*
}
else
{
* aSymbols** = i+1;*
}
}
for (var j:int = 0; j<numSymbols2; j++)*
{
var index:int = Math.floor(Math.random()aSymbols.length);*
aShuffle.push(aSymbols[index]);
aSymbols.splice(index,1);
}
}
function drawSymbols():void
{
trace("symbols to remove", gameScreen.numChildren);
var numToRemove:int = gameScreen.numChildren;
for (var index:int = 0; index<numToRemove; index++)
{
trace("remove", index);
gameScreen.removeChildAt(0);
}
painter.stop();
trace("draw", painter.currentCount);
painter.reset();
trace("draw", painter.currentCount);
painter.start();
}
function paintNewSymbol(evt:TimerEvent):void
{
trace("new", painter.currentCount);
var i = painter.currentCount - 1;
var currentRow:int = Math.floor(i/numColumns);
var currentColumn:int = i - (currentRow numColumns);*
* aSpinners** = new Spinner(i);*
* gameScreen.addChild(aSpinners**);*
* aSpinners**.x = currentColumn hSpace;
* aSpinners**.y = currentRow vSpace;
aSpinners.symbol = aShuffle;
* aSpinners**.addEventListener(MouseEvent.CLICK, clickSpinner);*
}
function clickSpinner(evt:MouseEvent):void
{
evt.target.spinOpen();
if (clicks == 0)
{
firstClick = evt.target.index;
clicks = 1;
}
else
{
if (evt.target.index != firstClick)
{
tries += 1;
tTries.text = String(tries);
secondClick = evt.target.index;
if (evt.target.symbol == aSpinners[firstClick].symbol)
{
trace("match");
ding.play();
applause.play();
correct += 1;
tCorrect.text = String(correct);
if (correct == numSymbols)
{
mWin.visible = true;
bStart.visible = true;
}
}
else
{
trace("no match");
delay.start();
}
clicks = 0;
}
}
}
function noMatch(evt:TimerEvent):void
{
aSpinners[firstClick].spinClose();
aSpinners[secondClick].spinClose();
buzz.play();
delay.stop();
}
function startGame(evt:MouseEvent):void
{
setUpSymbols();
drawSymbols();
tries = 0;
correct = 0;
tTries.text = String(tries);
tCorrect.text = String(correct);
mWin.visible = false;
bStart.visible = false;
}
bStart.addEventListener(MouseEvent.CLICK, startGame);
Obrigado!
Carregando comentários...