RICARDO TAKAHASHI (180 pts)

RODRIGO AMARAL (56 pts)

GABRIEL SPORCH (53 pts)

DANIELA PIRES (86 pts)

ÉMERSON ROCHA (85 pts)

STICKMAN (155 pts)

LEANDRO AMANO (83 pts)

MAURO ROCHA TAVARES (40 pts)

GUILHERME SCHEIBE (49 pts)

MARCELO SIQUEIRA (96 pts)

SASHA GUDEY (235 pts)

LUI FERNANDO (151 pts)
Treinamento PontoFlash de Flash e ActionScript

Existe algum modo de definir quais variáveis vão ser enviadas pelo POST do flash?

Como criar rótulos para um botão criados dinamicamente, sem precisar declarar um a um?

Caso em que numa função setInterval, o clearInterval não funciona.

Como gravar num TXT e depois recuperar dados enviados por um campo de texto?

Como posso duplicar 3 movieclips e posicioná-los diagonalmente?

Determinado o fim do tellTarget.

Como colcar no flash um botão que tenha a função voltar do navegador?

Um movie clip, em uma cena, pode continuar, em outra cena, de onde parou?

Como fazer para o flash puxar um texto de um arquivo externo?

Como fazer um objeto andar no MouseOver?

É possível incluir imagens em um arquivo HTML inserido dentro de um Flash e com scroll?

Como traço uma linha no meu filme com o mouse?

Como posso rotacionar algum objeto?

O quê significa INT, como no exemplo "tempo = int ( tempo );"?
Gravidade no Flash.

Bookmak (Adicionar a favoritos).

Formatação Encoded e Decoded

Objeto array - Classificar uma array (sorting) e e arrays multidimensionais

Aprendendo a interagir Flash e ASP

Betinhocarreiro e Dysney.

Troca de cor de imagens

Tell Target e Linhas do tempo independentes

Atenuação (easing).

Como fatiar um site modelo portal no Fireworks

Controlando um swf que está em outro frame

Interação de Flash+Asp.
Drag hittest

Arion 3

News

Over menu

Natal Noel

Color Pick

Data Glue

campo de texto no Down

Bola quicando

Starfield

Botão liga/desliga

Cmponente Radio Button
HOME | TUTORIAIS
Jogo da Forca (terceira parte)
por Alexandre Porto

1 / 2 / 3

 

Clique aqui para ver o exemplo final desse tutorial funcionando.

O desafio desse terceiro tutorial é a contagem de pontos e o reinício em caso de erro e acerto. Começaremos por definir algumas variáveis que serão usadas nesse processo. O quinto quadro da timeline principal ficaria assim:

