Criando um caça-palavrasNeste Pré-requisitos:
Ao longo deste estudo, veremos os seguintes itens que lhes auxiliarão em outras tarefas:
Para auxiliar e facilitar o seu estudo deste artigo, estude também os artigos falando sobre XML: Criando a interfaceNossa primeira tarefa, é desenvolver o layout do nosso jogo de caça-palavras. Fiz o meu de uma maneira bem simples, para ficar mais fácil o entendimento. Coloque o palco nas dimensões 750 x 300 (aperte CTRL + J ou vá em Modify -> Document… para alterar as dimensões do palco). Como um jogo de caça-palavras consiste em um aglomerado de quadrinhos com letras no meio, vamos fazer somente um quadrinho (MovieClip) com uma letra dentro (Dynamic Text/Texto dinâmico).
O quadro laranja (à esquerda) mostra nosso MovieClip no primeiro quadro. O quadro azul (à direita), no segundo quadro. Há três camadas: a primeira camada (de cima para baixo) é para ações. A segunda, o campo de texto dinâmico (note que não há quadros chaves). A terceira, o fundo dos quadrinhos (o primeiro quadro do MovieClip exibe o quadro normal e o segundo quadro, o estado deste selecionado). Coloque o nome de instância do texto dinâmico como letra. A única ação a ser colocada neste primeiro quadro, como mostra a figura é stop(); para que o nosso MovieClip fique parado.
Depois da edição do MovieClip, volte para a linha de tempo principal, e coloque o nome de instância de q1 (letra “q” e número 1) para o MovieClip.
Após isso, crie uma nova camada para colocarmos a lista com as palavras e outra para as ações. Deverá ficar parecido com isso:
Na camada lista palavras, iremos criar um campo de texto dinâmico, com o nome de instância palavra. Coloque-o na posição em x: 550 e y: 10.
Clique sobre este campo de texto e pressione F8 ou clique em Modify > Convert to Symbol. Depois, coloque o nome de instância deste novo MovieClip como lista_palavra.
Pronto, nossa interface está pronta. Depois se você quiser acrescentar desenhos e outras coisas fique a vontade. Criando o XMLIremos armazenar a lista de palavras em um arquivo XML, para ficar mais organizado e facilitar a troca de palavras. Abaixo segue um XML de exemplo: <?xml version=”1.0″ encoding=”UTF-8″?>
<caca-palavra> <config linhas=”10″ colunas=”17″ x=”10″ y=”10″ espaco=”2″/> <palavras> <palavra orientacao=”vertical” coluna=”1″ linha=”1″>MXSTUDIO</palavra> <palavra orientacao=”horizontal” coluna=”3″ linha=”5″>FLASH</palavra> <palavra orientacao=”diagonal_direita” coluna=”5″ linha=”2″>FIREWORKS</palavra> <palavra orientacao=”vertical_inverso” coluna=”3″ linha=”10″>RIA</palavra> <palavra orientacao=”vertical” coluna=”16″ linha=”2″>FORUM</palavra> </palavras> </caca-palavra> As possíveis posições você pode conferir nos comentários do código de ActionScript, mais abaixo. É necessário que seja seguido esta ordem na montagem do arquivo XML, para o código abaixo o interprete corretamente. Primeiro o nó de caca-palavra, depois o config e em seguida o nó palavras que contém vários nós palavra. O ActionScriptNo quadro 1 da camada ações, coloque as ações abaixo. /* alinhamos o stage pelo topo e esquerda */
Stage.align=”LT”; /* colocamos o quadrinho inicial invisivel */ q1._visible=false; /* deixa a lista de palavras invisivel */ lista_palavras._visible=false; /* armazena as palavras */ var holder:Object = {}; /* número de tentativas do usuário */ var tentativas:Number = 0; /* letras que irão compor o jogo */ var alfabeto:Array = (new String(‘A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,X,W,Y,Z,1,2,3,4,5,6,7,8,9,0′)).split(‘,’); /* carrega o XML */ var doc:XML = new XML(); /* remove espaços em branco do XML */ doc.ignoreWhite=true; /* quando carregar o XML */ doc.onLoad = function () { /* pega o nó de configuração */ var conf:XMLNode=this.firstChild.firstChild; /* coloca o primeiro quadrinho na posição informada em x */ q1._x = conf.attributes.x; /* coloca o primeiro quadrinho na posição informada em y */ q1._y = conf.attributes.y; /* pega o numero de colunas */ var cols:Number = Number(conf.attributes.colunas); /* pega o numero de linhas */ var rows:Number = Number(conf.attributes.linhas); /* pega o espaço entre os quadrinhos */ var espaco:Number = Number(conf.attributes.espaco); /* calcula o total de quadrinhos a serem criados */ var total:Number = cols * rows; // monta o caça-palavras /* pega a primeira palavra */ Como falei anteriormente, ficou bem simples, para que fosse mais fácil o entendimento. Confira um exemplo do jogo funcionando! @braços e fiquem com Deus! Hugo Ferreira da Silva – Administrador do Portal MXSTUDIO Qualquer dúvida, envie um e-mail para hufersil@mxstudio.com.br ou acesse nosso fórum. |
Olá, bom dia.
Costumo usar essa atividade nos meus trabalhos, porém, não sei como ajustar um erro que ocorre no seu processo. Na verdade não é um erro, mas uma brecha. Se a pessoa marcar todos os quadrados o programa considera certo. O que gostaria que fosse implementado é que apenas quando a pessoa marcar as palavras certas possa validar, mesmo ele marcando as certas, se houver outra marcada que não seja das palavras corretas, não validaria.
Olá, gostei muito do seu exemplo… porém não consegui fazer funcionar…
Por favor, poderia me mandar um arquivo .FLA com o exemplo funcionando?
Grato!
Olá, muito legal…
Estou testando aqui e não consigo fazer funcionar, os codigos que vc postou aqui estão corretos, é só copiar e colar mesmo?
Abraço
Poderia enviar o FLA para o preguiça aqui?
por favor e mandar o fla?
não estou entendendo uma coisa, meu jog não está marcando as palavras.
obrigado.
mto bom
Olá, bom dia.
Estou usando o seu projeto e encontrei alguns ajustes a serem feitos, como a correção do para fechar uma tag no XML e acho que as aspas simples e duplas foram modificadas por outros símbolos quando publicou aqui os códigos, então fui alterando manualmente e suprimindo os erros, mas existem dois, sendo o primeiro que corrigi, mas não sei se fiz o certo e o segundo que persiste em dar erro. Seguem:
1º) 83. var d:MovieClip = eval(’itc’+col+’l
Além da correção das aspas, o final não deveria estar fechando tanto a aspa simples quanto o ); ? Fiz esta modificação e passou pelo Flash. Por favor, me corrija se fiz errado.
2º) 107. holder[ this.palavra ]–;
É assim que usarei “holder” e o decremento é com um “-” apenas? Não está passando pelo Flash.
Agradeço muito se me ajudar nas correções. Caso já tenha um FLA corrigido, pode mandar-me por email?
descrição:
Operator ‘-’ must be followed by an operand
Source:
case “vertical_inverso”: rows-–; break;
tentei montar o jogo, mas não deu certo, você poderia mandar o arquivo FLA para o meu email, desde ja muito obrigado
Cara, Num consigo fazer funcionar mais nem a base de reza brava.
Será que num seria pedir muito, se vc me mandasse um .FLA???
Vlw! To no aguardo…