cahe 0 Denunciar post Postado Agosto 26, 2008 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<numSymbols*2; 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! Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Agosto 26, 2008 Acho que nao hora que voce ta inserindo no vetor seja o problema, porque tipo: for(var i:uint=0;i<boardWidth*boardHeight/2;i++) { cardlist.push(i); cardlist.push(i); } Voce tenha que inserir duas vezes porque ai teria a seguinte logica: 1122334455667788... e por ai vai porque o 1 seria a carta virada e o outro 1 seria a carta desvirada. abs Compartilhar este post Link para o post Compartilhar em outros sites
cahe 0 Denunciar post Postado Agosto 27, 2008 Acho que nao hora que voce ta inserindo no vetor seja o problema, porque tipo: for(var i:uint=0;i<boardWidth*boardHeight/2;i++) { cardlist.push(i); cardlist.push(i); } Voce tenha que inserir duas vezes porque ai teria a seguinte logica: 1122334455667788... e por ai vai porque o 1 seria a carta virada e o outro 1 seria a carta desvirada. abs Obrigado pela resposta Kisuke, e desculpe a minha burrice, mas eu não entendi. Pelo que eu estava testando, o problema ocorre nesse ponto do código, onde é feito o sorteio e atribuição dos valores a cada par: CODE 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<numSymbols*2; j++) { var index:int = Math.floor(Math.random()*aSymbols.length); aShuffle.push(aSymbols[index]); aSymbols.splice(index,1); } } Até 9 pares, isso acontece perfeitamente. Para 10 pares de cartas ou mais, ocorre o problema. As cartas dos pares extras ganham valores diferentes, impossibilitando o "acerto" desses pares. Compartilhar este post Link para o post Compartilhar em outros sites
hufersil 145 Denunciar post Postado Agosto 27, 2008 Fiz um joguinho simples, mas bem legal de customizar http://www.hufersil.com.br/exemplo/memoria.rar em AS3 @braços Compartilhar este post Link para o post Compartilhar em outros sites
cahe 0 Denunciar post Postado Agosto 27, 2008 Fiz um joguinho simples, mas bem legal de customizar http://www.hufersil.com.br/exemplo/memoria.rar em AS3 @braços Obrigado Hugo. Vou dar uma estudada nesse seu exemplo. Mas de qualquer forma, eu ainda quero arrumar o modelo que mandei. Para o que eu preciso, seria melhor. Tem que ter um jeito de colocar mais que 9 pares de cartas! grrrrrr... hehehe Compartilhar este post Link para o post Compartilhar em outros sites