Ir para conteúdo

POWERED BY:

Arquivado

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

peshe

os acertos contam dobrado^^

Recommended Posts

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

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

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

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

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

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

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

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

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

×

Informação importante

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