STICKMAN (155 pts)

MARLOS ALVES CARMO (90 pts)

ZEBEDIAH (35 pts)

AMAURY BENTES (123 pts)

BÁRBARA TOSTES (64 pts)

IRAPUAN MARTINEZ (45 pts)

DANIELA PIRES (86 pts)

MARCELO SIQUEIRA (96 pts)

NILTON BICALHO (61 pts)

RICARDO TAKAHASHI (180 pts)

FLASHGURU (155 pts)

EDUARDO PERROUD (52 pts)
Treinamento PontoFlash de Flash e ActionScript

Uma grande dica para o uso do Prototype.

Como transformar uma animação em um movie clip?

Importar variáveis de um TXT, com loadVars em um compontente scrollBar (rolagem).

Como checar se o usuário escreveu um email válido certo no formulário?

Estou criando um combo works ou o famoso jogo de palavras.

Alguém tem um chat (de preferência .fla) ou sabe onde conseguir um?

Porque o Flash mostra sempre o relógio com 1 hora atraso?

Gostaria de no mouse over sobre um texto, ele parasse, e no mouse out, prosseguisse de onde parou.

O loadMovie() vai acumulando os filmes abertos na memória?

Como mudar a cor de uma imagem dinamicamente via ActionScript?

Como desabilitar os comandos Esc e Alt+F4 numa página do flash?

É possível mostrar uma mensagem numa data específica?

Como criar movieclips dinamicamente com uma escala e um alpha no mouseOver?

Quero fazer um objeto ser arrastado e que quando soltado (stopDrag) caia suavemente.
Objeto XML - xml viewer

Controle de som no Flash 5.

Classe TransitionAnime e Painel TransitionAnimeEffect

Colisão (hitTest)

Enviando EMAIL com ASP, COLDFUSION E PHP

Compartilhando fontes

GetMySQLData para Flash5 (segunda parte)

Funções : localToglobal() e globalToLocal()

Looping.

O desenho animado abrindo sites.

Interpolação de movimento

Detecção do FlashPlayer.
Ligth Balls

Xbox f5

Super menu

Foguete

Transportes

Preloader

3d geo

Relógio

Efeito Blur

Musica

Worms 3d

Message Board Flash+PHP
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
0 comentário