peshe 0 Denunciar post Postado Agosto 17, 2007 Pessoal, eu vi o tutorial do Francisco Teodorico ( no MXStudio ), chamado Jogo de "Tiro ao Alvo" e estou com problemas, os acertos contam dobrado^^ se eu clico uma vez no logox_mc ( onde x é 1, 2 ou 3 - esse logo é o alvo) ele conta como dois cliques, é engraçado, e a precisão também está dobrada, o máximo seria 100%, mas está em 200%! O problema é com os acertos, sei disso porque a precisão usa os acertos na conta, ja revirei o código, mas não sei onde está o erro: _global.acertos = 0; //Armazena a quantidade de logos atingidos_global.erros = 0; // Armazena a quantidade de logos que "fugiram"_global.cliques = 0; // Armazena a quantidad e cliques (acertos e erros)_global.cProfundidade = 100;_global.nivel = 1;var xVelocidade:Number = Math.round(4+_global.nivel);var larguraStage:Number = 550; //Definição da área dos cliquesvar alturaStage:Number = 320; // Definição da área dos cliquesthis.attachMovie("alvo_mc", "alvo_mc", 5001);Mouse.hide();var mouseListener:Object = new Object();mouseListener.onMouseMove = function() { alvo_mc._x = _xmouse; alvo_mc._y = _ymouse;};mouseListener.onMouseDown = function() { _global.cliques++; if (fundo_mc.hitTest(_xmouse, _ymouse, false)) { _global.acertos++; }};Mouse.addListener(mouseListener);var meu_textoFormatado:TextFormat = new TextFormat();meu_textoFormatado.bold = true;meu_textoFormatado.font = "Arial";meu_textoFormatado.size = 12;meu_textoFormatado.color = 0x000000;this.createTextField("estatisticas_txt", 5000, 10, 0, 530, 22);estatisticas_txt.setNewTextFormat(meu_textoFormatado);estatisticas_txt.selectable = false;updateStats();this.onEnterFrame = function() { if (randRange(0, 20) == 0) { var randomLogo:Number = randRange(1, 3); var thisMC:MovieClip = this.attachMovie("logo"+randomLogo+"_mc", "logoAlvo"+_global.cProfundidade+"_mc", _global.cProfundidade); _global.cProfundidade++; thisMC._x = -thisMC._width; var escala = randRange(80, 100); thisMC._xescala = escala; thisMC._yescala = escala; thisMC._alpha = escala; thisMC.speed = xVelocidade+randRange(0, 3)+_global.nivel; thisMC._y = Math.round(Math.random()*350)+65; thisMC.onEnterFrame = function() { this._x += this.speed; this._y -= .4; if (this._x>larguraStage) { _global.erros++; updateStats(); this.removeMovieClip(); } }; thisMC.onPress = function() { _global.acertos++; if ((_global.acertos%40) == 0) { _global.nivel++; // Mudança de nível } updateStats(); this.gotoAndPlay("hit"); var ymov = this._y; var gravity = 50; this.onEnterFrame = function() { ymov += gravity; xmov *= 0.5; this._rotation += 5; this._x += xVelocidade; this._y = ymov; if (this._y>alturaStage) { this.removeMovieClip(); } }; delete this.onPress; }; }};function updateStats() { var precisao:Number = Math.round((_global.acertos/_global.cliques)*100); if (isNaN(precisao)) { precisao = 0; } estatisticas_txt.text = "Cliques: "+_global.cliques+" "+"Acertos: "+_global.acertos+" "+"Erros: "+_global.erros+" "+"Precisão: "+precisao+"%"+" "+"Nível: "+_global.nivel;}function randRange(minNum:Number, maxNum:Number):Number { return (Math.floor(Math.random()*(maxNum-minNum+1))+minNum);} Tem mais umas coisinhas: 1: alguns logosx_mc (onde x é um número 1, 2 ou 3) aparecem para baixo do Stage, isso deixa o jogo bem tosco porque a maioria fica em baixo, como eu mudo isso, para os MC's não serem cirados para fora do stage?? 2: como eu faço para se, os erros chegarem a 15, ir para o "Scene 2", 2?? Não estou conseguindo acertar essa condição. 3: como é essa fórmula para passar de nível?? Não entendi... Acho que um dos erros está nessa parte do código: /*Quando o botão do mouse é clicado, verificar se o cursor está fora dos limites do Stage.Em caso positivo, incrementa o número de cliques dados*/mouseListener.onMouseDown = function() { _global.cliques++; if (fundo_mc.hitTest(_xmouse, _ymouse, false)) { _global.acertos++; }}; Deveria aumentar os cliques, não os acertos, seu eu mudo isso, os acertos aumentam de 4 em 4^^ Me ajudem nesse jogo, porfavor. Agradeço antecipadamente. Té mais. PS: postei essa dúvida no fórum do MXStudio no dia 14/08, ninguém me ajudou... Compartilhar este post Link para o post Compartilhar em outros sites
Eder Fortunato 15 Denunciar post Postado Agosto 18, 2007 teria como você postar o seu .FLA do jogoficaria mais facil ajudar[]´s Compartilhar este post Link para o post Compartilhar em outros sites
peshe 0 Denunciar post Postado Agosto 18, 2007 Ok, o link está aí: Tiro.fla Mais uma coisa, quando eu clico fora dos 'alvos' e clico numn alvo depois, ele conta como dosi acertos ... Heheheh Tá tudo bugado... Té mais. Compartilhar este post Link para o post Compartilhar em outros sites
carneirinho 7 Denunciar post Postado Agosto 19, 2007 comente o código da linha 144 porque ele está dobrando o valor dos acertos, deixe assim que dai ele só fará a verificação de níveis: thisMC.onPress = function() { /* Atualizar as estatísticas do jogador */ //_global.acertos++; if ((_global.acertos%40) == 0) { _global.nivel++; // Mudança de nível } Compartilhar este post Link para o post Compartilhar em outros sites
peshe 0 Denunciar post Postado Agosto 21, 2007 Cara, valew, agora está funcionando corretamente!! Só mais duas dúvidas: 1°: não entendi direito como é essa fórmula para passar de nível: if ((_global.acertos%40) == 0) {_global.nivel++; // Mudança de nível}Esses 40% não estão me fazendo sentido.... 2°: como eu faço para se, os erros chegarem a 15, ir ao frame 2 da cena 2?? tentei o seguinte código, mas ja começa como se eu ja tivesse perdido: if (_global.erros = 15) { gotoAndStop("Scene 2", 2);} Té mais. Compartilhar este post Link para o post Compartilhar em outros sites
peshe 0 Denunciar post Postado Agosto 24, 2007 Alguém me ajuda??? Compartilhar este post Link para o post Compartilhar em outros sites
peshe 0 Denunciar post Postado Agosto 29, 2007 Alguém pode me explicar como é essa fórmula e qual é o código que devo usar para ir ao frame de perdeu?? Compartilhar este post Link para o post Compartilhar em outros sites
peshe 0 Denunciar post Postado Agosto 29, 2007 Alguém pode me explicar como é essa fórmula e qual é o código que devo usar para ir ao frame de perdeu?? Compartilhar este post Link para o post Compartilhar em outros sites
peshe 0 Denunciar post Postado Setembro 3, 2007 Calma gente, um de cada vez...Hehehe.Não deve ser difícil resolver minhas dúvidas:como é essa fórmula e qual é o código que devo usar para ir ao frame de perdeu (Scene 2, frame 2)??Té mais. Compartilhar este post Link para o post Compartilhar em outros sites
Antoniosp 2 Denunciar post Postado Setembro 4, 2007 Eita.. perae :P 1°: não entendi direito como é essa fórmula para passar de nível:Esse "porcento" aí na verdade não tem nada a ver com porcentagem, ele chama módulo e tem a ver com divisão. Sabe quando você está lá na terceira série e aprende que 7 dividido por 2 dá 3 e sobra 1? Então, esse sobra 1 é o modulo. Pode testar em um arquivo novo: trace(7%2); //vai dar 1 Então qual é a sacada desse código? if ( (_global.acertos%40) == 0) {Sempre que você dividir o número de acertos por 40 e der 0 como resto, passa pro próximo nível. Ou seja, sempre que o placar 40, 80, 120, 160, múltiplos de 40. Agora sobre como eu faço para se, os erros chegarem a 15, ir ao frame 2 da cena 2?Repare no IF que eu acabei de te explicar. Ele tem um == e não um =. Dá uma lida nesse tópico que o Eder respondeu a pouco. Abraço Compartilhar este post Link para o post Compartilhar em outros sites
peshe 0 Denunciar post Postado Setembro 4, 2007 Valew, Antoniosp!!!! Eu estava meio desconfiado que esse "%" não era de porcentagem^^, não fazia sentido.... Agora eu entendi meu erro, valew pela dica!!! Té mais. edit: Cara, eu puis o "==" no lugar do "=", mas não funcionou... testei o seguinte código: if ( (_global.erros) == "15") { gotoAndStop("Scene 2", 2);}Testei com ou sem aspas, testei antes do ") ) {", mas não deu certo... Eu fiz mais de 15 erros e não foi ao frame de perdeu... Espero que me ajude mais um pouco... Té mais... Compartilhar este post Link para o post Compartilhar em outros sites