onClipEvent (load) {
    function Letras () {

        // aqui eu transformei as ações do primeiro turorial em uma função
        // como já foi indicado antes

        pos = q0._x+60;
        u = random(parseInt(_root.numeroTotal));
        palavra = _root["pala"+ u]
        numeroQuadros = palavra.length-1;
        for (i=0; i<numeroQuadros; i++) {
            duplicateMovieClip (_root.q0, "q"+i, i);
            setProperty ("_root.q"+i, _x, pos);
            pos += 35;
        }
    }
    Letras();

    // aqui eu a chamo no mesmo evento. Como foi feito com os botões.
    function repetir () {

        // aqui eu estou criando uma função repetir
        // que será usada em caso de 5 erros ou acerto da palavra

        for (i=0; i<numeroQuadros; i++) {
            removeMovieClip ("_root.q"+i);
        }

        // aqui eu removo todas os campos de texto da palavra anterior.
        _root.digitado = "";
        _root.q0.mostrar = "";
        _root.acertos = 0;
        _root.i = 0;

        // aqui eu limpo algumas das variáveis declaradas no início.
        loadMovieNum ("botao.swf", 1);
        // reabro os botões com as letras.
        Letras();
        // aqui eu chamo novamente a função que redistribui as letras.
    }
}
onClipEvent (enterFrame) {
    if (_root.acertos == numeroQuadros) {
        _root.mensagem = _root.acertotxt;
        if (count<2) {
            tempo1 = getTimer();
            count = 2;
        } else if ((tempo1+2000)>tempo2) {
            tempo2 = getTimer();
        } else {
            _root.pontos++;
            repetir();
        }

        // essas linhas são para quando a pessoa acerta uma palavra.
        // nada mais é do que a função "repetir" e o incremento em "pontos"
        // Há tb uma instrução get timer para que a função repetir
        // só seja desencadiada depois de 2 segundos

    }
    if (_root.erros == 5) {
        _root.mensagem = _root.errotxt;
        repetir();
        _root.cliquetotal = 0;
        _root.unicos = 0;
        _root.pontos = 0;

        // aqui eu limito o número de erros em 5, quando o jogo é reiniciado
        // você pode incrementar com uma animação de forca

    }
    _root.erros = _root.cliquetotal-_root.unicos;

    // Essa é a forma como checo o número de erros
}

   É importante ficar entendido que os acertos são checados levando-se em conta as letras repetidas e os espaços que são inicialmente computados. Na palavra BANANA, a letra "a" incrementa 3 pts na variável "acerto". Quando o número de acertos for igual ao número de letras, é disparada a função "repetir" (ver código acima). Nesse caso é incrementada a variável pontos e nada é alterado na variável "erros", pois essa só será zerada no caso de 5 erros consecutivos.

   Os erros já são checados de outra maneira. Criei uma variável "unicos" que computa apenas uma vez a letra "a" em BANANA. Assim eu posso comparar seu valor com o número de tentativas (cliquetotal). Se o número de tentativas for igual ao número de letras únicas (sem repetições) + 5, quer dizer que o jogador errou cinco vezes. Desse modo todo o jogo é reiniciado e as variáveis voltam todas para os valores iniciais.

Veja agora como ficou o movieclip action inserido no movieclip das letras.

onClipEvent (load) {
    nome = _parent._name;
   
linha = nome.substr(1);
    _parent.letraAtual = _root.action.palavra.charAt(linha);
    if (_parent.letraAtual == " ") {
        setProperty (_parent, _visible, "0");
       
_root.acertos++;

        // aqui eu incremento a variável "acertos" caso haja espaço na palavra.
        // estou simulando como se ela tivesse sido uma letra acertada
.
    }
}
onClipEvent (enterFrame) {
    if (_root.digitado == _parent.letraAtual) {
        _parent.mostrar = _parent.letraAtual;
        _root.acertos++;

        // aqui eu incremento a variável acertos, pois o jogador acertou uma letra.
        _parent.letraAtual = "_";
        // aqui eu modifico a variável para que ela nunca mais seja checada,
        // caso contrário a variável "acertos" seria incrementada indefinidamente
.
        _root.i = 1;
    }
    if (_root.clique == 1 && _root.i == 1) {

       
// esa é a maneira que encontrei para que uma letra repetida fosse
        //computada uma única vez.
        // assim eu posso checar corretamente o número de erros.

        _root.unicos++;
        _root.i = 0;
        _root.clique = 0;
    } else {
        _root.i = 0;
    }
    _root.digitado = _root.digitado.toUpperCase();
    if (_root.erros == -1) {
       _root.erros=0;
    }
}

Clique aqui para ver o exemplo desse tutorial funcionando. E aqui para baixar o source.

Primeira parte / Segunda parte / Terceira parte


Devido à reformulação implementada no site, pode ser que você encontre alguns links quebrados. Por favor, ajude-nos a corrigir eventuais problemas nos informando links quebrados
1 comentário


Comentário de Eliezer
| 10/4/2012 - 08:43 |
http://www.artessites.com

Alexandre estou a muito tempo tentando fazer esta guitarra http://www.maniadejogos.com/jogos/Virtual+Guitar Você poderi ensinar como se faz.