Jogo Interactivo de Matemática (Cálculo de operações)
Transcrição
Jogo Interactivo de Matemática (Cálculo de operações)
Ana Alexandra Nunes da Silva Francisco Josué Mendes Gonçalves Jogo Interactivo de Matemática (Cálculo de operações) Engenharia Informática Setembro 2008 - Jogo Interactivo de Matemática (Cálculo de operações) Relatório da Disciplina de Projecto Engenharia Informática Escola Superior de Tecnologia e de Gestão Ana Silva, Francisco Gonçalves Setembro 2008 - A Escola Superior de Tecnologia e Gestão não se responsabiliza pelas opiniões expressas neste relatório. - iii - Certifico que li este relatório e que, na minha opinião, é adequado no seu conteúdo e forma como demonstrador do trabalho desenvolvido no âmbito da disciplina de Projecto. ___________________________________________ Prof. Luísa Augusta Vara Miranda Orientadora Certifico que li este relatório e que, na minha opinião, é adequado no seu conteúdo e forma como demonstrador do trabalho desenvolvido no âmbito da disciplina de Projecto. ___________________________________________ Prof. Maria João Tinoco Varanda Pereira Co-Orientadora Certifico que li este relatório e que, na minha opinião, é adequado no seu conteúdo e forma como demonstrador do trabalho desenvolvido no âmbito da disciplina de Projecto. ___________________________________________ <Nome do Arguente> Aceite para avaliação da disciplina de Projecto - iv - Arguente Agradecimentos Da mesma forma, a realização deste trabalho não seria possível sem a colaboração de algumas pessoas, às quais nos cabe agradecer: À Prof. Luísa Miranda pelos seus ensinamentos e colaboração, bem como pela paciência que teve connosco. À Prof. Maria João Varanda pelos seus ensinamentos e colaboração. Aos Pais e familiares pela compreensão e dedicação, apesar das muitas horas passadas à frente do computador. Às muitas pessoas que fazem manuais e os distribuem livremente, dando assim possibilidade de outros poderem aprender e evoluir. -v- Conteúdo 1 Introdução ..................................................................................................................... 1 2 Objectivos ...................................................................................................................... 2 3 Conteúdos Utilizados..................................................................................................... 3 4 3.1 Programa do 3.º Ano do 1º Ciclo do Ensino Básico................................................... 3 3.2 Programa do 4.º Ano do 1º Ciclo do Ensino Básico................................................... 4 Software Utilizado ......................................................................................................... 5 4.1 Macromedia Flash Profissional 8 .............................................................................. 5 4.1.1 Ferramentas de desenho ..................................................................................... 6 4.1.2 TimeLine – Linha Temporal............................................................................... 7 4.1.3 Símbolos ............................................................................................................ 8 4.1.4 Acções ............................................................................................................... 8 5 4.2 Piano ........................................................................................................................ 9 4.3 Audacity ..................................................................................................................10 4.4 Adobe Photoshop CS2 .............................................................................................10 Estrutura e Funcionamento do Site .............................................................................12 5.1 Página Principal .......................................................................................................12 5.1.1 Página Principal em HTML ...............................................................................12 5.1.2 Página Principal em Flash .................................................................................12 5.1.2.1 Como foi implementada .................................................................................13 5.2 Jogo das Operações .................................................................................................14 5.2.1 Descrição do Jogo .............................................................................................14 5.2.2 Competências ....................................................................................................16 5.2.3 Como foi implementado ....................................................................................16 5.3 Jogo do Dinheiro .....................................................................................................17 5.3.1 Descrição do Jogo .............................................................................................17 5.3.2 Competências ....................................................................................................18 5.3.3 Como foi implementado ....................................................................................18 5.4 Jogo dos Múltiplos...................................................................................................19 5.4.1 Descrição do Jogo .............................................................................................19 5.4.2 Competências ....................................................................................................21 - vi - 5.4.3 Como foi implementado ....................................................................................21 5.5 Jogo das Fracções ....................................................................................................22 5.5.1 Descrição do Jogo .............................................................................................22 5.5.2 Competências ....................................................................................................23 5.5.3 Como foi implementado ....................................................................................23 5.6 Jogo da Ordenação...................................................................................................24 5.6.1 Descrição do Jogo .............................................................................................24 5.6.2 Competências ....................................................................................................26 5.6.3 Como foi implementado ....................................................................................27 5.7 Jogo das Horas.........................................................................................................27 5.7.1 Descrição do Jogo .............................................................................................27 5.7.2 Competências ....................................................................................................29 5.7.3 Como foi implementado ....................................................................................29 6 Teste ao Software .........................................................................................................31 7 Conclusões ....................................................................................................................32 Bibliografia .........................................................................................................................33 A Código ActionScript .....................................................................................................34 A.1 Jogo das Operações .................................................................................................34 A.1.1 Página Inicial ....................................................................................................34 A.1.1.1 Botão “Menu” ................................................................................................34 A.1.1.2 Botão “Nível 1” .............................................................................................34 A.1.1.3 Botão “Nível 2” .............................................................................................34 A.1.2 Nível 1 ..............................................................................................................35 A.1.2.1 Camada de acções ..........................................................................................35 A.1.2.2 Botão “Operação seguinte” ............................................................................40 A.1.2.3 Botão “Início” ................................................................................................40 A.1.3 Nível 2 ..............................................................................................................41 A.1.3.1 Camada de acções ..........................................................................................41 A.1.3.2 Botão “Limpar”..............................................................................................44 A.1.3.3 Botão “Operação seguinte” ............................................................................45 A.1.3.4 Botão “Início” ................................................................................................45 A.1.3.5 Clipe de filme “pisca1” ..................................................................................46 A.1.3.6 Clipe de filme “pisca2” ..................................................................................46 A.1.3.7 Botão “Verifica se acertaste”..........................................................................47 A.2 Jogo do Dinheiro .....................................................................................................49 A.2.1 Página Inicial ....................................................................................................49 A.2.1.1 Botão “Iniciar” ...............................................................................................49 A.2.1.2 Botão “Menu” ................................................................................................49 A.2.2 Página dos Problemas ........................................................................................50 A.2.2.1 Camada de acções ..........................................................................................50 A.2.2.2 Botão “Início” ................................................................................................54 A.2.2.3 Botão “Corrigir” ............................................................................................54 - vii - A.2.2.4 A.2.2.5 A.2.2.6 A.2.2.7 A.2.2.8 A.2.2.9 A.2.2.10 A.2.2.11 A.2.2.12 A.2.2.13 A.2.2.14 A.2.2.15 A.2.2.16 A.2.2.17 A.2.2.18 A.2.2.19 A.2.2.20 A.2.2.21 Botão “Verifica se acertaste”..........................................................................55 Botão “Problema seguinte” ............................................................................55 Botão “Problema anterior” .............................................................................56 Clipe de filme “Nota de 500 €” ......................................................................56 Clipe de filme “Nota de 200 €” ......................................................................57 Clipe de filme “Nota de 100 €” ......................................................................57 Clipe de filme “Nota de 50 €” .....................................................................58 Clipe de filme “Nota de 20 €” .....................................................................58 Clipe de filme “Nota de 10 €” .....................................................................59 Clipe de filme “Nota de 5 €” .......................................................................59 Clipe de filme “Moeda de 2 €” ....................................................................60 Clipe de filme “Moeda de 1 €” ....................................................................60 Clipe de filme “Moeda de 50 cent.” ............................................................61 Clipe de filme “Moeda de 20 cent.” ............................................................61 Clipe de filme “Moeda de 10 cent.” ............................................................62 Clipe de filme “Moeda de 5 cent.” ..............................................................62 Clipe de filme “Moeda de 2 cent.” ..............................................................63 Clipe de filme “Moeda de 1 cent.” ..............................................................63 A.3 Jogo dos Múltiplos...................................................................................................64 A.3.1 Página Inicial ....................................................................................................64 A.3.1.1 Botão “Iniciar” ...............................................................................................64 A.3.1.2 Botão “Menu” ................................................................................................64 A.3.2 Página das perguntas .........................................................................................64 A.3.2.1 Camada de acções ..........................................................................................64 A.3.2.2 Botão “Início” ................................................................................................67 A.3.2.3 Botão “Verdadeiro”........................................................................................67 A.3.2.4 Botão “Falso” ................................................................................................68 A.3.2.5 Botão “Seguinte” ...........................................................................................69 A.4 Jogo das Fracções ....................................................................................................70 A.4.1 Página Inicial ....................................................................................................70 A.4.1.1 Botão “Menu” ................................................................................................70 A.4.1.2 Botão “Fácil” .................................................................................................70 A.4.1.3 Botão “Médio” ...............................................................................................70 A.4.1.4 Botão “Difícil” ...............................................................................................70 A.4.2 Fácil ..................................................................................................................71 A.4.2.1 Camada de acções ..........................................................................................71 A.4.2.2 Botão “Início” ................................................................................................73 A.4.2.3 Clipe de filme “pisca1” ..................................................................................73 A.4.2.4 Clipe de filme “pisca2” ..................................................................................73 A.4.2.5 Clipe de filme “Corrigir” ................................................................................74 A.4.2.6 Botão “1,2,3,4,5,6,7,8,9,0” .............................................................................74 A.4.2.7 Clipe de filme “” .........................................................................................75 A.4.2.8 Clipe de filme “” ........................................................................................76 A.4.3 Médio................................................................................................................77 A.4.3.1 Camada de acções ..........................................................................................77 A.4.3.2 Botão “Início” ................................................................................................81 A.4.3.3 Clipe de filme “pisca1” ..................................................................................81 A.4.3.4 Clipe de filme “pisca2” ..................................................................................81 A.4.3.5 Clipe de filme “Corrigir” ................................................................................82 - viii - A.4.3.6 Botão “1,2,3,4,5,6,7,8,9,0” .............................................................................82 A.4.3.7 Clipe de filme “” .........................................................................................82 A.4.3.8 Clipe de filme “” ........................................................................................84 A.4.4 Difícil................................................................................................................86 A.4.4.1 Camada de acções ..........................................................................................86 A.4.4.2 Botão “Início” ................................................................................................89 A.4.4.3 Clipe de filme “pisca1” ..................................................................................89 A.4.4.4 Clipe de filme “pisca2” ..................................................................................90 A.4.4.5 Clipe de filme “Corrigir” ................................................................................90 A.4.4.6 Botão “1,2,3,4,5,6,7,8,9,0” .............................................................................90 A.4.4.7 Clipe de filme “” .........................................................................................91 A.4.4.8 Clipe de filme “” ........................................................................................92 A.5 Jogo da Ordenação...................................................................................................94 A.5.1 Página Inicial ....................................................................................................94 A.5.1.1 Botão “Menu” ................................................................................................94 A.5.1.2 Botão da parte 1 “Nível 1” .............................................................................94 A.5.1.3 Botão da parte 1 “Nível 2” .............................................................................94 A.5.1.4 Botão da parte 2 “Nível 1” .............................................................................94 A.5.1.5 Botão da parte 2 “Nível 2” .............................................................................95 A.5.2 Parte 1 Nível 1 ..................................................................................................95 A.5.2.1 Camada de acções ..........................................................................................95 A.5.2.2 Botão “Início” .............................................................................................. 123 A.5.2.3 Botão “Seguinte” ......................................................................................... 123 A.5.3 Parte 1 Nível 2 ................................................................................................ 123 A.5.4 Parte 2 Nível 1 ................................................................................................ 124 A.5.4.1 Camada de acções ........................................................................................ 124 A.5.4.2 Botão “Início” .............................................................................................. 159 A.5.4.3 Botão “Seguinte” ......................................................................................... 159 A.5.5 Parte 2 Nível 2 ................................................................................................ 160 A.6 Jogo das Horas....................................................................................................... 160 A.6.1 Página Inicial .................................................................................................. 160 A.6.1.1 Botão “Menu” .............................................................................................. 160 A.6.1.2 Botão “Nível 1” ........................................................................................... 160 A.6.1.3 Botão “Nível 2” ........................................................................................... 160 A.6.2 Nível 1 ............................................................................................................ 161 A.6.2.1 Camada de acções ........................................................................................ 161 A.6.2.2 Clipe de filme “relógio digital 1” ................................................................. 168 A.6.2.3 Clipe de filme “relógio digital 2” ................................................................. 169 A.6.2.4 Clipe de filme “relógio digital 3” ................................................................. 170 A.6.2.5 Clipe de filme “relógio digital 4” ................................................................. 171 A.6.2.6 Botão “Início” .............................................................................................. 172 A.6.2.7 Botão “Seguinte” ......................................................................................... 172 A.6.3 Nível 2 ............................................................................................................ 172 A.6.3.1 Camada de acções ........................................................................................ 172 A.6.3.2 Caixa de selecção (comboBox) .................................................................... 179 A.6.3.3 Botão “Verifica” .......................................................................................... 179 A.6.3.4 Botão “Início” .............................................................................................. 180 A.6.3.5 Botão “Seguinte” ......................................................................................... 180 - ix - A.7 Página Principal ..................................................................................................... 181 A.7.1 Camada de acções ........................................................................................... 181 A.7.2 Botão “1º e 2º ano”.......................................................................................... 181 A.7.3 Botão “3º e 4º ano”.......................................................................................... 182 A.7.4 Botão “Operações” .......................................................................................... 182 A.7.5 Botão “Dinheiro” ............................................................................................ 183 A.7.6 Botão “Múltiplos” ........................................................................................... 183 A.7.7 Botão “Fracções” ............................................................................................ 184 A.7.8 Botão “Ordenação” ......................................................................................... 184 A.7.9 Botão “Horas” ................................................................................................. 185 A.7.10 Clipe de filme “Com/Sem Som” ................................................................... 185 -x- Lista de Figuras Figura .1 - Macromedia Flash Profissional 8 ......................................................................... 6 Figura .2 - Barra de Ferramentas do Macromedia Flash. ....................................................... 7 Figura .3 - Linha do tempo. .................................................................................................. 7 Figura .4 - Janela de converter símbolos. .............................................................................. 8 Figura .5 - Janela do Piano.................................................................................................... 9 Figura .6 - Janela do Audacity. ............................................................................................10 Figura .7 - Janela do Adobe Photoshop CS2. .......................................................................11 Figura .8 - Fundo do site. .....................................................................................................12 Figura .9 - Ecrã da página inicial do jogo em Flash. .............................................................13 Figura .10 - Ecrã inicial do jogo das Operações. ..................................................................14 Figura .11 - Ecrã do início do jogo com uma resposta certa. ................................................15 Figura .12 - Ecrã do fim do jogo no “Nível 1”. ....................................................................15 Figura .13 - Ecrã do jogo no “Nível 2” com exemplo de uma resposta certa.........................16 Figura .14 - Ecrã inicial do jogo do Dinheiro. ......................................................................17 Figura .15 - Ecrã do jogo á medida que vai sendo jogado. ....................................................18 Figura .16 - Ecrã inicial do jogo dos Múltiplos. ...................................................................20 Figura .17 - Ecrã do jogo á medida que vai sendo jogado. ....................................................20 Figura .18 - Ecrã final do jogo dos Múltiplos. ......................................................................21 Figura .19 - Ecrã inicial do jogo das Fracções. .....................................................................22 Figura .20 - Ecrã do jogo no nível “Fácil” com animação do jogo em si. ..............................23 Figura .21 - Ecrã inicial do jogo da Ordenação. ...................................................................25 Figura .22 - Ecrã do jogo á medida que o utilizador vai jogando. .........................................25 Figura .23 - Ecrã final do jogo no “Nível 1” da “Parte 1”. ....................................................26 Figura .24 - Ecrã do jogo na “Parte 2” no “Nível 2” mostrando o processo do jogo. .............26 Figura .25 - Ecrã inicial do jogo das Horas. .........................................................................28 Figura .26 - Ecrã do jogo no “Nível 1” mostrando como acertou..........................................28 Figura .27 - Ecrã do jogo no “Nível 2”.................................................................................29 - xi - CAPÍTULO 1. Introdução Capítulo 1 1 Introdução O projecto teve como objectivo construir um jogo/site interactivo, inteligente e evolutivo dedicado ao ensino e aprendizagem da matemática para alunos do 3º e 4º ano do 1º Ciclo do Ensino Básico, com especial destaque para conteúdos relacionados com números e operações. A aplicação deve evoluir dinamicamente e com complexidade crescente, face aos conhecimentos demonstrados pelos utilizadores e disponibilizar formas de avaliação de conhecimentos. No desenvolvimento de software educativo a interface gráfica, a forma como os conteúdos são expostos e o grau de interactividade são factores críticos de sucesso para o desenvolvimento cognitivo de um público-alvo. A aplicação será então orientada para utilizadores com características próprias, crianças, muito dependentes do ambiente e dos recursos que têm à sua disposição e muito exigentes em termos de experimentação e manipulação dos meios que utilizam. Assim sendo, este tipo de projecto não constitui apenas um desafio tecnológico, mas também um projecto com preocupações pedagógicas. As grandes finalidades do ensino da Matemática no Ensino Básico que devem estar sempre presentes ao longo dos quatros anos do 1º ciclo são desenvolver a capacidade de raciocínio, de comunicação e de resolução de problemas, neste projecto teve-se estes critérios em conta durante a sua implementação. A resolução de problemas coloca os alunos numa atitude activa de aprendizagem quer dandolhes a possibilidade de descoberta de novos conceitos, quer à construção de possíveis respostas aos problemas levantados. As crianças interessam-se por jogos com problemas práticos que se relacionam com a sua vida na escola, com o seu universo familiar ou com a comunidade. Estes problemas ajudam as crianças a raciocinar e a tornar mais fácil a interacção com os mesmos. Em relação ao desenvolvimento do projecto, começou-se por recolher bibliografia sobre as características específicas de software educativo, realizar a modelação do sistema, aprender a trabalhar com o software Macromedia Flash fazendo vários exercícios para a criação, manipulação e movimentação de objectos de forma a se estar preparado para poder implementar os jogos com qualidade. Por último, realizaram-se testes para validar o sistema relativamente à forma como funciona, aos desenhos, cores e sons usados. 1 CAPÍTULO 2. Objectivos Capítulo 2 2 Objectivos O objectivo deste projecto é construir um jogo/site interactivo, inteligente e evolutivo desenvolvido em linguagem Flash. Os jogos devem ser dedicados ao ensino de aprendizagem da matemática para os alunos do 3º e 4º ano do 1º Ciclo do Ensino Básico mas de forma engraçada e mais compreensiva para as crianças. A aplicação deve evoluir dinamicamente e com complexidade crescente, face aos conhecimentos demonstrados pelos utilizadores e disponibilizar formas de avaliação de conhecimentos. O jogo deverá focalizar-se em situações problemáticas que envolvam os alunos em estratégias de exploração e descoberta. Só há aprendizagem quando as crianças reagem dinamicamente a uma questão que levante o seu interesse e responda à sua curiosidade, teve-se isso em conta, tendo como objectivo no desenvolvimento dos jogos, manifestar a curiosidade para resolução de problemas simples e práticos do dia-a-dia. Com os jogos tenta-se favorecer as crianças no desenvolvimento da memória, na agilidade de raciocínio, no gosto pelo desafio e na capacidade de aceitar e seguir uma regra. Como o cálculo mental tem muita importância no 1º Ciclo teve-se esse objectivo em conta ao longo do projecto levando as crianças a utilizá-lo na maioria dos jogos. Como objectivos pedagógicos para o jogo/site interactivo também se teve em conta: Estudar as relações entre números e operadores matemáticos (somas, diferenças, subtracções e produtos). Aprofundar os conhecimentos e capacidade de lidar com problemas do dia-a-dia que englobam dinheiro, compras e vendas. Desenvolver a capacidade de ordenar números por ordem crescente e decrescente. Reconhecer a equivalência entre partes de uma unidade de um objecto e o quociente de dois números (fracções). Identificar e consultar as horas. 2 CAPÍTULO 3. Conteúdos Utilizados Capítulo 3 3 Conteúdos Utilizados Para a realização deste projecto teve-se em consideração o programa e as competências do 1º Ciclo do Ensino Básico relativamente ao 3º e 4º ano da área curricular de Matemática, para os números e operações. De seguida serão apresentados os programas e competências específicas. 3.1 Programa do 3.º Ano do 1º Ciclo do Ensino Básico Ler e escrever os números ordinais até 30.º. Ordenar números inteiros em sequências crescentes e decrescentes. Ler e escrever números. Utilizar a numeração romana para representar números (até MM). Explorar situações que levem à descoberta de números decimais. Ler e escrever números decimais (com um máximo de 2 algarismos à direita da vírgula). Numa recta graduada, dado o número correspondente a um ponto, atribuir o número correspondente a outros pontos. Estabelecer relações de ordem entre números e utilizar a simbologia >, <, =. Relacionar dezena, centena, milhar, décima e centésima com a unidade e entre si. Explorar e usar regularidades e padrões na adição, subtracção e multiplicação. Decompor os números em somas, diferenças e produtos. Fazer a composição de dois operadores numéricos. Estimar ordens de grandeza de um resultado antes de efectuar o cálculo. Procurar estratégias diferentes para efectuar um cálculo (utilizando, espontaneamente, as propriedades das operações). Explicitar oralmente e representar por escrito os passos seguidos ao efectuar cálculos. Construir e memorizar as tabuadas da multiplicação por 6, 7, 8 e 9. Reconhecer o múltiplo de um número natural. Utilizar subtracções sucessivas para a repartição de quantidades. Descobrir a existência de resto em certas repartições. Explorar situações que envolvam a divisão (subtracções sucessivas, adições e produtos). 3 CAPÍTULO 3. Conteúdos Utilizados Utilizar o sinal “:” na representação de quocientes (representação horizontal a: b). Utilizar a notação 1/3 ×, 1/5 × e 1/10 × para representar o inverso de 3 ×, 5 ×, 10 ×. Reconhecer a equivalência entre: : 2 e 1/2 ×; : 3 e 1/3 ×; : 4 e 1/4 ×; : 5 e 1/5 ×. Explorar situações que levem a reconhecer que a operação inversa da multiplicação é a divisão. Reconhecer a equivalência entre 1/10 ×, 0,1 × e : 10. Descobrir a regra para calcular o produto de um número por 0,1. Descobrir a regra para calcular o produto de um número por 100 e por 1000. 3.2 Programa do 4.º Ano do 1º Ciclo do Ensino Básico Ler e escrever os números ordinais até ao 50.º. Ler e escrever os números ordinais 100.º e 1000.º. Identificar ordens e classes da milésima ao milhão. Ler e escrever números. Ordenar números em sequências crescentes e decrescentes. Estabelecer relações de ordem entre números e utilizar a simbologia <, >, =. Representar números decimais numa recta graduada (até à décima). Numa recta graduada, dado o número correspondente a um ponto, atribuir o número correspondente a outro ponto. Fazer a composição de operadores numéricos. Utilizar tabelas de duas entradas da multiplicação para a divisão. Estimar a ordem de grandeza de um resultado antes de efectuar o cálculo. Procurar estratégias diferentes para efectuar um cálculo. Explicitar oralmente e representar por escrito os passos seguidos ao efectuar cálculos. Reconhecer múltiplos de um número natural. Reconhecer a equivalência entre: × 0,01 e : 100 × 0,001 e : 1000 Descobrir a regra para calcular o quociente de um número por 100 e 1000. Descobrir a regra para calcular o produto de um número por 0,01 e 0,001. Reconhecer a equivalência entre: : 0,1 e ×10 : 0,01 e ×100 : 0,001 e ×1000 4 CAPÍTULO 4. Software Utilizado Capítulo 4 4 Software Utilizado Neste capítulo são abordadas as tecnologias que foram necessárias ao desenvolvimento do projecto. 4.1 Macromedia Flash Profissional 8 O Macromedia Flash desenvolvido em 1996 pelo Shockware Flash é uma ferramenta de edição de imagens vectoriais com animação, som e interactividade. Depois de trabalhado o Flash expandiu para além de simples animações, também para uma ferramenta de desenvolvimento de aplicações completas. Isso graças aos avanços na linguagem ActionScript, que é a linguagem de programação utilizada em aplicações de arquivos flashes que são gerados em extensão “.swf” (de Shockware Flash File). É a tecnologia mais utilizada no Web que permite a criação de animações vectoriais e o uso de gráficos vectoriais permite demorar pouco tempo para serem carregados. Os gráficos vectoriais, nos quais uma imagem é representada a partir de linhas ou vectores que possuem determinadas propriedades. A qualidade deste tipo de gráficos não depende do zoom ou do tipo de resolução com o qual se olha para o gráfico. Uma vantagem do desenho vectorial é que o tamanho do ficheiro não depende do tamanho dos objectos e uma desvantagem é que não permite representar imagens fotográficas. O Macromedia Flash passou a designar-se Adobe Flash a partir de 2005 e suporta vídeo, som, imagem e animação vectorial. O editor é composto por: Timeline – Linha temporal onde decorre a acção, é dividida em quadros (frames) e em camadas (layers). Tools – Ferramentas de desenho, visualização, cor e opções. Bibliotecas – Objectos do flash (Simbols, clips). Properties – Painel de alteração das propriedades. Color Mixer – Alteração da cor. Actions (ActionScript), components (Componentes), Behavior (ActionScript). 5 CAPÍTULO 4. Software Utilizado Figura .1 - Macromedia Flash Profissional 8 No Flash é possível dividir os filmes em cenas, em que cada cena pode conter os seus próprios objectos ou personagens, e automaticamente são colocados em ordem, podendo também ser chamadas através de botões ou através de acções colocadas directamente nas frames (quadros). O Flash também possui vários tipos de animação, sendo elas: quadro a quadro, interpolação de movimento e de forma. A animação quadro a quadro consiste em alterar os objectos (actores) no palco usando a linha temporal. A animação interpolação de movimento permite criar animações através da interpolação dos quadros chave (KeyFrames) ao contrário da animação quadro a quadro não é necessário desenhar todas as frames da animação. Na animação de forma as camadas (Layers) tem um papel fundamental para organizar os objectos e para a sobreposição e usa-se um percurso desenhado na camada guia para fazer deslocar um determinado objecto. 4.1.1 Ferramentas de desenho A área de ferramentas é composta por botões de desenho e manipulação dos desenhos feitos na área de desenho do Flash. Quando se posiciona a ponta do rato sobre uma ferramenta ela mostra o nome da ferramenta e uma letra entre parênteses, ao pressionar a tecla corresponde à letra ela será marcada como activa automaticamente. A área de visualização permite modificar a forma de visualizar a área de desenho do flash permitindo mover o desenho ou ampliá-lo com a lupa. Na área de cores podemos definir cores de linhas e cores de preenchimento dos desenhos feitos no Flash. Estas ferramentas de desenho foram utilizadas para desenhar personagens, objectos, criação de botões entre outras coisas. De seguida apresentamos cada ferramenta com a explicação da sua utilidade. 6 CAPÍTULO 4. Software Utilizado Figura .2 - Barra de Ferramentas do Macromedia Flash. 4.1.2 TimeLine – Linha Temporal A Linha do tempo é utilizada na criação de animações. Através dela podemos definir qual será a mudança e/ou caminho a ser especificado pelo objecto do filme. Podemos também através da linha do tempo utilizar camadas para melhor agrupamento e movimento dos objectos. Figura .3 - Linha do tempo. 7 CAPÍTULO 4. Software Utilizado 4.1.3 Símbolos Para podermos trabalhar melhor com animações no flash o melhor é converter os objectos em símbolos (Figura .4). Quando criado um símbolo ele vai automaticamente para a biblioteca dos símbolos. Os símbolos podem ser de três tipos gráficos (Graphic), botões (Button) e clipes de filme (Movie Clip). O tipo de símbolo Gráfico (Graphic) é o símbolo mais básico, pois ele é praticamente estático e é muito utilizado também dentro de outros símbolos. O tipo de símbolo Botão (Button) é utilizado para chamar acções e pode receber valores diferentes para estado do botão, normal, ao rolar sobre, pressionado e oculto. Por fim, o tipo de símbolo Clipe de Filme (Movie Clip) permite que se crie um filme dentro do símbolo com a vantagem de que ele carrega todo o clipe de filme primeiro e mostra o mesmo no filme todo de uma vez. Figura .4 - Janela de converter símbolos. Os Botões (Buttons) são elementos que respondem a eventos do rato, exemplo cliques simples ou a simples passagem do ponteiro sobre o botão, disparando acções dentro do filme. Eles têm uma linha do tempo própria com quatro tipos de frames que estão identificados como Up, Over, Down e Hit. O Up representa o botão no seu estado natural, sem nenhuma modificação. O Over representa o botão quando o rato é colocado sobre ele. O Down representa a forma que o botão assume quando seleccionado com o rato e o Hit é quando o conteúdo dessa área fica invisível. Os Clipes de Filmes (Movie Clips) são pequenos intervalos de animação que trabalham independentes da linha do tempo do filme principal. Eles podem ter sons, controlos interactivos e instâncias de outros Clipes de Filmes. Os mesmos podem ser controlados por botões, por acções de quadros, ou por outros Clipes de Filmes e tem a capacidade de ser usados em botões, na sua criação. Uma das grandes vantagens dos Clipes de Filmes é que se pode editá-los separadamente do filme principal, facilitando a organização da animação, além de que o Clipe de Filme é carregado por completo no filme. 4.1.4 Acções As acções são scripts utilizados pelo Flash para dar mais interactividade aos filmes e um melhor controlo sobre os mesmos, a linguagem de scripts do Flash é conhecida por 8 CAPÍTULO 4. Software Utilizado ActionScript, ou seja, uma linguagem orientada a objectos como o caso do Java Script. Isso significa que as acções controlam objectos quando ocorre um determinado evento. Com o ActionScript podemos configurar o filme para os eventos que queremos, como cliques em botões e uso de teclas, activando os scripts para informar ao filme a acção a ser executada. O painel de acções pode ser usado para auxílio na criação de scripts simples e permite criar e editar acções para um objecto ou frame. No ActionScript, os objectos podem conter dados ou podem ser representados graficamente no palco como Clipes de Filme. As classes predefinidas do ActionScript são chamadas de objectos, em que cada objecto permite acesso a determinados tipos de informação. Os Clipes de Filmes são os objectos mais importantes de um filme do Flash, pois têm linhas de tempo que são executadas independentemente umas das outras. As principais acções são: Stop () – Pára a execução do filme Play () – Reproduz o filme a partir da posição actual gotoAndPlay () – Salta para determinada frame e continua a reprodução gotoAndStop () – Salta para determinada frame e pára nextFrame() – Passa para a frame a seguir prevFrame () – Salta para a frame anterior stopAllSounds () – Pára todos os sons 4.2 Piano Este programa contém um teclado virtual que permite tocar piano, órgão e outros instrumentos à escolha do utilizador, no computador podendo-se utilizar o teclado do computador para tocar. Figura .5 - Janela do Piano. Esta aplicação serviu para criar os sons que foram inseridos nos jogos. 9 CAPÍTULO 4. Software Utilizado 4.3 Audacity O Audacity serve para gravar, editar e reproduzir sons. Usa-se para editar sons, cortar, copiar e colar fragmentos de som, com a possibilidade de retroceder para qualquer ponto anterior. Figura .6 - Janela do Audacity. Esta aplicação serviu para gravar e editar os sons criados com o programa anterior (piano), para serem inseridos nos jogos. Esta gravação foi feita fazendo uma ligação com um cabo da saída dos auscultadores à entrada do microfone do computador, o resto do processo de gravação é feita neste programa. 4.4 Adobe Photoshop CS2 O Adobe Photoshop CS2 é um aplicativo para a edição profissional de imagens bidimensionais. 10 CAPÍTULO 4. Software Utilizado Figura .7 - Janela do Adobe Photoshop CS2. Esta aplicação serviu para editar todas as imagens inseridas nos jogos do projecto. 11 CAPÍTULO 5. Estrutura e Funcionamento do Site Capítulo 5 5 Estrutura e Funcionamento do Site 5.1 Página Principal 5.1.1 Página Principal em HTML Começou-se por criar a página base em HTML com o nome index.html, a qual vai suportar o resto da aplicação em Flash. Esta página serve de fundo para o site, sendo esse fundo alusivo ao formato das paredes da Escola Superior de Tecnologia e de Gestão de Bragança (Figura .8). Figura .8 - Fundo do site. 5.1.2 Página Principal em Flash De seguida, criou-se a página inicial em Flash que tem como funcionalidade fazer a ligação para os jogos criados (Figura .9). 12 CAPÍTULO 5. Estrutura e Funcionamento do Site Esta página é constituída por uma animação no canto superior esquerdo, pelo texto “Matemática Divertida” que contém uma animação a sua volta, pela mensagem de boas vindas “Olá Bem vindo, vem aprender com a Matemática divertida.”, por um desenho que contém uma paisagem e duas animações (a animação do peixe a nadar pelo lago e a animação das personagens), por uma botão para ligar e desligar a música de fundo e por sete botões que quando se passa o rato por cima mostra-se a imagem do jogo correspondente e quando se selecciona é iniciado o jogo. Figura .9 - Ecrã da página inicial do jogo em Flash. 5.1.2.1 Como foi implementada A página inicial ou a página de apresentação dos jogos contém algumas animações que são clipes de filme com interpolações de movimento tais como o peixe que está dentro do lago, bem como essa mesma paisagem, a animação que está no canto superior esquerdo, a animação que contém uma bola a rodar, um círculo oval, a animação que contém o texto “Matemática Divertida” com uma interpolação de cores, a apresentação das personagens e um botão para ligar e desligar a música de fundo. O código ActionScript destas animações passa basicamente por utilizar as funções gotoAndPlay() e stop() e por manipular a música de fundo quando seleccionado o botão do som utilizando o evento OnRelease e dentro deste as funções get/setVolume() (Apêndice A.7.9 Clipe de filme “Com/Sem Som”). Esta página contém um botão para ligação com a página inicial de um projecto de jogos de matemática do primeiro e segundo ano do primeiro ciclo do Ensino Básico, já feito no ano lectivo anterior pelo aluno Nuno Afonso e um outro botão que quando pressionado apresenta seis botões que fazem a ligação com os jogos deste projecto. Existe um outro clipe de filme que contém as imagens de todos os jogos e da página principal do outro projecto, que foi utilizado para o utilizador visualizar a imagem do jogo correspondente ao botão com o nome desse mesmo jogo. Essa visualização é reproduzida quando o utilizador coloca o ponteiro do rato em cima do botão do respectivo jogo fazendo desvanecer a paisagem que está no centro da página e fazendo aparecer a imagem do jogo através da propriedade _alpha, isto é feito dentro do evento OnRollOver, o contrário também 13 CAPÍTULO 5. Estrutura e Funcionamento do Site acontece quando o utilizador afasta o ponteiro do rato, do botão, utilizando também a propriedade _alpha dentro do evento OnRollOut. Cada jogo é carregado quando o botão que contém o nome do respectivo jogo é pressionado, isto é feito através da função loadMovie() que tem como um dos parâmetros o nome do ficheiro do jogo a carregar, sendo esta função, invocada dentro do evento OnRelease de cada botão. 5.2 Jogo das Operações 5.2.1 Descrição do Jogo Inicialmente, aparece a página inicial do jogo (Figura .10) onde estão contidos três botões, o botão “Nível 1”, o botão “Nível 2” e o botão “Menu”, onde o utilizador poderá optar por um dos níveis ou regressar ao menu principal. No nível um, a dificuldade das expressões será menor devido à necessidade de um único operador para completar. Quanto ao nível dois, as expressões podem-se tornar mais difíceis necessitando de completar dois operadores e não um como no nível um, o que poderá tornar mais difícil chegar ao resultado pretendido. Figura .10 - Ecrã inicial do jogo das Operações. Depois de pressionado o botão “Nível 1”, aparecerá a página principal do jogo (Figura .11) com expressões incompletas onde o utilizador deverá escolher um operador de maneira a acertar no resultado pretendido. As expressões foram guardadas num conjunto (array) e são recuperadas aleatoriamente. Após escolhido o operador, aparecerá uma mensagem de texto a indicar se a resposta está certa ou errada. 14 CAPÍTULO 5. Estrutura e Funcionamento do Site Figura .11 - Ecrã do início do jogo com uma resposta certa. Caso o utilizador acerte, a maça é comida pela minhoca e deve pressionar o botão “Operação seguinte” para passar para a próxima expressão, mas se a resposta estiver errada aparecerá uma mensagem de texto a indicar que está errada com o resultado errado e só avança quando o utilizador acertar. O jogo repete-se sempre de igual modo até a maça estar comida e aparecer mensagem de texto a indicar que o jogo acabou (Figura .12). Figura .12 - Ecrã do fim do jogo no “Nível 1”. Se pressionado o botão “Nível 2”, aparece a página principal do jogo (Figura .13) onde o utilizador deverá preencher os dois operadores seleccionando-os na minhoca de maneira a acertar no resultado pretendido. Para verificar a veracidade da resposta o utilizador pressionará o botão “Verifica se acertaste” e de igual modo aparecerá uma caixa de texto a indicar se a resposta está certa ou errada. Quanto ao resto do processo de jogo e de apresentação será da mesma forma que no nível um. 15 CAPÍTULO 5. Estrutura e Funcionamento do Site Figura .13 - Ecrã do jogo no “Nível 2” com exemplo de uma resposta certa. 5.2.2 Competências Este jogo tem como objectivo desenvolver o raciocínio do utilizador a partir da utilização das operações: adição, subtracção, multiplicação e divisão. O facto de poder trabalhar em simultâneo com mais do que uma operação proporciona-lhes condições para o desenvolvimento de competências cognitivas. 5.2.3 Como foi implementado Houve a preocupação de trabalhar e enriquecer a parte gráfica em termos de desenhos e de animações. Foram criadas várias caixas de texto para receberem os parâmetros das expressões (operandos, operadores e resultado) e o resultado do jogo. Foi criada uma página inicial num ficheiro à parte que contém uma animação criada no espaço de tempo através da interpolação de movimento e contém dois botões para abrir o ficheiro correspondente ao nível que se quer jogar. Estes botões contêm um evento OnRelease que chama uma função loadMovie(), que recebe como parâmetro o nome com o caminho do ficheiro a carregar e o local onde vai ser carregado (Apêndice A.1.1 Página Inicial). De seguida, tanto no nível um como no nível dois, desenhou-se uma minhoca em que a sua estrutura é composta por quatro botões que permitem escolher o operador a introduzir na expressão existente na caixa de texto correspondente. Esta caixa de texto encontra-se juntamente com um clipe de filme composto por um rectângulo que alterna entre a cor verde e branca aquando o aparecimento de cada expressão para que o utilizador escolha um operador. O código ActionScript deste jogo baseia-se na criação de um array de expressões do tipo string, em que cada expressão é gerada aleatoriamente através da função random(), aquando o início do jogo e quando o utilizador passa para a expressão seguinte. Quando é gerada uma 16 CAPÍTULO 5. Estrutura e Funcionamento do Site nova expressão do array, cada elemento dessa expressão é separado através da função split() para ser inserido na caixa de texto correspondente da expressão. No primeiro nível a validação do operador é feita quando este é escolhido, através do código implementado no evento OnRelease de cada botão da minhoca (Apêndice A.1.2.1 Camada de acções). No segundo nível existe um evento OnRelease em cada clipe de filme do rectângulo correspondente à caixa de texto dos operadores para por o clipe de filme a alternar entre cores tal como no nível um, e onde vai ser usada uma variável para saber qual o clipe de filme que foi seleccionado para assim, quando for seleccionado o operador, a caixa de texto correspondente a esse clipe de filme tomar o valor do operador escolhido (Apêndices A.1.3.5 e A.1.3.6 Clipes de filme “pisca1” e “pisca2”). Neste nível a validação é feita no botão “Verifica se acertaste” dentro do evento OnRelease devido ao facto de termos mais do que um operador para completar (Apêndice A.1.3.7 Botão “Verifica se acertaste”). 5.3 Jogo do Dinheiro 5.3.1 Descrição do Jogo Quando o utilizador escolhe o jogo do Dinheiro aparece a página inicial que contém o botão “Iniciar”, o botão “Menu” e a explicação de como se joga (Figura .14). Figura .14 - Ecrã inicial do jogo do Dinheiro. Depois de, o utilizador pressionar o botão “Iniciar”, aparecerá a página principal do jogo que contém problemas. O jogo consiste em responder às perguntas utilizando o dinheiro apresentado e colocando-o na máquina registadora. Neste jogo o grau de dificuldade dos problemas vai aumentando, sendo necessário, em alguns casos, pegar num papel e lápis para os resolver. 17 CAPÍTULO 5. Estrutura e Funcionamento do Site O utilizador terá que seleccionar o dinheiro que pretende e arrastá-lo até a máquina registadora. Depois de arrastado o dinheiro o utilizador deverá pressionar o botão “Verifica se acertaste” e então, aparecerá no Troca Tintas a mensagem se acertou ou não (Figura .15). Figura .15 - Ecrã do jogo á medida que vai sendo jogado. Caso não acerte, ou melhor caso o utilizador arraste dinheiro a menos para a máquina registadora aparecerá a mensagem a avisar “O dinheiro que deste não chega, tens que dar mais dinheiro.”. Se arrastar dinheiro a mais aparecerá a mensagem “Não temos trocos clica em corrigir e tenta outra vez.”. Nos casos em que o utilizador insere dinheiro a menos ou a mais pode sempre pressionar o botão “Corrigir” e voltar a resolver o problema. Durante o jogo o utilizador pode querer mudar de problema ou voltar a página principal do jogo tendo três botões, o botão “Problema anterior”, o botão “Problema seguinte” e o botão “Início” que permite a qualquer altura do jogo voltar à página inicial do jogo. 5.3.2 Competências Este jogo desenvolve competências relacionadas com a prática de resolução de problemas juntamente com interacção com dinheiro, permitindo assim ao utilizador usar as notas e moedas com mais naturalidade. 5.3.3 Como foi implementado Tal como no jogo anterior e nos seguintes, neste jogo foi criada uma página inicial que contém um botão para iniciar o jogo usando o evento OnRelease e dentro deste a função loadMovie() (Apêndice A.2.1.1 Botão “Iniciar”). Na página do jogo, para além da criação de todo o aspecto gráfico foram criados vários clipes de filmes que contêm as notas e moedas do jogo, um clipe de filme que contém uma caixa registadora e vários clipes de filme que contêm as perguntas do jogo. 18 CAPÍTULO 5. Estrutura e Funcionamento do Site Neste jogo foi criado um array de clipes de filme para que cada pergunta do jogo seja associada a um índice deste array e foi criado outro array para guardar os valores correctos das perguntas para efeito de validação. Para os clipes de filme das notas e moedas serem arrastados é utilizada a função startDrag() no evento OnPress de cada clipe de filme e para deixar de arrastar é utilizada a função stopDrag() no evento OnRelease de cada clipe de filme. Para detectar a colisão entre o clipe de filme do dinheiro (nota ou moeda) e o clipe de filme da caixa registadora é utilizada a função hitTest() que retorna true or false caso exista ou não, entre os objectos. Esta função é chamada periodicamente durante a execução do jogo através da função setInterval() (Apêndice A.2.2.1 Camada de acções). Cada clipe de filme do dinheiro tem uma animação de desaparecer quando existe a colisão com a caixa registadora ao mesmo tempo que é largado o botão do rato voltando ao local inicial, isto acontece porque no decorrer desta animação são guardadas as coordenadas X e Y iniciais do clipe de filme, isto também acontece quando, ao largar o botão do rato, não existe colisão entre o dinheiro e a caixa registadora. A passagem das perguntas é feita através das acções do botão “Problema seguinte” (Apêndice A.2.2.5 Botão “Problema seguinte”) e do botão “Problema anterior” (Apêndice A.2.2.6 Botão “Problema anterior”) dentro do evento OnRelease onde é incrementado o índice da pergunta escondendo a anterior e mostrando a seguinte através da propriedade _visible. Foram criadas duas caixas de texto dinâmicas, uma para ver o valor do dinheiro arrastado para a caixa registadora e outra para aparecer o resultado quando é seleccionado o botão “Verifica se acertaste”. Este botão faz a validação da igualdade do valor somado do dinheiro arrastado para a caixa registadora com o valor do array de valores correspondente ao índice da pergunta em questão, mostrando assim o resultado (Apêndice A.2.2.4 Botão “Verifica se acertaste”). Existe também um botão “Corrigir” para o caso de o utilizador querer corrigir o valor do dinheiro arrastado, nesse caso o valor é inicializado a zero (Apêndice A.2.2.3 Botão “Corrigir”). 5.4 Jogo dos Múltiplos 5.4.1 Descrição do Jogo Ao escolher este jogo, inicialmente aparece a página inicial (Figura .16) que contém uma explicação relativa ao jogo, ou seja, poderá ser uma mini história em que o Riscas apanhou um peixe no rio e precisa de ajuda para mudar o peixe do saco onde o trouxe, para o aquário. 19 CAPÍTULO 5. Estrutura e Funcionamento do Site Figura .16 - Ecrã inicial do jogo dos Múltiplos. A página inicial deste jogo também contém um botão “Iniciar” que depois de pressionado fará aparecer a página principal do jogo e um botão “Menu” que quando pressionado volta para o menu principal. Neste jogo o utilizador terá que escolher a veracidade das expressões pressionando um dos dois botões “Verdadeiro” ou “Falso”. Consoante o utilizador vai acertando ou não, aparecerá o Riscas a dizer, e á medida que vai acertando vai conseguindo passar a água do saco para o aquário (Figura .17). Para passar para a próxima expressão o utilizador deve pressionar o botão “Seguinte” e para voltar à página inicial a qualquer altura do jogo deve pressionar o botão “Início”. Figura .17 - Ecrã do jogo á medida que vai sendo jogado. Quando o utilizador acerta em todas as expressões o peixe salta para o aquário, terminando o jogo com a animação e com uma mensagem de felicitação (Figura .18). 20 CAPÍTULO 5. Estrutura e Funcionamento do Site Figura .18 - Ecrã final do jogo dos Múltiplos. 5.4.2 Competências Com o jogo dos Múltiplos pretende-se, de um modo particular, desenvolver competências relacionadas com o reconhecimento de múltiplos de um número natural. 5.4.3 Como foi implementado Neste jogo existe também uma página inicial que chama a página de resolução do jogo tal como nos jogos anteriores e segue o mesmo objectivo. Este jogo contém um clipe de filme com a animação entre o peixe, o aquário e o saco, dois botões (“Verdadeiro” e ”Falso”) que validam o valor lógico da expressão mediante a escolha do utilizador, um botão para passar para a expressão seguinte quando o utilizador acerta, uma caixa de texto dinâmica para o resultado e clipes de filmes para as expressões. Quanto às acções e ao código ActionScript, este jogo contém um array de clipes de filme das expressões e um array de valores booleanos correctos correspondentes às expressões. Os clipes de filmes das expressões são gerados aleatoriamente (Apêndice A.3.2.1 Camada de acções). A escolha do botão de verdadeiro ou falso é validada através do evento OnRelease do mesmo (Apêndices A.3.2.3 Botão “Verdadeiro” e A.3.2.4 Botão “Falso”). O código ActionScript do botão “Seguinte” deste jogo, permite gerar outra expressão aleatoriamente, mostrando-a e escondendo a anterior, através da propriedade _visible e permite incrementar a animação que contém o peixe, o saco e o aquário (Apêndice A.3.2.5 Botão “Seguinte”). 21 CAPÍTULO 5. Estrutura e Funcionamento do Site 5.5 Jogo das Fracções 5.5.1 Descrição do Jogo Quando o utilizador escolhe o jogo das Fracções aparece a página inicial (Figura .19) que contém três botões referentes a diversos níveis de dificuldade (Fácil, Médio e Difícil) e um botão “Menu” que permite voltar para o menu principal. Figura .19 - Ecrã inicial do jogo das Fracções. O nível “Fácil” contém uma pizza dividida em oito fatias onde o utilizador terá que seleccionar primeiro os quadrados e escolher os números que acha que são correctos no telemóvel. De seguida, no telemóvel aparecerá a piscar a tecla “” que serve de botão de verificação e que, depois de pressionado faz aparecer no visor do telemóvel uma mensagem de texto a dizer se acertou ou não. Caso acerte aparecerá uma animação do Troca Tintas a comer uma fatia de pizza, depois começa a piscar a tecla “” que serve para passar para a fracção seguinte, como mostra na figura seguinte: 22 CAPÍTULO 5. Estrutura e Funcionamento do Site Figura .20 - Ecrã do jogo no nível “Fácil” com animação do jogo em si. Se o utilizador não acertar na fracção, aparecerá no visor do telemóvel uma mensagem de erro e o respectivo resultado, o qual pode ser corrigido ao pressionar o botão “Corrigir” que aparece a piscar. No nível “Médio” poderá aparecer uma pizza dividida em quatro, seis ou oito fatias onde o utilizador terá o mesmo sistema para identificação das fracções. Neste nível, o grau de dificuldade do jogo aumenta uma vez que muda tanto o número de fatias que sobram como o número de fatias da pizza. Por fim, no nível “Difícil” já não aparecerá só uma pizza mas duas, o que tornará o jogo mais difícil uma vez que o utilizador terá que somar as fatias que sobram das duas pizzas. O resto do processo do jogo é igual aos outros níveis. Cada uma das actividades do jogo termina com uma mensagem de felicitação no visor do telemóvel. Em todos os níveis o utilizador pode voltar para a página inicial do jogo pressionando o botão “Início”. 5.5.2 Competências Este jogo tem como objectivo desenvolver tarefas associadas a fracções correspondentes a quantidades, nomeadamente relacionar as partes com o todo e identificar porções que são traduzidas por fracções equivalentes. 5.5.3 Como foi implementado Este jogo para além da página inicial que segue a mesma metodologia dos outros jogos foi implementado com três níveis de dificuldade: nível Fácil, nível Médio e nível Difícil. Contém vários clipes de filme com animações e outros que se baseiam mais em acções contendo também animações. 23 CAPÍTULO 5. Estrutura e Funcionamento do Site Neste jogo existe uma metodologia semelhante ao jogo das Operações, pois usam-se dois clipes de filme com um rectângulo que alterna entre cores para o utilizador inserir um número na caixa de texto dinâmica que lhe está sobreposta. Todos os botões do telemóvel contêm o código dentro do evento OnRelease, que permite adicionar o número correspondente ao botão seleccionado, na caixa de texto correspondente ao rectângulo seleccionado anteriormente. No clipe de filme do botão de verificação do telemóvel é feita a validação dos dois números inseridos dentro do evento OnRelease, fazendo a divisão dos mesmos e comparando-a com o valor da variável que contém o valor correcto do número de fatias que sobram aparecendo o resultado numa caixa de texto dinâmica no visor do telemóvel. Se o utilizador errar aparece o resultado errado na caixa de texto anterior e aparece o botão “Corrigir” que basicamente inicializa as caixas de texto dos valores inseridos a zero. Se o utilizador acertar além da mensagem que aparece de felicitação no visor do telemóvel, o clipe de filme do botão de passar à pergunta seguinte fica activo permitindo através do evento OnRelease passar para a pergunta seguinte. Neste jogo as perguntas são as frames do clipe de filme da pizza que contêm as fatias que sobram bem como o valor que lhes corresponde atribuído a uma variável, isto no nível fácil e no nível difícil, no nível médio os valores estão guardados num array. O número da frame é gerado aleatoriamente através da função random(), no início do jogo e ao passar para a pergunta seguinte utilizando o número gerado para carregar a frame correspondente a esse número através da função gotoAndStop()(Apêndice A.4 Jogo das Fracções). 5.6 Jogo da Ordenação 5.6.1 Descrição do Jogo Quando o utilizador escolhe o jogo da Ordenação aparece a página inicial (Figura .21) que contém um botão “Menu” que serve para voltar para o menu principal e duas partes “Parte 1” e “Parte 2”, em que cada uma tem dois níveis “Nível 1” e “Nível 2” referentes a uma dificuldade diferente. 24 CAPÍTULO 5. Estrutura e Funcionamento do Site Figura .21 - Ecrã inicial do jogo da Ordenação. O utilizador, neste jogo, ao escolher a “Parte 1” tanto no “Nível 1”, como no “Nível 2”, encontrará um conjunto de números que serão usados para ser ordenados por ordem crescente ou decrescente. Preenchendo os espaços em branco (Figura .22), com os números adequados, o utilizador vai ganhando peças, peças essas que no final do jogo, irão estar interligadas para representar um veículo. Figura .22 - Ecrã do jogo á medida que o utilizador vai jogando. No “Nível 1” o veículo a ser construído é uma mota e no “Nível 2” é um carro. A diferença entre os dois níveis é o grau de dificuldade das tarefas, aumentando a ordem de grandeza dos números. Durante o jogo aparecerão mensagens de texto a indicar se o utilizador vai acertando ou não. No fim do jogo aparecerá o Riscas a indicar como se comportou o utilizador com a respectiva pontuação e o veículo construído como mostra a seguinte figura: 25 CAPÍTULO 5. Estrutura e Funcionamento do Site Figura .23 - Ecrã final do jogo no “Nível 1” da “Parte 1”. A “Parte 2” do jogo tem como funcionalidade completar sequências de números. Para cada espaço (rectângulo) em branco pressionado, aparecerá quatro números, para o utilizador escolher o correcto (Figura .24) formando de igual forma os veículos. Figura .24 - Ecrã do jogo na “Parte 2” no “Nível 2” mostrando o processo do jogo. Em qualquer altura e em qualquer nível do jogo o utilizador pode pressionar o botão “Início” e voltará à página inicial do jogo. 5.6.2 Competências Este jogo tem como objectivo, desenvolver tarefas associadas à ordenação de números em sequências crescentes e decrescentes, ao estabelecimento de relações de ordem entre números e à utilização da simbologia > e <. 26 CAPÍTULO 5. Estrutura e Funcionamento do Site 5.6.3 Como foi implementado Como já foi dito, este jogo está dividido em duas partes. Na primeira parte existe um array de caixas de texto dinâmicas dos clipes de filme dos rectângulos a arrastar pertencente ao clipe de filme da pergunta. Cada pergunta tem os seus valores correctos guardados num array tendo assim um array para cada pergunta. Na segunda parte, também existe um array de caixas de texto dinâmicas dos clipes de filme dos rectângulos a arrastar, existe um array de valores correctos guardados para cada pergunta e existem quatro arrays de números para cada pergunta, para a escolha do número correcto a arrastar para o rectângulo. Tal como no jogo do Dinheiro, neste jogo tanto na parte um como na parte dois, também é usada também a função startDrag() no evento OnPress e a função stopDrag() no evento OnRelease de cada clipe de filme do número da pergunta. Foi também usada a função hitTest() para detectar a colisão entre os números da pergunta e os rectângulos onde se quer colocar esses números, função que vai ser também processada periodicamente através da função setInterval(). No evento OnRelease dos números das perguntas são guardadas as coordenadas inicias destes e as coordenadas de cada um dos rectângulos onde os números vão ser colocados para o caso de existir colisão e os números poderem ficar colocados nesses rectângulos e caso não exista colisão ou não seja permitida a colocação do número no rectângulo o número volta à posição inicial, podendo o utilizador verificar isso mediante a cor com que o rectângulo fica quando ocorre a colisão. Neste jogo tanto na parte um como na parte dois as perguntas são geradas aleatoriamente e existe uma pontuação a atribuir ao utilizador mediante o número de tentativas para acertar na colocação dos números. Essa pontuação é atribuída numa caixa de texto dinâmica quando por fim o utilizador acerta na colocação do número. À medida que o utilizador erra na colocação do número vai aparecendo numa caixa de texto dinâmica uma mensagem de erro e quando o utilizador acerta aparece na mesma caixa de texto uma mensagem de felicitação com o número de tentativas falhadas. A pontuação máxima a atribuir por cada número colocado é de 125 unidades e o desconto da pontuação do utilizador mediante o número de tentativas falhadas é calculado da seguinte maneira: se o utilizador falhar uma única vez perde 25 unidades, se o utilizador falhar duas ou mais vezes a pontuação a atribuir vai ser a pontuação máxima a dividir pelo número de tentativas falhadas (Apêndice A.5 Jogo da Ordenação). 5.7 Jogo das Horas 5.7.1 Descrição do Jogo Quando o utilizador escolhe o jogo das Horas aparece a página inicial (Figura .25) que contém três botões, o botão “Menu” que serve para voltar para o menu principal, o botão “Nível 1” e o botão “Nível 2”. Nos dois níveis, o utilizador tem que escolher as horas certas que marca o relógio de ponteiros. 27 CAPÍTULO 5. Estrutura e Funcionamento do Site Figura .25 - Ecrã inicial do jogo das Horas. No “Nível 1” aparecerão quatro relógios despertadores dos quais só um indica a hora certa correspondente à hora marcada no relógio de ponteiros. À medida que o utilizador vai jogando, o Troca Tintas aparecerá a dizer se acertou ou não, como se pode observar na figura seguinte: Figura .26 - Ecrã do jogo no “Nível 1” mostrando como acertou. No “Nível 2” aparecerá uma caixa de selecção que contém várias horas por extenso e só uma indica a hora certa marcada no relógio de ponteiros. Depois de seleccionada uma hora aparecerá um botão “Verifica” com animação, que quando pressionado, o Troca Tintas indica se o utilizador acertou ou não, como se pode ver na seguinte figura: 28 CAPÍTULO 5. Estrutura e Funcionamento do Site Figura .27 - Ecrã do jogo no “Nível 2”. Por fim, nos dois níveis aparecerá uma mensagem indicativa de fim de jogo e um botão “Início” que permite voltar para a página inicial do jogo. 5.7.2 Competências Com este jogo pretendeu-se desenvolver competências associadas à utilização de instrumentos da vida corrente relacionados com o tempo. O utilizador deverá ser capaz de ler e comparar as horas apresentadas em diferentes meios. 5.7.3 Como foi implementado Nos dois níveis deste jogo foi criado um relógio de ponteiros onde cada frame contém o relógio com os ponteiros numa determinada hora. Neste jogo, as perguntas também são geradas aleatoriamente através da função random(), por isso, o número aleatório gerado dentro do intervalo de números das perguntas vai ser o número da frame do clipe de filme do relógio de ponteiros que vai ser mostrada através da função gotoAndStop(). No primeiro nível foram criadas quatro instâncias de um relógio despertador que é um clipe de filme e contém duas caixas dinâmicas, uma para a hora e outra para os minutos. Estes relógios despertadores permitem ser seleccionados para fazer a correspondência entre a hora destes e a hora do relógio de ponteiros. Como estes relógios despertadores permitem ser seleccionados, fazem o papel de botões, mas, não o são devido ao facto de conterem caixas de texto dinâmicas as quais não permitem ser pressionadas, podendo ser pressionada somente a área do relógio despertador não preenchida com a caixa de texto. Assim os relógios despertadores ficaram como clipes de filme podendo ser pressionada toda a área deles incluindo as suas caixas de texto dinâmicas e alterar o seu estado (por exemplo a cor) ao posicionar o rato em cima dele através do evento OnRollOver, ao posicionar o rato fora dele 29 CAPÍTULO 5. Estrutura e Funcionamento do Site através do evento OnRollOut, ao pressionar o botão do rato através do evento OnPress, e ao soltar o botão do rato através do evento OnRelease. Estas mudanças de estado é a cor que o relógio despertador tem numa das suas frames que é reproduzida através da função gotoandPlay(). Quando é seleccionado um dos relógios despertadores é verificada a igualdade entre a hora deste e a hora do relógio de ponteiros. O código de validação está dentro do evento OnRelease de cada uma dos relógios despertadores (Apêndice A.6.2 Nível 1). No segundo nível foi criada uma instância de uma componente que o flash disponibiliza que é a ComboBox (caixa de selecção), que vai conter várias hipóteses para o utilizador escolher, em que essas hipóteses são horas escritas por extenso, sendo uma delas correspondente à hora marcada pelos ponteiros do relógio. A validação de cada pergunta deste nível é feita ao pressionar um botão animado, chamado “Verifica”, que contém o código de validação dentro do evento OnRelease (Apêndice A.6.3 Nível 2). 30 CAPÍTULO 6. Teste ao Software Capítulo 6 6 Teste ao Software Os testes realizados aos jogos, foram feitos por seis crianças da familia e amigos entre os oito e os dez anos que frequentavam o 3º ano e 4º ano. No geral, as crianças acharam os ambientes criados, as animações, as personagens e as cores dos jogos interessantes achando alguns difíceis, mas sempre com alguma curiosidade para saber o que ia acontecer quando ganhavam. Quanto ao jogo das Operações, as crianças gostaram do ambiente e acharam fácil o nível 1, mas no nível 2 acharam um pouco difícil ter que fazer as contas mentalmente. No jogo do Dinheiro as crianças começaram por pegar num caderno e por resolver os problemas à medida que iam aparecendo, gostando dos desenhos, dos sons e conhecendo bem o dinheiro, mas, tiveram muitas dificuldades na resolução dos últimos problemas. O jogo dos Múltiplos foi interpretado e jogado com facilidade pelas crianças, elas gostaram do jogo e acharam bastante engraçada a animação do peixe a saltar para o aquário. As crianças no jogo das Fracções, começaram pelo nível fácil e depois foram jogando, gostando do jogo em todos os níveis e achando o jogo com dificuldade média. No jogo da Ordenação as crianças começaram por escolher o nível 1 da parte 1 achando o jogo acessível e gostaram bastante dos veículos. Também gostaram do restantes níveis achando particularmente os níveis da parte 2 (que eram para completar), um pouco mais complicados. Por fim, no jogo das Horas, as crianças gostaram dos sons e acharam o nível 1 mais fácil que o nível 2 devido à dificuldade em relacionar as horas do relógio dos ponteiros com as horas por extenso, enganando-se um pouco mais na sua escolha. Depois de jogarem e serem questionadas, a maioria das crianças escolheu o jogo das Fracções como preferido. Mediante os resultados destes testes foram feitos pequenos ajustes à aplicação. 31 CAPÍTULO 7. Conclusões Capítulo 7 7 Conclusões Este projecto foi desenvolvido utilizando o software Macromedia Flash 8, o qual se mostrou indispensável para o desenvolvimento do site/jogo, visto que, é uma ferramenta robusta e fantástica em termos de desenho vectorial (o qual foi necessário para a elaboração gráfica do site/jogo) e em termos de linguagem de programação ActionScript (a qual foi necessária para dar interactividade ao site/jogo). No desenvolvimento do projecto, alguns jogos foram mais difíceis de implementar do que outros. Para ultrapassar essas dificuldades recorreu-se ao apoio de alguns sites, tutoriais e manuais referentes à ferramenta Macromedia Flash 8. Os tópicos abordados na aplicação basearam-se no programa de Matemática do 1º Ciclo do Ensino Básico. Nomeadamente, números e operações habitualmente abordados no 3º e 4º ano de escolariedade. Esses conteúdos foram apresentados de forma a motivar as crianças para a aprendizagem da Matemática usando desenhos e animações que eles costumam apreciar. Assim sendo, este projecto traduziu-se para enriquecimento pessoal não só ao nível das tecnologias, mas também ao nível da interacção pedagógica, fundamental no desenvolvimento de software educativo. 32 Bibliografia Bibliografia [EM 03] ESTEVES, Maria Emília - Projecto Vila Moinho Caderno de Actividades Matemática 3º Ano, 2.ª Edição, Departamento de Investigações e Edições Educativas da Constância Editores, S.A, 2003 [GA 03] GONÇALVES, Armando - Projecto Vila Moinho Matemática 4º Ano, 2.ª Edição, Departamento de Investigações e Edições Educativas da Constância Editores, S.A, 2003 [EM 03] ESTEVES, Maria Emília - Projecto Vila Moinho Caderno de Actividades Matemática 4º Ano, 2.ª Edição, Departamento de Investigações e Edições Educativas da Constância Editores, S.A, 2003 [LM 04] LOURENÇO, Manuela - Organização Curricular e Programas Ensino Básico – 1.º Ciclo, Departamento da Educação Básica, Janeiro 2004 [FR 00] FRANCESCATO Rosana [et al.] - macromedia FLASH 5.Guia de Referência do ActionScript, 1ª Edição, San Francisco, Macromedia, Inc., Setembro 2000 de http://www.apostilando.com/download.php?cod=98&categoria=Flash. 12 Mar. 2008 [FR 03] FRANCESCATO Rosana [et al.] - macromedia FLASH MX 2004. Guia de referência do ActionScript, 1ªEdição, San Francisco, Macromedia, Inc., Outubro 2003 de http://download.macromedia.com/pub/documentation/br/flash/mx2004/fl_actionscript_reference. pdf. 17 Jul. 2008 [FP 04] FERREIRA, Pedro Cid – FLASH MX 2004. Conceitos e Prática, Lisboa, FCA – Editora de Informática, Lda, 2004 [LM 07] LINHARES, Miguel – Exercícios de FLASH 8 & MX 2004, Lisboa, FCA – Editora de Informática, Lda, Abril 2007 [URL1] http://israelswf.blogspot.com/2006/04/aula-1-comeando-no-flash.html [URL2] http://www.adobe.com/support/flash/action_scripts_dict.html [URL3] http://flashmasters.net/index.php?option=com_frontpage&Itemid=1 [URL4] http://www.orkut.com [URL5] http://www.google.pt [URL6] http://www.bananadesign.com.br/conteudo.asp?secao=1&subsecao=1&materia=17&id_secao=1 [URL7] http://www.truquesedicas.com/tutoriais/index.php [URL8] http://www.eduteka.org/MI/master/interactivate/ [URL9] http://www.kirupa.com/developer/flash/index.htm 33 Apêndice A – Código ActionScript Apêndice A A Código ActionScript A.1 Jogo das Operações A.1.1 Página Inicial A.1.1.1 Botão “Menu” on(release){ loadMovie("./paginaPrincipal.swf",_root) } A.1.1.2 Botão “Nível 1” on(release){ loadMovie("minhoca1.swf",_root); } A.1.1.3 Botão “Nível 2” on(release){ loadMovie("minhoca2.swf",_root); } 34 Apêndice A – Código ActionScript A.1.2 Nível 1 A.1.2.1 Camada de acções _root.acabou_mc._visible=false; errado1_mc._visible = false; certo1_mc._visible = false; opseguinte1_btn._visible = false; var operando1:String; var operador:String; var operando2:String; var resultado:String; var conclusao:String; var cont:Number=0; operador_txt._visible = false; ///***Array de operações*** arrayContas = new Array(); var i:Number; arrayContas[0] = "25,"+mbchr(215)+",2,=,50"; arrayContas[1] = "30,"+mbchr(247)+",2,=,15"; arrayContas[2] = "48,-,31,=,17"; arrayContas[3] = "14,+,23,=,37"; arrayContas[4] = "30,-,11,=,19"; arrayContas[5] = "17,+,8,=,25"; arrayContas[6] = "3,"+mbchr(215)+",15,=,45"; arrayContas[7] = "16,"+mbchr(247)+",4,=,4"; arrayContas[8] = "10,"+mbchr(215)+",3,=,30"; arrayContas[9] = "65,"+mbchr(247)+",5,=,13"; arrayContas[10] = "72,+,26,=,98"; //***Função para inserção dos numeros da operação aleatória gerada*** var jaux:Number= 0;//para nao repetir as operações i = GerarOperacao(arrayContas); 35 Apêndice A – Código ActionScript //++++++++++Funções++++++++++++ function GerarOperacao():Number { var indice:Number = random(11); while(indice==jaux){ indice = random(11); } jaux=indice; operando1 = arrayContas[indice].split(",")[0]; operando2 = arrayContas[indice].split(",")[2]; resultado = arrayContas[indice].split(",")[4]; return indice; } //***funções dos botões das minhocas*** this.minhoca_mc.mais1_btn.onRelease = function() { operador_txt._visible = true; operador = "+"; var testamais = arrayContas[i].split(",")[1]; if (testamais == "+") { conclusao = "Certo"; bloquearMinhoca(false); sons("certo.wav"); _root.pisca1.gotoAndPlay(10); _root.pisca1.stop(); errado1_mc._visible = false; certo1_mc._visible = true; if (cont<9) { opseguinte1_btn._visible = true; cont++; _root.maca_mc.gotoAndPlay(cont); }else{ _root.acabou_mc._visible=true; } } else { certo1_mc._visible = false; errado1_mc._visible = true; opseguinte1_btn._visible = false; //**mostrar solução errada** errou1=parseInt(operando1); 36 Apêndice A – Código ActionScript errou2=parseInt(operando2); erroufinal=errou1+errou2; conclusao="Errado: "+operando1+operador+operando2+"="+erroufinal; sons("errado2.wav"); } }; this.minhoca_mc.menos1_btn.onRelease = function() { operador_txt._visible = true; operador = "-"; var testamenos = arrayContas[i].split(",")[1]; if (testamenos == "-") { _root.pisca1.gotoAndPlay(10); _root.pisca1.stop(); conclusao = "Certo"; sons("certo.wav"); bloquearMinhoca(false); errado1_mc._visible = false; certo1_mc._visible = true; if (cont<9) { opseguinte1_btn._visible = true; cont++; _root.maca_mc.gotoAndPlay(cont); }else{ _root.acabou_mc._visible=true; } } else { conclusao = "Errado"; certo1_mc._visible = false; errado1_mc._visible = true; opseguinte1_btn._visible = false; //**mostrar solução errada** errou1=parseInt(operando1); errou2=parseInt(operando2); erroufinal=errou1-errou2; conclusao="Errado: "+operando1+operador+operando2+"="+erroufinal; 37 Apêndice A – Código ActionScript sons("errado2.wav"); } }; this.minhoca_mc.vezes1_btn.onRelease = function() { operador_txt._visible = true; operador = mbchr(215); var testavezes = arrayContas[i].split(",")[1]; if (testavezes == mbchr(215)) { conclusao = "Certo"; sons("certo.wav"); bloquearMinhoca(false); _root.pisca1.gotoAndPlay(10); _root.pisca1.stop(); errado1_mc._visible = false; certo1_mc._visible = true; if (cont<9) { opseguinte1_btn._visible = true; cont++; _root.maca_mc.gotoAndPlay(cont); }else{ _root.acabou_mc._visible=true; } } else { conclusao = "Errado"; certo1_mc._visible = false; errado1_mc._visible = true; opseguinte1_btn._visible = false; //**mostrar solução errada** errou1=parseInt(operando1); errou2=parseInt(operando2); erroufinal=errou1*errou2; conclusao="Errado: "+operando1+operador+operando2+"="+erroufinal; sons("errado2.wav"); } }; 38 Apêndice A – Código ActionScript this.minhoca_mc.dividir1_btn.onRelease = function() { operador_txt._visible = true; operador = mbchr(247); var testadividir = arrayContas[i].split(",")[1]; if (testadividir == mbchr(247)) { conclusao = "Certo"; sons("certo.wav"); bloquearMinhoca(false); _root.pisca1.gotoAndPlay(10); _root.pisca1.stop(); errado1_mc._visible = false; certo1_mc._visible = true; if (cont<9) { opseguinte1_btn._visible = true; cont++; _root.maca_mc.gotoAndPlay(cont); }else{ _root.acabou_mc._visible=true; } } else { conclusao = "Errado"; certo1_mc._visible = false; errado1_mc._visible = true; opseguinte1_btn._visible = false; //**mostrar solução errada** errou1=parseInt(operando1); errou2=parseInt(operando2); erroufinal=errou1/errou2; conclusao="Errado: "+operando1+operador+operando2+"="+erroufinal; sons("errado2.wav"); } }; 39 Apêndice A – Código ActionScript function bloquearMinhoca(b:Boolean){ _root.minhoca_mc.dividir1_btn.enabled=b; _root.minhoca_mc.mais1_btn.enabled=b; _root.minhoca_mc.menos1_btn.enabled=b; _root.minhoca_mc.vezes1_btn.enabled=b; } function sons(s:String){ var som:Sound= new Sound(); som.attachSound(s); som.start(); } A.1.2.2 Botão “Operação seguinte” on (release) { i = GerarOperacao(); _root.pisca1.play(); operador=""; conclusao=""; _root.errado1_mc._visible=false; bloquearMinhoca(true); _root.certo1_mc._visible=false; opseguinte1_btn._visible=false; } A.1.2.3 Botão “Início” on (release) { loadMovie("inicioMinhoca.swf", _root); } 40 Apêndice A – Código ActionScript A.1.3 Nível 2 A.1.3.1 Camada de acções _root.bloquearMinhoca(false); _root.acabou_mc._visible=false; errado1_mc._visible = false; certo1_mc._visible = false; opseguinte1_btn._visible = false; _root.verifica_btn._visible = false; _root.limpar_btn.enabled=false; var operador:String; var operador2:String; operador=""; operador2=""; var operando1:String; var operando2:String; var operando3:String; var resultado:String; var conclusao:String; _global.op=0; var cont:Number; cont = 0; //para nao aparecer o cursor de texto e //aparecer a mao para seleccionar o pisca operador_txt._visible = false; operador2_txt._visible = false; ///***Array de operações*** arrayContas = new Array(); var i:Number; arrayContas[0] = "8,"+mbchr(215)+",6,+,12,=,60"; arrayContas[1] = "3,"+mbchr(247)+",3,+,9,=,10"; arrayContas[2] = "4,-,3,+,10,=,13"; arrayContas[3] = "13,+,20,-,5,=,28"; 41 Apêndice A – Código ActionScript arrayContas[4] = "30,-,15,+,16,=,31"; arrayContas[5] = "17,+,5,+,18,=,40"; arrayContas[6] = "9,"+mbchr(215)+",4,+,11,=,47"; arrayContas[7] = "45,"+mbchr(247)+",5,"+mbchr(215)+",3,=,27"; arrayContas[8] = "7,"+mbchr(215)+",6,"+mbchr(247)+",2,=,21"; arrayContas[9] = "62,"+mbchr(247)+",2,+,19,=,50"; arrayContas[10] = "38,-,11,-,4,=,23"; //***Função para inserção dos numeros da operação aleatória gerada*** var jaux:Number = 0; i = GerarOperacao(); //++++++++++Funções++++++++++++ function GerarOperacao():Number { var indice:Number = random(11); while (indice == jaux) { indice = random(11); } jaux = indice; operando1 = arrayContas[indice].split(",")[0]; operando2 = arrayContas[indice].split(",")[2]; operando3 = arrayContas[indice].split(",")[4]; resultado = arrayContas[indice].split(",")[6]; return indice; } //***funções dos botoes da minhoca*** this.minhoca_mc.mais1_btn.onRelease = function() { if (op==1) { operador_txt._visible = true; operador = "+"; _root.pisca1.gotoAndPlay(10); _root.pisca1.stop(); } else if (op==2) { operador2_txt._visible = true; operador2 = "+"; _root.pisca2.gotoAndPlay(10); _root.pisca2.stop(); 42 Apêndice A – Código ActionScript } if (operador.length!=0 && operador2.length !=0) { _root.verifica_btn._visible=true; _root.verifica_btn.enabled=true; } }; this.minhoca_mc.menos1_btn.onRelease = function() { if (op==1) { operador_txt._visible = true; operador = "-"; _root.pisca1.gotoAndPlay(10); _root.pisca1.stop(); } else if (op==2) { operador2_txt._visible = true; operador2 = "-"; _root.pisca2.gotoAndPlay(10); _root.pisca2.stop(); } if (operador.length!= 0 && operador2.length != 0) { _root.verifica_btn._visible=true; _root.verifica_btn.enabled=true; } }; this.minhoca_mc.vezes1_btn.onRelease = function() { if (op==1) { operador_txt._visible = true; operador = mbchr(215); _root.pisca1.gotoAndPlay(10); _root.pisca1.stop(); } else if (op==2) { operador2_txt._visible = true; operador2 = mbchr(215); _root.pisca2.gotoAndPlay(10); _root.pisca2.stop(); } if (operador.length != 0 && operador2.length != 0) { _root.verifica_btn._visible=true; _root.verifica_btn.enabled=true; 43 Apêndice A – Código ActionScript } }; this.minhoca_mc.dividir1_btn.onRelease = function() { if (op==1) { operador_txt._visible = true; operador = mbchr(247); _root.pisca1.gotoAndPlay(10); _root.pisca1.stop(); } else if (op==2) { operador2_txt._visible = true; operador2 = mbchr(247); _root.pisca2.gotoAndPlay(10); _root.pisca2.stop(); } if (operador.length != 0 && operador2.length != 0) { _root.verifica_btn._visible=true; _root.verifica_btn.enabled=true; } }; function bloquearMinhoca(b:Boolean){ _root.minhoca_mc.dividir1_btn.enabled=b; _root.minhoca_mc.mais1_btn.enabled=b; _root.minhoca_mc.menos1_btn.enabled=b; _root.minhoca_mc.vezes1_btn.enabled=b; } function sons(s:String){ var som:Sound= new Sound(); som.attachSound(s); som.start(); } A.1.3.2 Botão “Limpar” on(release){ _root.operador2=""; _root.operador=""; _root.pisca1.gotoAndStop(1); 44 Apêndice A – Código ActionScript _root.pisca2.gotoAndStop(1); _root.operador_txt._visible=false; _root.operador2_txt._visible=false; _root.verifica_btn._visible=false; _root.bloquearMinhoca(false); } A.1.3.3 Botão “Operação seguinte” on (release) { i = GerarOperacao(); _root.pisca1.gotoAndStop(1); _root.pisca2.gotoAndStop(1); operador_txt._visible = false; operador2_txt._visible = false; _root.verifica_btn._visible = false; operador = ""; operador2 = ""; conclusao = ""; _root.errado1_mc._visible = false; _root.certo1_mc._visible = false; opseguinte1_btn._visible = false; _global.op=0; } A.1.3.4 Botão “Início” on (release) { loadMovie("inicioMinhoca.swf", _root); } 45 Apêndice A – Código ActionScript Clipe de filme “pisca1” A.1.3.5 onClipEvent (load) { stop();//para nao piscar quando começa o jogo } on(press){ _root.sons("clique.wav"); } on (release) { gotoAndPlay(1); if(_root.operador2_txt.length==0){ _root.pisca2.gotoAndStop(1); } _global.op=1; _root.verifica_btn._visible=false; _root.errado1_mc._visible=false; _root.conclusao_txt._visible=false; conclusao=""; _root.bloquearMinhoca(true); _root.limpar_btn.enabled=true; } A.1.3.6 Clipe de filme “pisca2” onClipEvent (load) { stop(); } on(press){ _root.sons("clique.wav"); } on (release) { gotoAndPlay(1); 46 Apêndice A – Código ActionScript if(_root.operador_txt.length==0){ _root.pisca1.gotoAndStop(1); } _global.op=2; _root.verifica_btn._visible=false; _root.errado1_mc._visible=false; _root.conclusao_txt._visible=false; conclusao=""; _root.bloquearMinhoca(true); _root.limpar_btn.enabled=true; } A.1.3.7 Botão “Verifica se acertaste” on (release) { var testa1 = arrayContas[i].split(",")[1]; var testa2 = arrayContas[i].split(",")[3]; _root.conclusao_txt._visible=true; _root.bloquearMinhoca(false); _root.limpar_btn.enabled=false; verifica_btn.enabled=false; if (testa1 == operador && testa2 == operador2) { conclusao = "Certo"; _root.sons("certo.wav"); errado1_mc._visible = false; certo1_mc._visible = true; if (cont<9) { opseguinte1_btn._visible = true; cont++; _root.maca_mc.gotoAndPlay(cont); }else{ _root.acabou_mc._visible=true; } } else { certo1_mc._visible = false; 47 Apêndice A – Código ActionScript errado1_mc._visible = true; opseguinte1_btn._visible = false; operador_txt._visible=false; operador2_txt._visible=false; _root.pisca1.gotoAndStop(1); _root.pisca2.gotoAndStop(1); //**mostrar solução errada** errou1=parseInt(operando1); errou2=parseInt(operando2); errou3=parseInt(operando3); switch(operador){ case "+": errouMidle=errou1+errou2; break; case "-": errouMidle=errou1-errou2; break; case mbchr(247): errouMidle=errou1/errou2; break; case mbchr(215): errouMidle=errou1*errou2; break; } switch(operador2){ case "+": erroufinal=errouMidle+errou3; break; case "-": erroufinal=errouMidle-errou3; break; case mbchr(247): erroufinal=errouMidle/errou3; break; 48 Apêndice A – Código ActionScript case mbchr(215): erroufinal=errouMidle*errou3; break; } conclusao="Errado: "+operando1+operador+operando2+"="+errouMidle+"\n "+errouMidle+operador2+operando3+"="+erroufinal; operador=""; operador2=""; _root.sons("errado2.wav"); } } A.2 Jogo do Dinheiro A.2.1 Página Inicial A.2.1.1 Botão “Iniciar” on(release){ loadMovie("problemas.swf",_root); } A.2.1.2 Botão “Menu” on(release){ loadMovie("./paginaPrincipal.swf",_root) } 49 Apêndice A – Código ActionScript A.2.2 Página dos Problemas A.2.2.1 Camada de acções var movie_mc:MovieClip; var euro:Number; var display:String; display="0.00€"; var soma:Number; var resultado:Number; var cont:Number; cont=0; soma=0; euro=0; _root.verifica_btn._visible=false; _global.colid=0; var arrayValores:Array=new Array(); arrayValores[0]=25; arrayValores[1]=13; arrayValores[2]=80-24;//=56 arrayValores[3]=189/9;//=21 arrayValores[4]=(1.50*8)+(0.75*7);//=17.25 arrayValores[5]=1.45*4;//=5.8 arrayValores[6]=1.2;//2*0.6; arrayValores[7]=620/0.50;//=1240 arrayValores[8]=16000*0.04;//=640 arrayValores[9]=2300-(2300*0.20);//=1840 //criar array de perguntas var pergunta:Number; pergunta=0; var arrayPerg:Array= new Array(); arrayPerg[0] = this.perg1_mc; arrayPerg[1] = this.perg2_mc; 50 Apêndice A – Código ActionScript arrayPerg[2] = this.perg3_mc; arrayPerg[3] = this.perg5_mc; arrayPerg[4] = this.perg4_mc; arrayPerg[5] = this.perg9_mc; arrayPerg[6] = this.perg10_mc; arrayPerg[7] = this.perg6_mc; arrayPerg[8] = this.perg7_mc; arrayPerg[9] = this.perg8_mc; for (var i:Number = 1; i <= 9; i++) { arrayPerg[i]._visible=false; } e500_mc.onPress=function() { cont=0; this.startDrag(); movie_mc=this; euro=500; } e200_mc.onPress=function() { cont=0; this.startDrag(); movie_mc=this; euro=200; } e100_mc.onPress=function() { cont=0; this.startDrag(); movie_mc=this; euro=100; } e50_mc.onPress=function() { cont=0; this.startDrag(); movie_mc=this; euro=50; } 51 Apêndice A – Código ActionScript e20_mc.onPress=function() { cont=0; this.startDrag(); movie_mc=this; euro=20; } e10_mc.onPress=function() { cont=0; this.startDrag(); movie_mc=this; euro=10; } e5_mc.onPress=function() { cont=0; this.startDrag(); movie_mc=this; euro=5; } e2_mc.onPress=function() { cont=0; this.startDrag(); movie_mc=this; euro=2; } e1_mc.onPress=function() { cont=0; this.startDrag(); movie_mc=this; euro=1; } e050_mc.onPress=function() { cont=0; this.startDrag(); movie_mc=this; euro=0.5; } 52 Apêndice A – Código ActionScript e020_mc.onPress=function() { cont=0; this.startDrag(); movie_mc=this; euro=0.2; } e010_mc.onPress=function() { cont=0; this.startDrag(); movie_mc=this; euro=0.1; } e005_mc.onPress=function() { cont=0; this.startDrag(); movie_mc=this; euro=0.05; } e002_mc.onPress=function() { cont=0; this.startDrag(); movie_mc=this; euro=0.02; } e001_mc.onPress=function() { cont=0; this.startDrag(); movie_mc=this; euro=0.01; } function detectaColisao(){ if(maqregist_mc.hitTest(_root.movie_mc._x,_root.movie_mc._y,tru e)){ _root.verifica_btn._visible=true; _root.maqregist_mc.gotoAndStop(2); if(cont==0){ soma+=euro; 53 Apêndice A – Código ActionScript display=soma+"€"; cont++; } _global.colid=1; }else{ _root.maqregist_mc.gotoAndStop(1); _global.colid=0; } } setInterval(detectaColisao,10); function sons(s:String){ var som:Sound= new Sound(); som.attachSound(s); som.start(); } A.2.2.2 Botão “Início” on(release){ loadMovie("inicioProblemas.swf",_root); } A.2.2.3 Botão “Corrigir” on (release) { display="0.00€"; resultado=""; soma=0; } 54 Apêndice A – Código ActionScript A.2.2.4 Botão “Verifica se acertaste” on (release) { if(_root.arrayValores[pergunta]==_root.soma){ _root.resultado_txt.textColor=0x006600; _root.resultado_txt.text="Acertaste\npassa seguinte."; à\npergunta\n _root.corrigir_btn._visible=false; _root.sons("certo.wav"); }else{ if(_root.soma > _root.arrayValores[pergunta]){ _root.resultado_txt.textColor=0xFF0000; _root.resultado_txt.text="Não clica\nem corrigir e\ntenta outra\nvez."; temos\ntrocos _root.corrigir_btn._visible=true; _root.sons("errado2.wav"); }else{ _root.resultado_txt.textColor=0xFF0000; _root.resultado_txt.text="O não\nchega, tens\nque dar mais\ndinheiro."; dinheiro\nque _root.corrigir_btn._visible=true; _root.sons("errado2.wav"); } } } A.2.2.5 Botão “Problema seguinte” on (release) { _root.verifica_btn._visible=false; if(pergunta<9){ display="0.00€"; resultado=""; soma=0; arrayPerg[pergunta]._visible=false; pergunta++; arrayPerg[pergunta]._visible=true; 55 deste Apêndice A – Código ActionScript _root.corrigir_btn._visible=true; }else{ _root.resultado_txt.textColor=0xFF6600; _root.resultado_txt.text="Chegaste\nao fim da\n sequência de \n problemas"; arrayPerg[pergunta]._visible=false; _root.verifica_btn._visible=false; pergunta=-1; } } A.2.2.6 Botão “Problema anterior” on (release) { _root.verifica_btn._visible=false; if(pergunta>0){ display="0.00€"; resultado=""; soma=0; arrayPerg[pergunta]._visible=false; pergunta--; arrayPerg[pergunta]._visible=true; _root.corrigir_btn._visible=true; }else{ arrayPerg[pergunta]._visible=false; _root.verifica_btn._visible=false; pergunta=10; } } A.2.2.7 Clipe de filme “Nota de 500 €” on(release){ this.stopDrag(); if(_global.colid==1){ 56 Apêndice A – Código ActionScript this.gotoAndPlay(2);//efeito proveniente do gráfico do movie clip da nota quando acertou nota quando acertou nota quando acertou _root.sons("largar nota2.wav"); }else{ this._x=900; this._y=55; } } on(press){ _root.sons("notas lev.wav"); } A.2.2.8 Clipe de filme “Nota de 200 €” on(release){ this.stopDrag(); if(_global.colid==1){ this.gotoAndPlay(2);//efeito proveniente do gráfico do movie clip da _root.sons("largar nota2.wav"); }else{ this._x=900; this._y=82; } } on(press){ _root.sons("notas lev.wav"); } A.2.2.9 Clipe de filme “Nota de 100 €” on(release){ this.stopDrag(); if(_global.colid==1){ this.gotoAndPlay(2);//efeito proveniente do gráfico do movie clip 57 da Apêndice A – Código ActionScript _root.sons("largar nota2.wav"); }else{ this._x=900; this._y=112; } } on(press){ _root.sons("notas lev.wav"); } A.2.2.10 Clipe de filme “Nota de 50 €” on(release){ this.stopDrag(); if(_global.colid==1){ this.gotoAndPlay(2);//efeito proveniente do gráfico do movie clip da nota quando acertou nota quando acertou _root.sons("largar nota2.wav"); }else{ this._x=900; this._y=140; } } on(press){ _root.sons("notas lev.wav"); } A.2.2.11 Clipe de filme “Nota de 20 €” on(release){ this.stopDrag(); if(_global.colid==1){ this.gotoAndPlay(2);//efeito proveniente do gráfico do movie clip da _root.sons("largar nota2.wav"); }else{ 58 Apêndice A – Código ActionScript this._x=837; this._y=135; } } on(press){ _root.sons("notas lev.wav"); } A.2.2.12 Clipe de filme “Nota de 10 €” on(release){ this.stopDrag(); if(_global.colid==1){ this.gotoAndPlay(2);//efeito proveniente do gráfico do movie clip da nota quando acertou nota quando acertou _root.sons("largar nota2.wav"); }else{ this._x=818; this._y=155; } } on(press){ _root.sons("notas lev.wav"); } A.2.2.13 Clipe de filme “Nota de 5 €” on(release){ this.stopDrag(); if(_global.colid==1){ this.gotoAndPlay(2);//efeito proveniente do gráfico do movie clip da _root.sons("largar nota2.wav"); }else{ this._x=817; 59 Apêndice A – Código ActionScript this._y=185; } } on(press){ _root.sons("notas lev.wav"); } A.2.2.14 Clipe de filme “Moeda de 2 €” on(release){ this.stopDrag(); if(_global.colid==1){ this.gotoAndPlay(2);//efeito proveniente do gráfico do movie clip da nota quando acertou nota quando acertou _root.sons("largar nota2.wav"); }else{ this._x=852; this._y=320; } } on(press){ _root.sons("notas lev.wav"); } A.2.2.15 Clipe de filme “Moeda de 1 €” on(release){ this.stopDrag(); if(_global.colid==1){ this.gotoAndPlay(2);//efeito proveniente do gráfico do movie clip da _root.sons("largar nota2.wav"); }else{ this._x=945; this._y=318; } 60 Apêndice A – Código ActionScript } on(press){ _root.sons("notas lev.wav"); } A.2.2.16 Clipe de filme “Moeda de 50 cent.” on(release){ this.stopDrag(); if(_global.colid==1){ this.gotoAndPlay(2);//efeito proveniente do gráfico do movie clip da nota quando acertou nota quando acertou _root.sons("largar nota2.wav"); }else{ this._x=850; this._y=410; } } on(press){ _root.sons("notas lev.wav"); } A.2.2.17 Clipe de filme “Moeda de 20 cent.” on(release){ this.stopDrag(); if(_global.colid==1){ this.gotoAndPlay(2);//efeito proveniente do gráfico do movie clip da _root.sons("largar nota2.wav"); }else{ this._x=945; this._y=410; } } 61 Apêndice A – Código ActionScript on(press){ _root.sons("notas lev.wav"); } A.2.2.18 Clipe de filme “Moeda de 10 cent.” on(release){ this.stopDrag(); if(_global.colid==1){ this.gotoAndPlay(2);//efeito proveniente do gráfico do movie clip da nota quando acertou nota quando acertou _root.sons("largar nota2.wav"); }else{ this._x=850; this._y=504; } } on(press){ _root.sons("notas lev.wav"); } A.2.2.19 Clipe de filme “Moeda de 5 cent.” on(release){ this.stopDrag(); if(_global.colid==1){ this.gotoAndPlay(2);//efeito proveniente do gráfico do movie clip da _root.sons("largar nota2.wav"); }else{ this._x=945; this._y=500; } } 62 Apêndice A – Código ActionScript on(press){ _root.sons("notas lev.wav"); } A.2.2.20 Clipe de filme “Moeda de 2 cent.” on(release){ this.stopDrag(); if(_global.colid==1){ this.gotoAndPlay(2);//efeito proveniente do gráfico do movie clip da nota quando acertou nota quando acertou _root.sons("largar nota2.wav"); }else{ this._x=848; this._y=585; } } on(press){ _root.sons("notas lev.wav"); } A.2.2.21 Clipe de filme “Moeda de 1 cent.” on(release){ this.stopDrag(); if(_global.colid==1){ this.gotoAndPlay(2);//efeito proveniente do gráfico do movie clip da _root.sons("largar nota2.wav"); }else{ this._x=944; this._y=584; } } 63 Apêndice A – Código ActionScript on(press){ _root.sons("notas lev.wav"); } A.3 Jogo dos Múltiplos A.3.1 Página Inicial A.3.1.1 Botão “Iniciar” on(release){ loadMovie("jogoPeixe.swf",_root); } A.3.1.2 Botão “Menu” on(release){ loadMovie("./paginaPrincipal.swf",_root) } A.3.2 Página das perguntas A.3.2.1 Camada de acções _root.balaoRes_mc._visible=false; _root.acabou_mc._visible=false; _root.next_btn._visible=false; var expressoes:Array=new Array(); expressoes[0]=_root.prg1_mc; expressoes[1]=_root.prg2_mc; 64 Apêndice A – Código ActionScript expressoes[2]=_root.prg3_mc; expressoes[3]=_root.prg4_mc; expressoes[4]=_root.prg5_mc; expressoes[5]=_root.prg6_mc; expressoes[6]=_root.prg7_mc; expressoes[7]=_root.prg8_mc; expressoes[8]=_root.prg9_mc; expressoes[9]=_root.prg10_mc; expressoes[10]=_root.prg11_mc; expressoes[11]=_root.prg12_mc; expressoes[12]=_root.prg13_mc; expressoes[13]=_root.prg14_mc; expressoes[14]=_root.prg15_mc; expressoes[15]=_root.prg16_mc; expressoes[16]=_root.prg17_mc; expressoes[17]=_root.prg18_mc; expressoes[18]=_root.prg19_mc; expressoes[19]=_root.prg20_mc; expressoes[20]=_root.prg21_mc; expressoes[21]=_root.prg22_mc; expressoes[22]=_root.prg23_mc; expressoes[23]=_root.prg24_mc; expressoes[24]=_root.prg25_mc; expressoes[25]=_root.prg26_mc; expressoes[26]=_root.prg27_mc; expressoes[27]=_root.prg28_mc; expressoes[28]=_root.prg29_mc; expressoes[29]=_root.prg30_mc; expressoes[30]=_root.prg31_mc; expressoes[31]=_root.prg32_mc; expressoes[32]=_root.prg33_mc; var valores:Array=new Array(); valores[0]=false; valores[1]=true; valores[2]=true; valores[3]=false; valores[4]=true; 65 Apêndice A – Código ActionScript valores[5]=false; valores[6]=true; valores[7]=false; valores[8]=true; valores[9]=true; valores[10]=false; valores[11]=true; valores[12]=false; valores[13]=true; valores[14]=false; valores[15]=true; valores[16]=false; valores[17]=true; valores[18]=false; valores[19]=true; valores[20]=false; valores[21]=true; valores[22]=false; valores[23]=true; valores[24]=false; valores[25]=true; valores[26]=false; valores[27]=true; valores[28]=false; valores[29]=true; valores[30]=false; valores[31]=true; valores[32]=false; var inc:Number; inc=1; var resultado:String; resultado=""; for (var i:Number = 0; i <= 32; i++) { expressoes[i]._visible=false; } var pergunta:Number=0; 66 Apêndice A – Código ActionScript //gerar aleatóriamente a primeira pergunta var aux:Number=0; function gerarAleatorio(){ //para nao repetir as operações pergunta=random(33); while (pergunta == aux) { pergunta=random(33); } aux = pergunta; } gerarAleatorio(); expressoes[pergunta]._visible=true; function sons(s:String){ var som:Sound= new Sound(); som.attachSound(s); som.start(); } A.3.2.2 Botão “Início” on(release){ loadMovie("inicioPeixe.swf",_root); } A.3.2.3 Botão “Verdadeiro” on(release){ var escolha:Boolean=true; _root.resultado_txt._visible=true; _root.balaoRes_mc._visible=true; if(escolha==valores[pergunta]){ 67 Apêndice A – Código ActionScript _root.resultado_txt.textColor=0x0099CC; _root.resultado_txt.text="Certo, passa para a\n pergunta seguinte"; _root.sons("certo.wav"); _root.true_btn.enabled=false; _root.false_btn.enabled=false; inc++; _root.aquariomc_mc.gotoAndStop(inc); if(inc<=12){ _root.next_btn._visible=true; }else{ _root.expressoes[pergunta]._visible=false; _root.ou_mc._visible=false; _root.true_btn._visible=false; _root.false_btn._visible=false; _root.resultado_txt._visible=false; _root.acabou_mc._visible=true; _root.balaoRes_mc._visible=false; } }else{ _root.resultado_txt.textColor=0xFF0000; _root.resultado_txt.text="Errado, tenta\noutra vez"; _root.sons("errado2.wav"); } } A.3.2.4 Botão “Falso” on(release){ var escolha:Boolean=false; _root.resultado_txt._visible=true; _root.balaoRes_mc._visible=true; if(escolha==valores[pergunta]){ _root.resultado_txt.textColor=0x0099CC; _root.resultado_txt.text="Certo, passa para a\n pergunta seguinte"; _root.sons("certo.wav"); 68 Apêndice A – Código ActionScript _root.true_btn.enabled=false; _root.false_btn.enabled=false; inc++; _root.aquariomc_mc.gotoAndStop(inc); if(inc<=12){ _root.next_btn._visible=true; }else{ _root.expressoes[pergunta]._visible=false; _root.ou_mc._visible=false; _root.true_btn._visible=false; _root.false_btn._visible=false; _root.resultado_txt._visible=false; _root.acabou_mc._visible=true; _root.balaoRes_mc._visible=false; } }else{ _root.resultado_txt.textColor=0xFF0000; _root.resultado_txt.text="Errado, tenta\noutra vez"; _root.sons("errado2.wav"); } } A.3.2.5 Botão “Seguinte” on(release){ _root.next_btn._visible=false; _root.balaoRes_mc._visible=false; _root.true_btn.enabled=true; _root.false_btn.enabled=true; if(inc<=12){ expressoes[pergunta]._visible=false; //gerar aleatoriamente a pergunta seguinte _root.gerarAleatorio(); expressoes[pergunta]._visible=true; _root.resultado_txt._visible=false; }else{ _root.next_btn._visible=false; 69 Apêndice A – Código ActionScript } } A.4 Jogo das Fracções A.4.1 Página Inicial A.4.1.1 Botão “Menu” on(release){ loadMovie("./paginaPrincipal.swf",_root) } A.4.1.2 Botão “Fácil” on (release) { loadMovie("pizzaFacil.swf", _root); } A.4.1.3 Botão “Médio” on (release) { loadMovie("pizzaMedio.swf", _root); } A.4.1.4 Botão “Difícil” on (release) { loadMovie("pizzaDificil.swf", _root); } 70 Apêndice A – Código ActionScript A.4.2 Fácil A.4.2.1 Camada de acções numerador_txt._visible=false; denominador_txt._visible=false; var contBarriga:Number=2; var contled:Number=1; var contAnim1:Number=0; var aux:Number=0; var nmr:Number=0; //gerar aleatóriamente a primeira pergunta gerarAleatorio(); _root.piza_mc.gotoAndStop(nmr); _root.verifica_mc.gotoAndStop(1); _root.next_mc.gotoAndStop(1); _root.corrig_mc.gotoAndStop(1); _root.corrig_mc._visible=false; var numerador:String; var denominador:String; var resultado:String; resultado=""; numerador=""; denominador=""; _global.op=0; var valorPizza:Number=0; _root.verifica_mc.enabled=false; _root.next_mc.enabled=false; 71 Apêndice A – Código ActionScript function gerarAleatorio(){ //para nao repetir as operações nmr=random(9); while (nmr == aux || nmr==0) { nmr=random(9); } aux = nmr; } function sons(s:String){ var som:Sound= new Sound(); som.attachSound(s); som.start(); } //Função utilizada nos botoes dos numeros para inserir o numero nos quadrados function botaoNumero(c:String){ if (op==1) { numerador_txt._visible = true; numerador =c; _root.pisca1_mc.gotoAndPlay(10); _root.pisca1_mc.stop(); }else if (op==2) { denominador_txt._visible = true; denominador = c; _root.pisca2_mc.gotoAndPlay(10); _root.pisca2_mc.stop(); } if (numerador.length!= 0 && denominador.length != 0 && op !=0){ //o op !=0 é para não deixar o verifica piscar depois de acertar ou errar _root.verifica_mc.enabled=true; _root.verifica_mc.gotoAndPlay(1); } } 72 Apêndice A – Código ActionScript A.4.2.2 Botão “Início” on (release) { loadMovie("inicioPizza.swf", _root); } A.4.2.3 Clipe de filme “pisca1” onClipEvent (load) { stop(); } on (release) { if(_root.denominador_txt.length==0){ _root.pisca2_mc.gotoAndStop(1); } gotoAndPlay(1); _global.op=1; _root.resultado="";//para se errar ao clicar no quadrado para inserir de novo apagar o que aparece no resultado } on(press){ //função de reprodução do som passado com parametro _root.sons("clique.wav"); } A.4.2.4 Clipe de filme “pisca2” onClipEvent (load) { stop(); } on (release) { gotoAndPlay(1); if(_root.numerador_txt.length==0){ _root.pisca1_mc.gotoAndStop(1); 73 Apêndice A – Código ActionScript } _global.op=2; _root.resultado=""; } on(press){ //função de reprodução do som passado com parametro _root.sons("clique.wav"); } A.4.2.5 Clipe de filme “Corrigir” on(release){ _root.divis_mc._visible=true; _root.resultado=""; _root.pisca1_mc._visible=true; _root.pisca2_mc._visible=true; _root.corrig_mc._visible=false; } on(press){ //função de reprodução do som passado com parametro _root.sons("beepTecla.wav"); } A.4.2.6 Botão “1,2,3,4,5,6,7,8,9,0” on(release){//evento do botão número 1 _root.botaoNumero("1"); } Nota: Este segmento de código é semelhante para todos os botões do telemóvel, modificando somente na função botaoNumero(“[número do botão]”) a string que contém o número correspondente ao botão. 74 Apêndice A – Código ActionScript A.4.2.7 Clipe de filme “” on(press){ //função de reprodução do som passado com parametro _root.sons("beepTecla.wav"); } on (release) { _root.divis_mc._visible=false; _root.pisca1_mc._visible=false; _root.pisca2_mc._visible=false; _root.denominador_txt._visible=false; _root.numerador_txt._visible=false; _root.verifica_mc.enabled=false; _root.verifica_mc.gotoAndStop(1); var res=_root.numerador/_root.denominador; if(res==_root.valorPizza){ _root.resultado="Acertou\nPasse à fracção\nseguinte"; _root.next_mc.enabled=true; _root.next_mc.gotoAndPlay(1); _global.op=0;//para caso clique em algum numero não deixar piscar o botao acertar _root.sons("toketlmCerto.wav"); //**animacoes** _root.contled++;//incrementar os leds _root.led_mc.gotoAndStop(_root.contled); if(_root.contBarriga==2){//incrementar a comida barriga _root.barrig_mc.gotoAndPlay(_root.contBarriga); _root.contBarriga=41; }else{ _root.barrig_mc.gotoAndPlay(_root.contBarriga); _root.contBarriga+=38; } _root.animacao_mc.gotoAndPlay(2); 75 da Apêndice A – Código ActionScript //********** }else{ _root.resultado="ERROU\n"+_root.numerador+mbchr(247)+_root.deno minador+"="+res+"\n tente outra vez"; _root.pisca1_mc.gotoAndStop(1); _root.pisca2_mc.gotoAndStop(1); _root.numerador=""; _root.denominador=""; _global.op=0;//para não inserir no quadrado seleccionado anteriormente sem clicar _root.corrig_mc._visible=true; _root.corrig_mc.gotoAndPlay(1); _root.next_mc.enabled=false; _root.sons("errado2.wav"); } } A.4.2.8 Clipe de filme “” on(press){ //função de reprodução do som passado com parametro _root.sons("beepTecla.wav"); } on (release) { _root.next_mc.enabled=false; _root.next_mc.gotoAndStop(1); if(_root.contled <= 19){ _root.gerarAleatorio(); _root.piza_mc.gotoAndStop(_root.nmr); _root.pisca1_mc.gotoAndStop(1); _root.pisca2_mc.gotoAndStop(1); _root.resultado=""; _root.denominador_txt._visible=false; _root.numerador_txt._visible=false; _root.numerador=""; 76 Apêndice A – Código ActionScript _root.denominador=""; _global.op=0; _root.divis_mc._visible=true; _root.pisca1_mc._visible=true; _root.pisca2_mc._visible=true; _root.corrig_mc._visible=false; }else{ _root.piza_mc._visible=false; _root.denominador_txt._visible=false; _root.numerador_txt._visible=false; _root.divis_mc._visible=false; _root.pisca1_mc._visible=false; _root.pisca2_mc._visible=false; _root.resultado="Parabéns\nAcabaste\no jogo"; _root.num0_btn.enabled=false; _root.num1_btn.enabled=false; _root.num2_btn.enabled=false; _root.num3_btn.enabled=false; _root.num4_btn.enabled=false; _root.num5_btn.enabled=false; _root.num6_btn.enabled=false; _root.num7_btn.enabled=false; _root.num8_btn.enabled=false; _root.num9_btn.enabled=false; _root.verifica_mc.enabled=false; } } A.4.3 Médio A.4.3.1 Camada de acções var valorPizza:Number=0; 77 Apêndice A – Código ActionScript _global.op=0; numerador_txt._visible=false; denominador_txt._visible=false; _root.piza1_mc._visible=false; _root.piza2_mc._visible=false; _root.piza3_mc._visible=false; var contBarriga:Number=2; var contled:Number=1; var contAnim1:Number=0; var nmrs1:Array=new Array(0,1,0.75,0.5,0.25);//os zeros nao vao servir de nada apenas estao so para que os numeros comecem no indice 1 var nmrs2:Array=new Array(0,1,0.833,0.667,0.5,0.333,0.167); var ); nmrs3:Array=new Array(0,1,0.875,0.75,0.625,0.5,0.375,0.25,0.125 var nmr:Number=0; var aux:Number=0; var numPizza:Number=gerarAleatorio(3); if(numPizza==0){ _root.piza1_mc._visible=true; nmr=random(5); if(nmr==0){ nmr=1; _root.piza1_mc.gotoAndStop(nmr); valorPizza=nmrs1[nmr]; }else{ _root.piza1_mc.gotoAndStop(nmr); valorPizza=nmrs1[nmr]; } }else if(numPizza==1){ _root.piza2_mc._visible=true; nmr=random(7); if(nmr==0){ 78 Apêndice A – Código ActionScript nmr=1; _root.piza2_mc.gotoAndStop(nmr); valorPizza=nmrs2[nmr]; }else{ _root.piza2_mc.gotoAndStop(nmr); valorPizza=nmrs2[nmr]; } }else if(numPizza==2){ _root.piza3_mc._visible=true; nmr=random(9); if(nmr==0){ nmr=1; _root.piza3_mc.gotoAndStop(nmr); valorPizza=nmrs3[nmr]; }else{ _root.piza3_mc.gotoAndStop(nmr); valorPizza=nmrs3[nmr]; } } _root.verifica_mc.gotoAndStop(1); _root.next_mc.gotoAndStop(1); _root.corrig_mc.gotoAndStop(1); _root.corrig_mc._visible=false; var numerador:String; var denominador:String; var resultado:String; resultado=""; numerador=""; denominador=""; _root.verifica_mc.enabled=false; _root.next_mc.enabled=false; function gerarAleatorio(p:Number):Number{ //para nao repetir as operações var questao:Number; questao=random(p); 79 Apêndice A – Código ActionScript while (questao == aux) { questao=random(p); } aux = questao; return questao; } function sons(s:String){ var som:Sound= new Sound(); som.attachSound(s); som.start(); } //Função utilizada nos botoes dos numeros para inserir o numero nos quadrados function botaoNumero(c:String){ if (op==1) { numerador_txt._visible = true; numerador = c; _root.pisca1_mc.gotoAndPlay(10); _root.pisca1_mc.stop(); } else if (op==2) { denominador_txt._visible = true; denominador = c; _root.pisca2_mc.gotoAndPlay(10); _root.pisca2_mc.stop(); } if (numerador.length!= 0 && denominador.length != 0 && op !=0){ //o op !=0 é para não deixar o verifica piscar depois de acertar ou errar _root.verifica_mc.enabled=true; _root.verifica_mc.gotoAndPlay(1); } } 80 Apêndice A – Código ActionScript A.4.3.2 Botão “Início” on (release) { loadMovie("inicioPizza.swf", _root); } A.4.3.3 Clipe de filme “pisca1” onClipEvent (load) { stop(); } on(press){ _root.sons("clique.wav"); } on (release) { if(_root.denominador_txt.length==0){ _root.pisca2_mc.gotoAndStop(1); } gotoAndPlay(1); _global.op=1; _root.resultado="";//para se errar ao clicar no quadrado para inserir de novo apagar o que aparece no resultado A.4.3.4 Clipe de filme “pisca2” onClipEvent (load) { stop(); } on(press){ _root.sons("clique.wav"); } on (release) { gotoAndPlay(1); if(_root.numerador_txt.length==0){ _root.pisca1_mc.gotoAndStop(1); 81 Apêndice A – Código ActionScript } _global.op=2; _root.resultado=""; } A.4.3.5 Clipe de filme “Corrigir” on(press){ //função de reprodução do som passado como parametro _root.sons("beepTecla.wav"); } on(release){ _root.divis_mc._visible=true; _root.resultado=""; _root.pisca1_mc._visible=true; _root.pisca2_mc._visible=true; _root.corrig_mc._visible=false; } A.4.3.6 Botão “1,2,3,4,5,6,7,8,9,0” on(release){//evento do botão número 1 _root.botaoNumero("1"); } Nota: Este segmento de código é semelhante para todos os botões do telemóvel, modificando somente na função botaoNumero(“[número do botão]”) a string que contém o número correspondente ao botão. A.4.3.7 Clipe de filme “” on(press){ //função de reprodução do som passado como parametro _root.sons("beepTecla.wav"); } 82 Apêndice A – Código ActionScript on (release) { _root.divis_mc._visible=false; _root.pisca1_mc._visible=false; _root.pisca2_mc._visible=false; _root.denominador_txt._visible=false; _root.numerador_txt._visible=false; _root.verifica_mc.enabled=false; _root.verifica_mc.gotoAndStop(1); var res=_root.numerador/_root.denominador; //retirar casas decimais para ficar so com3 casas decimais, para cumprir a igualdade a abaixo res*=1000; res= Math.round(res); res/=1000; //******** if(res==_root.valorPizza){ _root.resultado="Acertou\nPasse à fracção\nseguinte"; _root.sons("toketlmCerto.wav"); _root.next_mc.enabled=true; _root.next_mc.gotoAndPlay(1); _global.op=0;//para caso clique em algum numero não deixar piscar o botao acertar //**animacoes** _root.contled++;//incrementar os leds _root.led_mc.gotoAndStop(_root.contled); if(_root.contBarriga==2){//incrementar a comida barriga _root.barrig_mc.gotoAndPlay(_root.contBarriga); _root.contBarriga=41; }else{ _root.barrig_mc.gotoAndPlay(_root.contBarriga); _root.contBarriga+=38; } _root.animacao_mc.gotoAndPlay(2); //********** 83 da Apêndice A – Código ActionScript }else{ _root.resultado="ERROU\n"+_root.numerador+mbchr(247)+_root.deno minador+"="+res+"\n tente outra vez"; _root.sons("errado2.wav"); _root.pisca1_mc.gotoAndStop(1); _root.pisca2_mc.gotoAndStop(1); _root.numerador=""; _root.denominador=""; _global.op=0;//para não inserir no quadrado seleccionado anteriormente sem clicar _root.corrig_mc._visible=true; _root.corrig_mc.gotoAndPlay(1); _root.next_mc.enabled=false; } } A.4.3.8 Clipe de filme “” on(press){ //função de reprodução do som passado como parametro _root.sons("beepTecla.wav"); } on (release) { _root.next_mc.enabled=false; _root.next_mc.gotoAndStop(1); if(_root.contled <= 19){ _root.numPizza=_root.gerarAleatorio(3); if(_root.numPizza==0){ _root.piza1_mc._visible=true; _root.piza2_mc._visible=false; _root.piza3_mc._visible=false; _root.nmr=random(5); if(_root.nmr==0){ _root.nmr=1; _root.piza1_mc.gotoAndStop(_root.nmr); _root.valorPizza=_root.nmrs1[_root.nmr]; }else{ 84 Apêndice A – Código ActionScript _root.piza1_mc.gotoAndStop(_root.nmr); _root.valorPizza=_root.nmrs1[_root.nmr]; } }else if(_root.numPizza==1){ _root.piza1_mc._visible=false; _root.piza3_mc._visible=false; _root.piza2_mc._visible=true; _root.nmr=random(7); if(_root.nmr==0){ _root.nmr=1; _root.piza2_mc.gotoAndStop(_root.nmr); _root.valorPizza=_root.nmrs2[_root.nmr]; }else{ _root.piza2_mc.gotoAndStop(_root.nmr); _root.valorPizza=_root.nmrs2[_root.nmr]; } }else{ _root.piza1_mc._visible=false; _root.piza2_mc._visible=false; _root.piza3_mc._visible=true; _root.nmr=random(9); if(_root.nmr==0){ _root.nmr=1; _root.piza3_mc.gotoAndStop(_root.nmr); _root.valorPizza=_root.nmrs3[_root.nmr]; }else{ _root.piza3_mc.gotoAndStop(_root.nmr); _root.valorPizza=_root.nmrs3[_root.nmr]; } } _root.pisca1_mc.gotoAndStop(1); _root.pisca2_mc.gotoAndStop(1); _root.resultado=""; _root.denominador_txt._visible=false; _root.numerador_txt._visible=false; _root.numerador=""; _root.denominador=""; 85 Apêndice A – Código ActionScript _global.op=0; _root.divis_mc._visible=true; _root.pisca1_mc._visible=true; _root.pisca2_mc._visible=true; _root.corrig_mc._visible=false; }else{ _root.piza1_mc._visible=false; _root.piza2_mc._visible=false; _root.piza3_mc._visible=false; _root.denominador_txt._visible=false; _root.numerador_txt._visible=false; _root.divis_mc._visible=false; _root.pisca1_mc._visible=false; _root.pisca2_mc._visible=false; _root.resultado="Parabéns\nAcabaste\no jogo"; _root.num0_btn.enabled=false; _root.num1_btn.enabled=false; _root.num2_btn.enabled=false; _root.num3_btn.enabled=false; _root.num4_btn.enabled=false; _root.num5_btn.enabled=false; _root.num6_btn.enabled=false; _root.num7_btn.enabled=false; _root.num8_btn.enabled=false; _root.num9_btn.enabled=false; _root.verifica_mc.enabled=false; } } A.4.4 Difícil A.4.4.1 Camada de acções numerador_txt._visible=false; 86 Apêndice A – Código ActionScript denominador_txt._visible=false; var contBarriga:Number=2; var contled:Number=1; var contAnim1:Number=0; var aux1:Number=0; var aux2:Number=0; var nmr:Number=gerarAleatorio1(9); var nmr2:Number=gerarAleatorio2(9); _root.piza_mc.gotoAndStop(nmr); _root.piza2_mc.gotoAndStop(nmr2); _root.verifica_mc.gotoAndStop(1); _root.next_mc.gotoAndStop(1); _root.corrig_mc.gotoAndStop(1); _root.corrig_mc._visible=false; var numerador:String; var denominador:String; var resultado:String; resultado=""; numerador=""; denominador=""; _global.op=0; var valorPizza:Number=0; var valorPizza2:Number=0; _root.verifica_mc.enabled=false; _root.next_mc.enabled=false; function sons(s:String){ var som:Sound= new Sound(); som.attachSound(s); som.start(); } 87 Apêndice A – Código ActionScript function gerarAleatorio1(p:Number):Number{ //para nao repetir as operações var questao:Number; questao=random(p); while (questao == aux1 || questao==0) { questao=random(p); } aux1 = questao; return questao; } function gerarAleatorio2(p:Number):Number{ var questao:Number; questao=random(p); while (questao == aux2 || questao==0) { questao=random(p); } aux2 = questao; return questao; } //Função utilizada nos botoes dos numeros para inserir o numero nos quadrados function botaoNumero(c:String){ if (op==1) { if (numerador.length <2){ numerador_txt._visible = true; numerador +=c; _root.pisca1_mc.gotoAndPlay(10); _root.pisca1_mc.stop(); } } else if (op==2) { if(denominador.length <2){ denominador_txt._visible = true; denominador += c; _root.pisca2_mc.gotoAndPlay(10); _root.pisca2_mc.stop(); } 88 Apêndice A – Código ActionScript } if (numerador.length!= 0 && denominador.length != 0 && op !=0){ //o op !=0 é para não deixar o verifica piscar depois de acertar ou errar _root.verifica_mc.enabled=true; _root.verifica_mc.gotoAndPlay(1); } } A.4.4.2 Botão “Início” on (release) { loadMovie("inicioPizza.swf", _root); } A.4.4.3 Clipe de filme “pisca1” onClipEvent (load) { stop(); } on(press){ _root.sons("clique.wav"); } on (release) { if(_root.denominador_txt.length==0){ _root.pisca2_mc.gotoAndStop(1); } gotoAndPlay(1); _global.op=1; _root.resultado="";//para se errar ao clicar no quadrado para inserir de novo apagar o que aparece no resultado } 89 Apêndice A – Código ActionScript A.4.4.4 Clipe de filme “pisca2” onClipEvent (load) { stop(); } on(press){ _root.sons("clique.wav"); } on (release) { gotoAndPlay(1); if(_root.numerador_txt.length==0){ _root.pisca1_mc.gotoAndStop(1); } _global.op=2; _root.resultado=""; } A.4.4.5 Clipe de filme “Corrigir” on(press){ _root.sons("beepTecla.wav"); } on(release){ _root.divis_mc._visible=true; _root.resultado=""; _root.pisca1_mc._visible=true; _root.pisca2_mc._visible=true; _root.corrig_mc._visible=false; } A.4.4.6 Botão “1,2,3,4,5,6,7,8,9,0” on(release){//evento do botão número 1 _root.botaoNumero("1"); } 90 Apêndice A – Código ActionScript Nota: Este segmento de código é semelhante para todos os botões do telemóvel, modificando somente na função botaoNumero(“[número do botão]”) a string que contém o número correspondente ao botão. A.4.4.7 Clipe de filme “” on(press){ _root.sons("beepTecla.wav"); } on (release) { _root.divis_mc._visible=false; _root.pisca1_mc._visible=false; _root.pisca2_mc._visible=false; _root.denominador_txt._visible=false; _root.numerador_txt._visible=false; _root.verifica_mc.enabled=false; _root.verifica_mc.gotoAndStop(1); var res=_root.numerador/_root.denominador; var vp=_root.valorPizza+_root.valorPizza2; if(res==vp){ _root.resultado="Acertou\nPasse à fracção\nseguinte"; _root.sons("toketlmCerto.wav"); _root.next_mc.enabled=true; _root.next_mc.gotoAndPlay(1); _global.op=0;//para caso clique em algum numero não deixar piscar o botao acertar //**animacoes** _root.contled++;//incrementar os leds _root.led_mc.gotoAndStop(_root.contled); if(_root.contBarriga==2){//incrementar a comida barriga _root.barrig_mc.gotoAndPlay(_root.contBarriga); _root.contBarriga=41; }else{ 91 da Apêndice A – Código ActionScript _root.barrig_mc.gotoAndPlay(_root.contBarriga); _root.contBarriga+=38; } if(_root.contAnim1==0){//fazer a animação do troca tintas a comer as fatias _root.contAnim1++; _root.animacao_mc.gotoAndPlay(2); }else if(_root.contAnim1==1){ _root.animacao_mc.gotoAndPlay(31); _root.contAnim1=0; } //********** }else{ _root.resultado="ERROU\n"+_root.numerador+mbchr(247)+_root.deno minador+"="+res+"\n tente outra vez"; _root.sons("errado2.wav"); _root.pisca1_mc.gotoAndStop(1); _root.pisca2_mc.gotoAndStop(1); _root.numerador=""; _root.denominador=""; _global.op=0;//para não inserir no quadrado seleccionado anteriormente sem clicar _root.corrig_mc._visible=true; _root.corrig_mc.gotoAndPlay(1); _root.next_mc.enabled=false; } } A.4.4.8 Clipe de filme “” on(press){ _root.sons("beepTecla.wav"); } on (release) { _root.next_mc.enabled=false; _root.next_mc.gotoAndStop(1); 92 Apêndice A – Código ActionScript if(_root.contled <= 19){ var nm=_root.gerarAleatorio1(9); var nm2=_root.gerarAleatorio2(9); _root.piza_mc.gotoAndStop(nm); _root.piza2_mc.gotoAndStop(nm2); _root.pisca1_mc.gotoAndStop(1); _root.pisca2_mc.gotoAndStop(1); _root.resultado=""; _root.denominador_txt._visible=false; _root.numerador_txt._visible=false; _root.numerador=""; _root.denominador=""; _global.op=0; _root.divis_mc._visible=true; _root.pisca1_mc._visible=true; _root.pisca2_mc._visible=true; _root.corrig_mc._visible=false; }else{ _root.piza_mc._visible=false; _root.piza2_mc._visible=false; _root.denominador_txt._visible=false; _root.numerador_txt._visible=false; _root.divis_mc._visible=false; _root.pisca1_mc._visible=false; _root.pisca2_mc._visible=false; _root.resultado="Parabéns\nAcabaste\no jogo"; _root.num0_btn.enabled=false; _root.num1_btn.enabled=false; _root.num2_btn.enabled=false; _root.num3_btn.enabled=false; _root.num4_btn.enabled=false; _root.num5_btn.enabled=false; _root.num6_btn.enabled=false; _root.num7_btn.enabled=false; _root.num8_btn.enabled=false; 93 Apêndice A – Código ActionScript _root.num9_btn.enabled=false; _root.verifica_mc.enabled=false; } } A.5 Jogo da Ordenação A.5.1 Página Inicial A.5.1.1 Botão “Menu” on(release){ loadMovie("./paginaPrincipal.swf",_root) } A.5.1.2 Botão da parte 1 “Nível 1” on(release){ loadMovie("nivel1Ordenacao.swf",_root); } A.5.1.3 Botão da parte 1 “Nível 2” on(release){ loadMovie("nivel2Ordenacao.swf",_root); } A.5.1.4 Botão da parte 2 “Nível 1” on(release){ loadMovie("nivel3Ordenacao.swf",_root); 94 Apêndice A – Código ActionScript } A.5.1.5 Botão da parte 2 “Nível 2” on(release){ loadMovie("nivel4Ordenacao.swf",_root); } A.5.2 Parte 1 Nível 1 A.5.2.1 Camada de acções _root.end_mc._visible=false; _root.moto_mc.gotoAndStop(2); _root.seguinte_btn._visible=false; var verifica:Array=new Array();//array para guardar o valor 1 ou zero de cada numero se foi ordenado ou não para se todos estiverem ordenados montar a mota var mostra:Boolean=false; var monta:Number=2; _root.fundores_mc._visible=false; _root.resultado_txt._visible=false; var resultado:String=""; var pontuacao:Number=0; var pontuacaoAux:Number=0; var cont:Number=0; var numTentFalha:Number=0; var inc:Number=1; var expressao:Array=new valores a ordenar Array();//array das expressao[0]=_root.prg1_mc.pc11_mc.num1_txt; expressao[1]=_root.prg1_mc.pc21_mc.num2_txt; expressao[2]=_root.prg1_mc.pc31_mc.num3_txt; expressao[3]=_root.prg1_mc.pc41_mc.num4_txt; 95 caixas de texto dos Apêndice A – Código ActionScript expressao[4]=_root.prg1_mc.pc51_mc.num5_txt; expressao[5]=_root.prg1_mc.pc61_mc.num6_txt; expressao[6]=_root.prg1_mc.pc71_mc.num7_txt; expressao[7]=_root.prg1_mc.pc81_mc.num8_txt; var res1:Array=new Array(50,100,150,200,250,300,350,400);//arrays das perguntas ordenadas var res2:Array=new Array(135,150,300,400,450,500,800,900); var res3:Array=new Array(900,850,800,750,700,650,600,550); var res4:Array=new Array(728,478,325,104,75,59,28,6); var res5:Array=new Array(20,55,68,81,128,328,598,1239); var res6:Array=new Array(13,31,47,68,74,98,100,795); var res7:Array=new Array(900,850,700,650,600,450,400,234); var res8:Array=new Array(432,352,135,108,81,48,22,16); var res9:Array=new Array(39,76,83,90,95,110,123,425); var res10:Array=new Array(1250,375,125,87,86,68,33,12); var colocados:Array=new Array(); var pergunta:Number=0; var aux:Number=0; gerarAleatorio(); pergSeguinte(pergunta); var valor:Number=0; var queNumero_mc:MovieClip; function gerarAleatorio(){ //para nao repetir as operações pergunta=random(10); while (pergunta == aux) { pergunta=random(10); } aux = pergunta; } 96 Apêndice A – Código ActionScript _root.prg1_mc.pc11_mc.onPress=function() { this.startDrag(); _root.queNumero_mc=this;//variavel para guardar qual o movie clip do valor seleccionado para ordenar valor=this.num1_txt.text;//guardar o valor do numero seleccionado para comparar com os valores do array ordenado que é o colocados cont=0; _root.fundores_mc._visible=false; _root.resultado_txt._visible=false; //som clique sons("clique.wav"); }; _root.prg1_mc.pc21_mc.onPress=function() { this.startDrag(); _root.queNumero_mc=this; valor=this.num2_txt.text; cont=0; _root.fundores_mc._visible=false; _root.resultado_txt._visible=false; sons("clique.wav"); }; _root.prg1_mc.pc31_mc.onPress=function() { this.startDrag(); _root.queNumero_mc=this; valor=this.num3_txt.text; cont=0; _root.fundores_mc._visible=false; _root.resultado_txt._visible=false; sons("clique.wav"); }; _root.prg1_mc.pc41_mc.onPress=function() { this.startDrag(); _root.queNumero_mc=this; valor=this.num4_txt.text; cont=0; _root.fundores_mc._visible=false; _root.resultado_txt._visible=false; sons("clique.wav"); 97 Apêndice A – Código ActionScript }; _root.prg1_mc.pc51_mc.onPress=function() { this.startDrag(); _root.queNumero_mc=this; valor=this.num5_txt.text; cont=0; _root.fundores_mc._visible=false; _root.resultado_txt._visible=false; sons("clique.wav"); }; _root.prg1_mc.pc61_mc.onPress=function() { this.startDrag(); _root.queNumero_mc=this; valor=this.num6_txt.text; cont=0; _root.fundores_mc._visible=false; _root.resultado_txt._visible=false; sons("clique.wav"); }; _root.prg1_mc.pc71_mc.onPress=function() { this.startDrag(); _root.queNumero_mc=this; valor=this.num7_txt.text; cont=0; _root.fundores_mc._visible=false; _root.resultado_txt._visible=false; sons("clique.wav"); }; _root.prg1_mc.pc81_mc.onPress=function() { this.startDrag(); _root.queNumero_mc=this; valor=this.num8_txt.text; cont=0; _root.fundores_mc._visible=false; _root.resultado_txt._visible=false; sons("clique.wav"); }; 98 Apêndice A – Código ActionScript function detectaColisao(){ if (_root.resCresce_mc.alvoC1_mc.hitTest(_root.queNumero_mc) && _root.resCresce_mc.alvoC1_mc._visible==true){//testar a colisão do valor escolhido com o rectangulo que quer inserir if(valor==colocados[0]){//testar a inserção dos valores correctamente ordenados em que o valor é o valor escolhido para colocar e o array dos colocados com os valores ordenados _root.resCresce_mc.alvoC1_mc.gotoAndStop(2);//aparece rectangulo verde se for esse o sitio onde se deve colocar o _global.colid1=1; }else{ _root.resCresce_mc.alvoC1_mc.gotoAndStop(3);//aparece se não for esse o sitio vermelho _global.colid1=0; errou(); } }else{ _root.resCresce_mc.alvoC1_mc.gotoAndStop(1);//senao aparece o rectangulo branco normal _global.colid1=0; } if( _root.resCresce_mc.alvoC2_mc.hitTest(_root.queNumero_mc) && _root.resCresce_mc.alvoC2_mc._visible==true){ if(valor==colocados[1]){ _root.resCresce_mc.alvoC2_mc.gotoAndStop(2); _global.colid2=1; }else{ _root.resCresce_mc.alvoC2_mc.gotoAndStop(3); _global.colid2=0; errou(); } }else{ _root.resCresce_mc.alvoC2_mc.gotoAndStop(1); _global.colid2=0; } if( _root.resCresce_mc.alvoC3_mc.hitTest(_root.queNumero_mc) && _root.resCresce_mc.alvoC3_mc._visible==true){ 99 Apêndice A – Código ActionScript if(valor==colocados[2]){ _root.resCresce_mc.alvoC3_mc.gotoAndStop(2); _global.colid3=1; }else{ _root.resCresce_mc.alvoC3_mc.gotoAndStop(3); _global.colid3=0; errou(); } }else{ _root.resCresce_mc.alvoC3_mc.gotoAndStop(1); _global.colid3=0; } if( _root.resCresce_mc.alvoC4_mc.hitTest(_root.queNumero_mc) && _root.resCresce_mc.alvoC4_mc._visible==true){ if(valor==colocados[3]){ _root.resCresce_mc.alvoC4_mc.gotoAndStop(2); _global.colid4=1; }else{ _root.resCresce_mc.alvoC4_mc.gotoAndStop(3); _global.colid4=0; errou(); } }else{ _root.resCresce_mc.alvoC4_mc.gotoAndStop(1); _global.colid4=0; } if( _root.resCresce_mc.alvoC5_mc.hitTest(_root.queNumero_mc) && _root.resCresce_mc.alvoC5_mc._visible==true){ if(valor==colocados[4]){ _root.resCresce_mc.alvoC5_mc.gotoAndStop(2); _global.colid5=1; }else{ _root.resCresce_mc.alvoC5_mc.gotoAndStop(3); _global.colid5=0; errou(); 100 Apêndice A – Código ActionScript } }else{ _root.resCresce_mc.alvoC5_mc.gotoAndStop(1); _global.colid5=0; } if( _root.resCresce_mc.alvoC6_mc.hitTest(_root.queNumero_mc) && _root.resCresce_mc.alvoC6_mc._visible==true){ if(valor==colocados[5]){ _root.resCresce_mc.alvoC6_mc.gotoAndStop(2); _global.colid6=1; }else{ _root.resCresce_mc.alvoC6_mc.gotoAndStop(3); _global.colid6=0; errou(); } }else{ _root.resCresce_mc.alvoC6_mc.gotoAndStop(1); _global.colid6=0; } if( _root.resCresce_mc.alvoC7_mc.hitTest(_root.queNumero_mc) && _root.resCresce_mc.alvoC7_mc._visible==true){ if(valor==colocados[6]){ _root.resCresce_mc.alvoC7_mc.gotoAndStop(2); _global.colid7=1; }else{ _root.resCresce_mc.alvoC7_mc.gotoAndStop(3); _global.colid7=0; errou(); } }else{ _root.resCresce_mc.alvoC7_mc.gotoAndStop(1); _global.colid7=0; } if( _root.resCresce_mc.alvoC8_mc.hitTest(_root.queNumero_mc) && _root.resCresce_mc.alvoC8_mc._visible==true){ if(valor==colocados[7]){ _root.resCresce_mc.alvoC8_mc.gotoAndStop(2); 101 Apêndice A – Código ActionScript _global.colid8=1; }else{ _root.resCresce_mc.alvoC8_mc.gotoAndStop(3); _global.colid8=0; errou(); } }else{ _root.resCresce_mc.alvoC8_mc.gotoAndStop(1); _global.colid8=0; } } setInterval(detectaColisao,10); _root.prg1_mc.pc11_mc.onRelease=function() { this.stopDrag(); if(_global.colid1==1){//mediante o valor que tiver colidido do rectangulo se o valor da variavel "valor" coincidir com um dos valores do array colocados será colocado no rectangulo correspondente this._x=1;//através das coordenadas do rectangulo this._y=103; verifica[0]=1;//actualiza-se o array de uns e zeros dos valores preenchidos para guardar se e quais os valores que ja foram ordenados acertou(); _root.prg1_mc.pc11_mc.enabled=false;//não numero depois de colocado _root.resCresce_mc.alvoC1_mc._visible=false; }else if(_global.colid2==1){ this._x=98; this._y=103; verifica[0]=1; acertou(); _root.prg1_mc.pc11_mc.enabled=false; _root.resCresce_mc.alvoC2_mc._visible=false; }else if(_global.colid3==1){ this._x=194; this._y=103; verifica[0]=1; 102 arrastar o Apêndice A – Código ActionScript acertou(); _root.prg1_mc.pc11_mc.enabled=false; _root.resCresce_mc.alvoC3_mc._visible=false; }else if(_global.colid4==1){ this._x=292; this._y=103; verifica[0]=1; acertou(); _root.prg1_mc.pc11_mc.enabled=false; _root.resCresce_mc.alvoC4_mc._visible=false; }else if(_global.colid5==1){ this._x=387; this._y=103; verifica[0]=1; acertou(); _root.prg1_mc.pc11_mc.enabled=false; _root.resCresce_mc.alvoC5_mc._visible=false; }else if(_global.colid6==1){ this._x=484; this._y=103; verifica[0]=1; acertou(); _root.prg1_mc.pc11_mc.enabled=false; _root.resCresce_mc.alvoC6_mc._visible=false; }else if(_global.colid7==1){ this._x=579; this._y=103; verifica[0]=1; acertou(); _root.prg1_mc.pc11_mc.enabled=false; _root.resCresce_mc.alvoC7_mc._visible=false; }else if(_global.colid8==1){ this._x=677; this._y=103; verifica[0]=1; acertou(); _root.prg1_mc.pc11_mc.enabled=false; _root.resCresce_mc.alvoC8_mc._visible=false; 103 Apêndice A – Código ActionScript }else{ this._x=0; this._y=0; verifica[0]=0; } acaba(); }; _root.prg1_mc.pc21_mc.onRelease=function() { this.stopDrag(); if(_global.colid1==1){ this._x=1; this._y=103; verifica[1]=1; acertou(); _root.prg1_mc.pc21_mc.enabled=false; _root.resCresce_mc.alvoC1_mc._visible=false; }else if(_global.colid2==1){ this._x=98; this._y=103; verifica[1]=1; acertou(); _root.prg1_mc.pc21_mc.enabled=false; _root.resCresce_mc.alvoC2_mc._visible=false; }else if(_global.colid3==1){ this._x=193; this._y=103; verifica[1]=1; acertou(); _root.prg1_mc.pc21_mc.enabled=false; _root.resCresce_mc.alvoC3_mc._visible=false; }else if(_global.colid4==1){ this._x=292; this._y=103; verifica[1]=1; acertou(); _root.prg1_mc.pc21_mc.enabled=false; _root.resCresce_mc.alvoC4_mc._visible=false; 104 Apêndice A – Código ActionScript }else if(_global.colid5==1){ this._x=387; this._y=103; verifica[1]=1; acertou(); _root.prg1_mc.pc21_mc.enabled=false; _root.resCresce_mc.alvoC5_mc._visible=false; }else if(_global.colid6==1){ this._x=484; this._y=103; verifica[1]=1; acertou(); _root.prg1_mc.pc21_mc.enabled=false; _root.resCresce_mc.alvoC6_mc._visible=false; }else if(_global.colid7==1){ this._x=579; this._y=103; verifica[1]=1; acertou(); _root.prg1_mc.pc21_mc.enabled=false; _root.resCresce_mc.alvoC7_mc._visible=false; }else if(_global.colid8==1){ this._x=677; this._y=103; verifica[1]=1; acertou(); _root.prg1_mc.pc21_mc.enabled=false; _root.resCresce_mc.alvoC8_mc._visible=false; }else{ this._x=98; this._y=0; verifica[1]=0; } acaba(); }; _root.prg1_mc.pc31_mc.onRelease=function() { this.stopDrag(); 105 Apêndice A – Código ActionScript if(_global.colid1==1){ this._x=1; this._y=103; verifica[2]=1; acertou(); _root.prg1_mc.pc31_mc.enabled=false; _root.resCresce_mc.alvoC1_mc._visible=false; }else if(_global.colid2==1){ this._x=98; this._y=103; verifica[2]=1; acertou(); _root.prg1_mc.pc31_mc.enabled=false; _root.resCresce_mc.alvoC2_mc._visible=false; }else if(_global.colid3==1){ this._x=193; this._y=103; verifica[2]=1; acertou(); _root.prg1_mc.pc31_mc.enabled=false; _root.resCresce_mc.alvoC3_mc._visible=false; }else if(_global.colid4==1){ this._x=292; this._y=103; verifica[2]=1; acertou(); _root.prg1_mc.pc31_mc.enabled=false; _root.resCresce_mc.alvoC4_mc._visible=false; }else if(_global.colid5==1){ this._x=387; this._y=103; verifica[2]=1; acertou(); _root.prg1_mc.pc31_mc.enabled=false; _root.resCresce_mc.alvoC5_mc._visible=false; }else if(_global.colid6==1){ this._x=484; this._y=103; 106 Apêndice A – Código ActionScript verifica[2]=1; acertou(); _root.prg1_mc.pc31_mc.enabled=false; _root.resCresce_mc.alvoC6_mc._visible=false; }else if(_global.colid7==1){ this._x=579; this._y=103; verifica[2]=1; acertou(); _root.prg1_mc.pc31_mc.enabled=false; _root.resCresce_mc.alvoC7_mc._visible=false; }else if(_global.colid8==1){ this._x=677; this._y=103; verifica[2]=1; acertou(); _root.prg1_mc.pc31_mc.enabled=false; _root.resCresce_mc.alvoC8_mc._visible=false; }else{ this._x=194; this._y=0; verifica[2]=0; } acaba(); }; _root.prg1_mc.pc41_mc.onRelease=function() { this.stopDrag(); if(_global.colid1==1){ this._x=1; this._y=103; verifica[3]=1; acertou(); _root.prg1_mc.pc41_mc.enabled=false; _root.resCresce_mc.alvoC1_mc._visible=false; }else if(_global.colid2==1){ this._x=98; this._y=103; 107 Apêndice A – Código ActionScript verifica[3]=1; acertou(); _root.prg1_mc.pc41_mc.enabled=false; _root.resCresce_mc.alvoC2_mc._visible=false; }else if(_global.colid3==1){ this._x=194; this._y=103; verifica[3]=1; acertou(); _root.prg1_mc.pc41_mc.enabled=false; _root.resCresce_mc.alvoC3_mc._visible=false; }else if(_global.colid4==1){ this._x=292; this._y=103; verifica[3]=1; acertou(); _root.prg1_mc.pc41_mc.enabled=false; _root.resCresce_mc.alvoC4_mc._visible=false; }else if(_global.colid5==1){ this._x=387; this._y=103; verifica[3]=1; acertou(); _root.prg1_mc.pc41_mc.enabled=false; _root.resCresce_mc.alvoC5_mc._visible=false; }else if(_global.colid6==1){ this._x=484; this._y=103; verifica[3]=1; acertou(); _root.prg1_mc.pc41_mc.enabled=false; _root.resCresce_mc.alvoC6_mc._visible=false; }else if(_global.colid7==1){ this._x=579; this._y=103; verifica[3]=1; acertou(); _root.prg1_mc.pc41_mc.enabled=false; 108 Apêndice A – Código ActionScript _root.resCresce_mc.alvoC7_mc._visible=false; }else if(_global.colid8==1){ this._x=677; this._y=103; verifica[3]=1; acertou(); _root.prg1_mc.pc41_mc.enabled=false; _root.resCresce_mc.alvoC8_mc._visible=false; }else{ this._x=292; this._y=0; verifica[3]=0; } acaba(); }; _root.prg1_mc.pc51_mc.onRelease=function() { this.stopDrag(); if(_global.colid1==1){ this._x=1; this._y=103; verifica[4]=1; acertou(); _root.prg1_mc.pc51_mc.enabled=false; _root.resCresce_mc.alvoC1_mc._visible=false; }else if(_global.colid2==1){ this._x=98; this._y=103; verifica[4]=1; acertou(); _root.prg1_mc.pc51_mc.enabled=false; _root.resCresce_mc.alvoC2_mc._visible=false; }else if(_global.colid3==1){ this._x=194; this._y=103; verifica[4]=1; acertou(); _root.prg1_mc.pc51_mc.enabled=false; 109 Apêndice A – Código ActionScript _root.resCresce_mc.alvoC3_mc._visible=false; }else if(_global.colid4==1){ this._x=292; this._y=103; verifica[4]=1; acertou(); _root.prg1_mc.pc51_mc.enabled=false; _root.resCresce_mc.alvoC4_mc._visible=false; }else if(_global.colid5==1){ this._x=387; this._y=103; verifica[4]=1; acertou(); _root.prg1_mc.pc51_mc.enabled=false; _root.resCresce_mc.alvoC5_mc._visible=false; }else if(_global.colid6==1){ this._x=484; this._y=103; verifica[4]=1; acertou(); _root.prg1_mc.pc51_mc.enabled=false; _root.resCresce_mc.alvoC6_mc._visible=false; }else if(_global.colid7==1){ this._x=579; this._y=103; verifica[4]=1; acertou(); _root.prg1_mc.pc51_mc.enabled=false; _root.resCresce_mc.alvoC7_mc._visible=false; }else if(_global.colid8==1){ this._x=677; this._y=103; verifica[4]=1; acertou(); _root.prg1_mc.pc51_mc.enabled=false; _root.resCresce_mc.alvoC8_mc._visible=false; }else{ this._x=387; 110 Apêndice A – Código ActionScript this._y=0; verifica[4]=0; } acaba(); }; _root.prg1_mc.pc61_mc.onRelease=function() { this.stopDrag(); if(_global.colid1==1){ this._x=1; this._y=103; verifica[5]=1; acertou(); _root.prg1_mc.pc61_mc.enabled=false; _root.resCresce_mc.alvoC1_mc._visible=false; }else if(_global.colid2==1){ this._x=98; this._y=103; verifica[5]=1; acertou(); _root.prg1_mc.pc61_mc.enabled=false; _root.resCresce_mc.alvoC2_mc._visible=false; }else if(_global.colid3==1){ this._x=194; this._y=103; verifica[5]=1; acertou(); _root.prg1_mc.pc61_mc.enabled=false; _root.resCresce_mc.alvoC3_mc._visible=false; }else if(_global.colid4==1){ this._x=292; this._y=103; verifica[5]=1; acertou(); _root.prg1_mc.pc61_mc.enabled=false; _root.resCresce_mc.alvoC4_mc._visible=false; }else if(_global.colid5==1){ this._x=387; 111 Apêndice A – Código ActionScript this._y=103; verifica[5]=1; acertou(); _root.prg1_mc.pc61_mc.enabled=false; _root.resCresce_mc.alvoC5_mc._visible=false; }else if(_global.colid6==1){ this._x=484; this._y=103; verifica[5]=1; acertou(); _root.prg1_mc.pc61_mc.enabled=false; _root.resCresce_mc.alvoC6_mc._visible=false; }else if(_global.colid7==1){ this._x=579; this._y=103; verifica[5]=1; acertou(); _root.prg1_mc.pc61_mc.enabled=false; _root.resCresce_mc.alvoC7_mc._visible=false; }else if(_global.colid8==1){ this._x=677; this._y=103; verifica[5]=1; acertou(); _root.prg1_mc.pc61_mc.enabled=false; _root.resCresce_mc.alvoC8_mc._visible=false; }else{ this._x=484; this._y=0; verifica[5]=0; } acaba(); }; _root.prg1_mc.pc71_mc.onRelease=function() { this.stopDrag(); if(_global.colid1==1){ this._x=1; 112 Apêndice A – Código ActionScript this._y=103; verifica[6]=1; acertou(); _root.prg1_mc.pc71_mc.enabled=false; _root.resCresce_mc.alvoC1_mc._visible=false; }else if(_global.colid2==1){ this._x=98; this._y=103; verifica[6]=1; acertou(); _root.prg1_mc.pc71_mc.enabled=false; _root.resCresce_mc.alvoC2_mc._visible=false; }else if(_global.colid3==1){ this._x=194; this._y=103; verifica[6]=1; acertou(); _root.prg1_mc.pc71_mc.enabled=false; _root.resCresce_mc.alvoC3_mc._visible=false; }else if(_global.colid4==1){ this._x=292; this._y=103; verifica[6]=1; acertou(); _root.prg1_mc.pc71_mc.enabled=false; _root.resCresce_mc.alvoC4_mc._visible=false; }else if(_global.colid5==1){ this._x=387; this._y=103; verifica[6]=1; acertou(); _root.prg1_mc.pc71_mc.enabled=false; _root.resCresce_mc.alvoC5_mc._visible=false; }else if(_global.colid6==1){ this._x=484; this._y=103; verifica[6]=1; acertou(); 113 Apêndice A – Código ActionScript _root.prg1_mc.pc71_mc.enabled=false; _root.resCresce_mc.alvoC6_mc._visible=false; }else if(_global.colid7==1){ this._x=579; this._y=103; verifica[6]=1; acertou(); _root.prg1_mc.pc71_mc.enabled=false; _root.resCresce_mc.alvoC7_mc._visible=false; }else if(_global.colid8==1){ this._x=677; this._y=103; verifica[6]=1; acertou(); _root.prg1_mc.pc71_mc.enabled=false; _root.resCresce_mc.alvoC8_mc._visible=false; }else{ this._x=579; this._y=0; verifica[6]=0; } acaba(); }; _root.prg1_mc.pc81_mc.onRelease=function() { this.stopDrag(); if(_global.colid1==1){//verifica qual é que foi o rectangulo em que o valor tocou e caso seja o rectangulo correcto mete o valor nessa posição this._x=1; this._y=103; verifica[7]=1; acertou(); _root.prg1_mc.pc81_mc.enabled=false; _root.resCresce_mc.alvoC1_mc._visible=false; }else if(_global.colid2==1){ this._x=98; this._y=103; 114 Apêndice A – Código ActionScript verifica[7]=1; acertou(); _root.prg1_mc.pc81_mc.enabled=false; _root.resCresce_mc.alvoC2_mc._visible=false; }else if(_global.colid3==1){ this._x=194; this._y=103; verifica[7]=1; acertou(); _root.prg1_mc.pc81_mc.enabled=false; _root.resCresce_mc.alvoC3_mc._visible=false; }else if(_global.colid4==1){ this._x=292; this._y=103; verifica[7]=1; acertou(); _root.prg1_mc.pc81_mc.enabled=false; _root.resCresce_mc.alvoC4_mc._visible=false; }else if(_global.colid5==1){ this._x=387; this._y=103; verifica[7]=1; acertou(); _root.prg1_mc.pc81_mc.enabled=false; _root.resCresce_mc.alvoC5_mc._visible=false; }else if(_global.colid6==1){ this._x=484; this._y=103; verifica[7]=1; acertou(); _root.prg1_mc.pc81_mc.enabled=false; _root.resCresce_mc.alvoC6_mc._visible=false; }else if(_global.colid7==1){ this._x=579; this._y=103; verifica[7]=1; acertou(); _root.prg1_mc.pc81_mc.enabled=false; 115 Apêndice A – Código ActionScript _root.resCresce_mc.alvoC7_mc._visible=false; }else if(_global.colid8==1){ this._x=677; this._y=103; verifica[7]=1; acertou(); _root.prg1_mc.pc81_mc.enabled=false; _root.resCresce_mc.alvoC8_mc._visible=false; }else{ this._x=676; this._y=0; verifica[7]=0; } acaba(); }; //verifica se os valores estao todos colocados por ordem para depois aparecer as peças da mota function acaba(){ for(var j:Number=0; j<=7; j++){ if(verifica[j]==1){ mostra=true; }else{ mostra=false; j=8; } } if(mostra){ _root.seguinte_btn._visible=true; //som certo stopAllSounds(); sons("certo.wav"); inc++; if(monta==2){//para controlar o inicio pois a animação começa em 2 para depois incrementar correctamente de 40 em 40 cada peça da moto adicionada _root.moto_mc.gotoAndPlay(monta); monta=0; monta+=40; 116 Apêndice A – Código ActionScript }else{ if(monta==360){ _root.end_mc._visible=true; if(pontuacao>=10000){ _root.moto_mc.gotoAndPlay(monta); _root.end_mc.gotoAndPlay(2); }else{ _root.moto_mc.gotoAndPlay(monta); _root.end_mc.gotoAndPlay(81); } }else{ _root.moto_mc.gotoAndPlay(monta); monta+=40; } } } } function pergSeguinte(c:Number){//função para mudar de pergunta _root.fundores_mc._visible=false; _root.resultado_txt._visible=false; //por os numeros seguintes nas coordenadas iniciais _root.prg1_mc.pc11_mc._x=0; _root.prg1_mc.pc11_mc._y=0; _root.prg1_mc.pc21_mc._x=97.5; _root.prg1_mc.pc21_mc._y=0; _root.prg1_mc.pc31_mc._x=193.5; _root.prg1_mc.pc31_mc._y=0; _root.prg1_mc.pc41_mc._x=290.4; _root.prg1_mc.pc41_mc._y=0; _root.prg1_mc.pc51_mc._x=386.4; _root.prg1_mc.pc51_mc._y=0; _root.prg1_mc.pc61_mc._x=483.4; _root.prg1_mc.pc61_mc._y=0; _root.prg1_mc.pc71_mc._x=578.5; _root.prg1_mc.pc71_mc._y=0; 117 Apêndice A – Código ActionScript _root.prg1_mc.pc81_mc._x=675.5; _root.prg1_mc.pc81_mc._y=0; _root.resCresce_mc.alvoC1_mc._visible=true; _root.resCresce_mc.alvoC2_mc._visible=true; _root.resCresce_mc.alvoC3_mc._visible=true; _root.resCresce_mc.alvoC4_mc._visible=true; _root.resCresce_mc.alvoC5_mc._visible=true; _root.resCresce_mc.alvoC6_mc._visible=true; _root.resCresce_mc.alvoC7_mc._visible=true; _root.resCresce_mc.alvoC8_mc._visible=true; _root.prg1_mc.pc11_mc.enabled=true; _root.prg1_mc.pc21_mc.enabled=true; _root.prg1_mc.pc31_mc.enabled=true; _root.prg1_mc.pc41_mc.enabled=true; _root.prg1_mc.pc51_mc.enabled=true; _root.prg1_mc.pc61_mc.enabled=true; _root.prg1_mc.pc71_mc.enabled=true; _root.prg1_mc.pc81_mc.enabled=true; for(var j:Number=0; j<=7; j++){ verifica[j]=0; } if(c==0){ expressao[0].text=400; expressao[1].text=150; expressao[2].text=300; expressao[3].text=250; expressao[4].text=200; expressao[5].text=50; expressao[6].text=100; expressao[7].text=350; colocados=res1; sinais("<"); }else if(c==1){ expressao[0].text=300; expressao[1].text=150; 118 Apêndice A – Código ActionScript expressao[2].text=400; expressao[3].text=500; expressao[4].text=450; expressao[5].text=800; expressao[6].text=900; expressao[7].text=135; colocados=res2; sinais("<"); }else if(c==2){ expressao[0].text=800; expressao[1].text=600; expressao[2].text=750; expressao[3].text=650; expressao[4].text=900; expressao[5].text=850; expressao[6].text=550; expressao[7].text=700; colocados=res3; sinais(">"); }else if(c==3){ expressao[0].text=75; expressao[1].text=104; expressao[2].text=728; expressao[3].text=28; expressao[4].text=325; expressao[5].text=6; expressao[6].text=478; expressao[7].text=59; colocados=res4; sinais(">"); }else if(c==4){ expressao[0].text=81; expressao[1].text=68; expressao[2].text=598; expressao[3].text=128; expressao[4].text=1239; expressao[5].text=328; 119 Apêndice A – Código ActionScript expressao[6].text=55; expressao[7].text=20; colocados=res5; sinais("<"); }else if(c==5){ expressao[0].text=13; expressao[1].text=74; expressao[2].text=31; expressao[3].text=795; expressao[4].text=47; expressao[5].text=68; expressao[6].text=98; expressao[7].text=100; colocados=res6; sinais("<"); }else if(c==6){ expressao[0].text=450; expressao[1].text=900; expressao[2].text=234; expressao[3].text=400; expressao[4].text=600; expressao[5].text=850; expressao[6].text=650; expressao[7].text=700; colocados=res7; sinais(">"); }else if(c==7){ expressao[0].text=22; expressao[1].text=108; expressao[2].text=81; expressao[3].text=352; expressao[4].text=16; expressao[5].text=432; expressao[6].text=135; expressao[7].text=48; colocados=res8; sinais(">"); }else if(c==8){ 120 Apêndice A – Código ActionScript expressao[0].text=110; expressao[1].text=83; expressao[2].text=123; expressao[3].text=76; expressao[4].text=425; expressao[5].text=90; expressao[6].text=39; expressao[7].text=95; colocados=res9; sinais("<"); }else if(c==9){ expressao[0].text=68; expressao[1].text=125; expressao[2].text=1250; expressao[3].text=87; expressao[4].text=375; expressao[5].text=12; expressao[6].text=33; expressao[7].text=86; colocados=res10; sinais(">"); } } function acertou(){ _root.resultado_txt._visible=true; _root.fundores_mc._visible=true; if(numTentFalha==0){ _root.resultado_txt.text="Parabéns acertaste\nà primeira "; pontuacao += 125; }else if(numTentFalha==1){ pontuacao +=100; _root.resultado_txt.text="Correcto "+numTentFalha+" vez"; }else{ 121 mas erraste\n Apêndice A – Código ActionScript _root.resultado_txt.text="Correcto "+numTentFalha+" vezes"; mas erraste\n pontuacaoAux = 125/numTentFalha; pontuacao += Math.round(pontuacaoAux); } numTentFalha=0; //som semicerto sons("semiCerto2_ordena.wav"); } function errou(){ _root.resultado_txt._visible=true; _root.fundores_mc._visible=true; if(cont==0){//deixar colidir so uma unica vez para contar uma so colisao _root.resultado_txt.text="Falhou\ntente outra vez "; numTentFalha++;//contar o numero de tentativas falahadas quando a colisao e fica vermelho cont++;//nao deixar colidir mais nenhuma vez enquanto o cont nao tornar a ser zero //som errado sons("errado2.wav"); } } function sons(s:String){ var som:Sound= new Sound(); som.attachSound(s); som.start(); } function sinais(sn:String){ _root.resCresce_mc.sinal_txt.text=sn; _root.resCresce_mc.sinal2_txt.text=sn; _root.resCresce_mc.sinal3_txt.text=sn; _root.resCresce_mc.sinal4_txt.text=sn; _root.resCresce_mc.sinal5_txt.text=sn; _root.resCresce_mc.sinal6_txt.text=sn; 122 Apêndice A – Código ActionScript _root.resCresce_mc.sinal7_txt.text=sn; if(sn==">"){ _root.titulo_txt.text="Completa (atendendo ao sinal maior do que)"; os espaços em branco os espaços em branco }else{ _root.titulo_txt.text="Completa (atendendo ao sinal menor do que)"; } } A.5.2.2 Botão “Início” on(release){ loadMovie("inicioOrdenacao.swf",_root); } A.5.2.3 Botão “Seguinte” on(release){ if(_root.inc <=10){ gerarAleatorio(); pergSeguinte(pergunta); _root.seguinte_btn._visible=false; }else{ _root.seguinte_btn._visible=false; } } A.5.3 Parte 1 Nível 2 Nota: O código deste Apêndice é semelhante ao código do Apêndice anterior (Apêndice 5.2), modificando apenas os arrays dos números a ordenar que passam a ser maiores, a animação do veículo a montar, entre outras pequenas coisas. 123 Apêndice A – Código ActionScript A.5.4 Parte 2 Nível 1 A.5.4.1 Camada de acções _root.end_mc._visible=false; _root.moto_mc.gotoAndStop(2); _root.resSomb_mc._visible=false; _root.seguinte_btn._visible=false; var verifica:Array=new Array();//array para guardar o valor 1 0u zero de cada numero se foi ordenado ou não para se todos estiverem ordenados montar a mota var mostra:Boolean=false; var monta:Number=2; _root.resultado_txt._visible=false; _root.fundores_mc._visible=false; _root.prg1_mc._visible=false; var resultado:String=""; var resultado2:String=""; var subperg:Number=0; var pontuacao:Number=0; var pontuacaoAux:Number=0; var cont:Number=0; var numTentFalha:Number=0; var inc:Number=1; var expressao:Array=new valores a ordenar Array();//array das caixas de texto dos expressao[0]=_root.prg1_mc.pc11_mc.num1_txt; expressao[1]=_root.prg1_mc.pc21_mc.num2_txt; expressao[2]=_root.prg1_mc.pc31_mc.num3_txt; expressao[3]=_root.prg1_mc.pc41_mc.num4_txt; var res1:Array=new Array(50,100,150,200,250,300,350,400);//arrays das perguntas ordenadas var res1op1:Array=new Array(125,100,60,160);//2 var res1op2:Array=new Array(220,180,200,240);//4 124 Apêndice A – Código ActionScript var res1op3:Array=new Array(270,280,310,300);//6 var res1op4:Array=new Array(400,365,380,450);//8 var res2:Array=new Array(20,40,60,80,100,120,140,160);//+20 var res2op1:Array=new Array(30,20,10,15);//1 var res2op2:Array=new Array(50,55,60,65);//3 var res2op3:Array=new Array(90,100,110,112);//5 var res2op4:Array=new Array(138,128,140,130);//7 var res3:Array=new Array(225,200,175,150,125,100,75,50);//-25 var res3op1:Array=new Array(180,190,200,210);//2 var res3op2:Array=new Array(120,125,130,135);//5 var res3op3:Array=new Array(55,60,75,65);//7 var res3op4:Array=new Array(25,30,40,50);//8 var res4:Array=new Array(300,284,268,252,236,220,204,188);//-16 var res4op1:Array=new Array(200,224,248,284);//2 var res4op2:Array=new Array(250,252,246,238);//4 var res4op3:Array=new Array(236,234,222,227);//5 var res4op4:Array=new Array(201,190,188,184);//8 var res5:Array=new Array(68,74,80,86,92,98,104,110);//+6 var res5op1:Array=new Array(54,58,74,78);//2 var res5op2:Array=new Array(79,80,81,86);//4 var res5op3:Array=new Array(88,95,93,98);//6 var res5op4:Array=new Array(106,99,110,116);//8 var res6:Array=new Array(36,54,72,90,108,126,144,162);//+18 var res6op1:Array=new Array(10,21,32,36);//1 var res6op2:Array=new Array(38,42,54,68);//2 var res6op3:Array=new Array(98,108,118,128);//5 var res6op4:Array=new Array(126,136,138,142);//6 var res7:Array=new Array(180,171,162,153,144,135,126,117);//-9 var res7op1:Array=new Array(190,195,180,179);//1 var res7op2:Array=new Array(170,171,166,162);//3 var res7op3:Array=new Array(151,144,142,138);//5 125 Apêndice A – Código ActionScript var res7op4:Array=new Array(132,127,126,119);//7 var res8:Array=new Array(280,245,210,175,140,105,70,35);//-35 var res8op1:Array=new Array(260,250,245,240);//2 var res8op2:Array=new Array(200,195,185,175);//4 var res8op3:Array=new Array(105,95,85,75);//6 var res8op4:Array=new Array(45,35,25,20);//8 var res9:Array=new Array(62,124,186,248,310,372,434,496);//+62 var res9op1:Array=new Array(136,148,166,186);//3 var res9op2:Array=new Array(242,278,310,327);//5 var res9op3:Array=new Array(434,467,489,354);//7 var res9op4:Array=new Array(490,496,510,512);//8 var res10:Array=new Array(513,500,487,474,461,448,435,422);//-13 var res10op1:Array=new Array(515,513,510,505);//1 var res10op2:Array=new Array(487,478,476,480);//3 var res10op3:Array=new Array(469,465,461,450);//5 var res10op4:Array=new Array(445,440,436,435);//7 var colocados:Array=new Array(); var pergunta:Number=0; var aux:Number=0; gerarAleatorio(); pergSeguinte(pergunta); var valor:Number=0; var queNumero_mc:MovieClip; function gerarAleatorio(){ //para nao repetir as operações pergunta=random(10); while (pergunta == aux) { pergunta=random(10); } aux = pergunta; 126 Apêndice A – Código ActionScript } _root.prg1_mc.pc11_mc.onPress=function() { this.startDrag(); _root.queNumero_mc=this;//variavel para guardar qual o movie clip do valor seleccionado para ordenar valor=this.num1_txt.text;//guardar o valor do numero seleccionado para comparar com os valores do array ordenado que é o colocados _root.fundores_mc._visible=false; _root.resultado_txt._visible=false; cont=0; //som clique sons("clique.wav"); }; _root.prg1_mc.pc21_mc.onPress=function() { this.startDrag(); _root.queNumero_mc=this; valor=this.num2_txt.text; _root.fundores_mc._visible=false; _root.resultado_txt._visible=false; cont=0; sons("clique.wav"); }; _root.prg1_mc.pc31_mc.onPress=function() { this.startDrag(); _root.queNumero_mc=this; valor=this.num3_txt.text; _root.fundores_mc._visible=false; _root.resultado_txt._visible=false; cont=0; sons("clique.wav"); }; _root.prg1_mc.pc41_mc.onPress=function() { this.startDrag(); _root.queNumero_mc=this; valor=this.num4_txt.text; _root.fundores_mc._visible=false; _root.resultado_txt._visible=false; 127 Apêndice A – Código ActionScript cont=0; sons("clique.wav"); }; function errou(){ _root.resultado_txt._visible=true; _root.fundores_mc._visible=true; if(cont==0){//deixar colidir so uma unica vez para contar uma so colisao _root.resultado_txt.text="Falhou\ntente outra vez "; numTentFalha++;//contar o numero de tentativas falahadas quando a colisao e fica vermelho cont++;//nao deixar colidir mais nenhuma vez enquanto o cont nao tornar a ser zero sons("errado2.wav"); } } function acertou(){ _root.resultado_txt._visible=true; _root.fundores_mc._visible=true; if(numTentFalha==0){ _root.resultado_txt.text="Parabéns acertaste\nà primeira "; pontuacao += 125; }else if(numTentFalha==1){ pontuacao +=100; _root.resultado_txt.text="Correcto "+numTentFalha+" vez"; mas erraste\n mas erraste\n }else{ _root.resultado_txt.text="Correcto "+numTentFalha+" vezes"; pontuacaoAux = 125/numTentFalha; pontuacao += Math.round(pontuacaoAux); } sons("semiCerto2_ordena.wav"); } 128 Apêndice A – Código ActionScript function detectaColisao(){ if (_root.resCresce_mc.alvoC1_mc.hitTest(_root.queNumero_mc) && _root.resCresce_mc.alvoC1_mc._visible==true){//testar a colisão do valor escolhido com o rectangulo que quer inserir if(valor==colocados[0]){//testar a inserção dos valores correctamente ordenados em que o valor é o valor escolhido para colocar e o array dos colocados com os valores ordenados //aparece colocar o _root.resCresce_mc.alvoC1_mc.gotoAndStop(2); rectangulo verde se for esse o sitio onde se deve _global.colid1=1; }else if(_root.resCresce_mc.resp1_txt.length nao mudar de cor nos rectangulos que ja têm numeros !=0){//para _root.resCresce_mc.alvoC1_mc.gotoAndStop(1); _global.colid1=0; }else{ _root.resCresce_mc.alvoC1_mc.gotoAndStop(3);//aparece se não for esse o sitio vermelho _global.colid1=0; errou(); } }else{ _root.resCresce_mc.alvoC1_mc.gotoAndStop(1);//senao aparece o rectangulo branco normal _global.colid1=0; } if( _root.resCresce_mc.alvoC2_mc.hitTest(_root.queNumero_mc) && _root.resCresce_mc.alvoC2_mc._visible==true){//_root.resCresce_mc.al voC2_mc._visible==true --> isto é para não aparecer o resultado se errou ou acertou quando o rectangulo onde ele detecta a colisao está invisivel if(valor==colocados[1]){ _root.resCresce_mc.alvoC2_mc.gotoAndStop(2); _global.colid2=1; }else if(_root.resCresce_mc.resp2_txt.length !=0){ _root.resCresce_mc.alvoC2_mc.gotoAndStop(1); _global.colid2=0; }else{ _root.resCresce_mc.alvoC2_mc.gotoAndStop(3); 129 Apêndice A – Código ActionScript _global.colid2=0; errou(); } }else{ _root.resCresce_mc.alvoC2_mc.gotoAndStop(1); _global.colid2=0; } if(_root.resCresce_mc.alvoC3_mc.hitTest(_root.queNumero_mc) _root.resCresce_mc.alvoC3_mc._visible==true){ && if(valor==colocados[2]){ _root.resCresce_mc.alvoC3_mc.gotoAndStop(2); _global.colid3=1; }else if(_root.resCresce_mc.resp3_txt.length !=0){ _root.resCresce_mc.alvoC3_mc.gotoAndStop(1); _global.colid3=0; }else{ _root.resCresce_mc.alvoC3_mc.gotoAndStop(3); _global.colid3=0; errou(); } }else{ _root.resCresce_mc.alvoC3_mc.gotoAndStop(1); _global.colid3=0; } if(_root.resCresce_mc.alvoC4_mc.hitTest(_root.queNumero_mc) _root.resCresce_mc.alvoC4_mc._visible==true){ if(valor==colocados[3]){ _root.resCresce_mc.alvoC4_mc.gotoAndStop(2); _global.colid4=1; }else if(_root.resCresce_mc.resp4_txt.length !=0){ _root.resCresce_mc.alvoC4_mc.gotoAndStop(1); _global.colid4=0; }else{ _root.resCresce_mc.alvoC4_mc.gotoAndStop(3); _global.colid4=0; 130 && Apêndice A – Código ActionScript errou(); } }else{ _root.resCresce_mc.alvoC4_mc.gotoAndStop(1); _global.colid4=0; } if(_root.resCresce_mc.alvoC5_mc.hitTest(_root.queNumero_mc) _root.resCresce_mc.alvoC5_mc._visible==true){ && if(valor==colocados[4]){ _root.resCresce_mc.alvoC5_mc.gotoAndStop(2); _global.colid5=1; }else if(_root.resCresce_mc.resp5_txt.length !=0){ _root.resCresce_mc.alvoC5_mc.gotoAndStop(1); _global.colid5=0; }else{ _root.resCresce_mc.alvoC5_mc.gotoAndStop(3); _global.colid5=0; errou(); } }else{ _root.resCresce_mc.alvoC5_mc.gotoAndStop(1); _global.colid5=0; } if( _root.resCresce_mc.alvoC6_mc.hitTest(_root.queNumero_mc) && _root.resCresce_mc.alvoC6_mc._visible==true){ if(valor==colocados[5]){ _root.resCresce_mc.alvoC6_mc.gotoAndStop(2); _global.colid6=1; }else if(_root.resCresce_mc.resp6_txt.length !=0){ _root.resCresce_mc.alvoC6_mc.gotoAndStop(1); _global.colid6=0; }else{ _root.resCresce_mc.alvoC6_mc.gotoAndStop(3); _global.colid6=0; errou(); } 131 Apêndice A – Código ActionScript }else{ _root.resCresce_mc.alvoC6_mc.gotoAndStop(1); _global.colid6=0; } if(_root.resCresce_mc.alvoC7_mc.hitTest(_root.queNumero_mc) _root.resCresce_mc.alvoC7_mc._visible==true){ && if(valor==colocados[6]){ _root.resCresce_mc.alvoC7_mc.gotoAndStop(2); _global.colid7=1; }else if(_root.resCresce_mc.resp7_txt.length !=0){ _root.resCresce_mc.alvoC7_mc.gotoAndStop(1); _global.colid7=0; }else{ _root.resCresce_mc.alvoC7_mc.gotoAndStop(3); _global.colid7=0; errou(); } }else{ _root.resCresce_mc.alvoC7_mc.gotoAndStop(1); _global.colid7=0; } if(_root.resCresce_mc.alvoC8_mc.hitTest(_root.queNumero_mc) _root.resCresce_mc.alvoC8_mc._visible==true){ if(valor==colocados[7]){ _root.resCresce_mc.alvoC8_mc.gotoAndStop(2); _global.colid8=1; }else if(_root.resCresce_mc.resp8_txt.length !=0){ _root.resCresce_mc.alvoC8_mc.gotoAndStop(1); _global.colid8=0; }else{ _root.resCresce_mc.alvoC8_mc.gotoAndStop(3); _global.colid8=0; errou(); } }else{ _root.resCresce_mc.alvoC8_mc.gotoAndStop(1); 132 && Apêndice A – Código ActionScript _global.colid8=0; } } setInterval(detectaColisao,10); _root.prg1_mc.pc11_mc.onRelease=function() { this.stopDrag(); if(_global.colid1==0 && _global.colid2==0 && _global.colid3==0 && _global.colid4==0 && _global.colid5==0 && _global.colid6==0 && _global.colid7==0 && _global.colid8==0){ this._x=0; this._y=0; }else{ colocaNumero(this); quadVisiveis();//para por os rectangulos que nao estavam visiveis em visiveis acertou(); } acaba(); }; _root.prg1_mc.pc21_mc.onRelease=function() { this.stopDrag(); if(_global.colid1==0 && _global.colid2==0 && _global.colid3==0 && _global.colid4==0 && _global.colid5==0 && _global.colid6==0 && _global.colid7==0 && _global.colid8==0){ this._x=98; this._y=0; }else{ colocaNumero(this); quadVisiveis(); acertou(); } acaba(); }; 133 Apêndice A – Código ActionScript _root.prg1_mc.pc31_mc.onRelease=function() { this.stopDrag(); if(_global.colid1==0 && _global.colid2==0 && _global.colid3==0 && _global.colid4==0 && _global.colid5==0 && _global.colid6==0 && _global.colid7==0 && _global.colid8==0){ this._x=194; this._y=0; }else{ colocaNumero(this); quadVisiveis(); acertou(); } acaba(); }; _root.prg1_mc.pc41_mc.onRelease=function() { this.stopDrag(); if(_global.colid1==0 && _global.colid2==0 && _global.colid3==0 && _global.colid4==0 && _global.colid5==0 && _global.colid6==0 && _global.colid7==0 && _global.colid8==0){ this._x=292; this._y=0; }else{ colocaNumero(this); quadVisiveis(); acertou(); } acaba(); }; //verifica se os valores estao todos colocados por ordem para depois aparecer as peças da mota function acaba(){ for(var j:Number=0; j<=3; j++){ if(verifica[j]==1){ mostra=true; }else{ 134 Apêndice A – Código ActionScript mostra=false; j=4; } } if(mostra){ _root.seguinte_btn._visible=true; _root.prg1_mc.pc11_mc.enabled=false; _root.prg1_mc.pc21_mc.enabled=false;//para arrastar quando acertar na expressao não deixar _root.prg1_mc.pc31_mc.enabled=false; _root.prg1_mc.pc41_mc.enabled=false; stopAllSounds(); sons("certo.wav"); inc++; if(monta==2){//para contrololar o inicio pois a animação começa em 2 para depois incrementar correctamente de 40 em 40 cada peça da moto adicionada _root.moto_mc.gotoAndPlay(monta); monta=0; monta+=40; }else{ if(monta==360){ _root.end_mc._visible=true; if(pontuacao>=5000){ _root.moto_mc.gotoAndPlay(monta); _root.end_mc.gotoAndPlay(2); }else{ _root.moto_mc.gotoAndPlay(monta); _root.end_mc.gotoAndPlay(81); } }else{ _root.moto_mc.gotoAndPlay(monta); monta+=40; } } } } 135 Apêndice A – Código ActionScript function pergSeguinte(c:Number){//função para mudar de pergunta //por os numeros seguintes nas coordenadas iniciais posicaoInicial(); _root.fundores_mc._visible=false; _root.resultado_txt._visible=false; _root.resCresce_mc.resp1_txt._visible=true; _root.resCresce_mc.resp2_txt._visible=true; _root.resCresce_mc.resp3_txt._visible=true; _root.resCresce_mc.resp4_txt._visible=true; _root.resCresce_mc.resp5_txt._visible=true; _root.resCresce_mc.resp6_txt._visible=true; _root.resCresce_mc.resp7_txt._visible=true; _root.resCresce_mc.resp8_txt._visible=true; _root.prg1_mc.pc11_mc.enabled=true; _root.prg1_mc.pc21_mc.enabled=true; _root.prg1_mc.pc31_mc.enabled=true; _root.prg1_mc.pc41_mc.enabled=true; _root.resCresce_mc.resp1_txt.text=""; _root.resCresce_mc.resp2_txt.text=""; _root.resCresce_mc.resp3_txt.text=""; _root.resCresce_mc.resp4_txt.text=""; _root.resCresce_mc.resp5_txt.text=""; _root.resCresce_mc.resp6_txt.text=""; _root.resCresce_mc.resp7_txt.text=""; _root.resCresce_mc.resp8_txt.text=""; _root.resCresce_mc.alvoC1_mc.enabled=true; _root.resCresce_mc.alvoC2_mc.enabled=true; _root.resCresce_mc.alvoC3_mc.enabled=true; _root.resCresce_mc.alvoC4_mc.enabled=true; _root.resCresce_mc.alvoC5_mc.enabled=true; _root.resCresce_mc.alvoC6_mc.enabled=true; _root.resCresce_mc.alvoC7_mc.enabled=true; _root.resCresce_mc.alvoC8_mc.enabled=true; 136 Apêndice A – Código ActionScript for(var j:Number=0; j<=3; j++){ verifica[j]=0; } if(c==0){ _root.resCresce_mc.resp1_txt.text="50"; _root.resCresce_mc.resp2_txt._visible=false; _root.resCresce_mc.resp3_txt.text="150"; _root.resCresce_mc.resp4_txt._visible=false; _root.resCresce_mc.resp5_txt.text="250"; _root.resCresce_mc.resp6_txt._visible=false; _root.resCresce_mc.resp7_txt.text="350"; _root.resCresce_mc.resp8_txt._visible=false; colocados=res1; sinais("<"); _root.incDec_mc.incDec_txt.text="+50"; }else if(c==1){ _root.resCresce_mc.resp1_txt._visible=false; _root.resCresce_mc.resp2_txt.text="40"; _root.resCresce_mc.resp3_txt._visible=false; _root.resCresce_mc.resp4_txt.text="80"; _root.resCresce_mc.resp5_txt._visible=false; _root.resCresce_mc.resp6_txt.text="120"; _root.resCresce_mc.resp7_txt._visible=false; _root.resCresce_mc.resp8_txt.text="160"; colocados=res2; sinais("<"); _root.incDec_mc.incDec_txt.text="+20"; }else if(c==2){ _root.resCresce_mc.resp1_txt.text="225"; _root.resCresce_mc.resp2_txt._visible=false; _root.resCresce_mc.resp3_txt.text="175"; _root.resCresce_mc.resp4_txt.text="150"; _root.resCresce_mc.resp5_txt._visible=false; _root.resCresce_mc.resp6_txt.text="100"; _root.resCresce_mc.resp7_txt._visible=false; 137 Apêndice A – Código ActionScript _root.resCresce_mc.resp8_txt._visible=false; colocados=res3; sinais(">"); _root.incDec_mc.incDec_txt.text="-25"; }else if(c==3){ _root.resCresce_mc.resp1_txt.text="300"; _root.resCresce_mc.resp2_txt._visible=false; _root.resCresce_mc.resp3_txt.text="268"; _root.resCresce_mc.resp4_txt._visible=false; _root.resCresce_mc.resp5_txt._visible=false; _root.resCresce_mc.resp6_txt.text="220"; _root.resCresce_mc.resp7_txt.text="204"; _root.resCresce_mc.resp8_txt._visible=false; colocados=res4; sinais(">"); _root.incDec_mc.incDec_txt.text="-16"; }else if(c==4){ _root.resCresce_mc.resp1_txt.text="68"; _root.resCresce_mc.resp2_txt._visible=false; _root.resCresce_mc.resp3_txt.text="80"; _root.resCresce_mc.resp4_txt._visible=false; _root.resCresce_mc.resp5_txt.text="92"; _root.resCresce_mc.resp6_txt._visible=false; _root.resCresce_mc.resp7_txt.text="104"; _root.resCresce_mc.resp8_txt._visible=false; colocados=res5; sinais("<"); _root.incDec_mc.incDec_txt.text="+6"; }else if(c==5){ _root.resCresce_mc.resp1_txt._visible=false; _root.resCresce_mc.resp2_txt._visible=false; _root.resCresce_mc.resp3_txt.text="72"; _root.resCresce_mc.resp4_txt.text="90"; _root.resCresce_mc.resp5_txt._visible=false; _root.resCresce_mc.resp6_txt._visible=false; 138 Apêndice A – Código ActionScript _root.resCresce_mc.resp7_txt.text="144"; _root.resCresce_mc.resp8_txt.text="162"; colocados=res6; sinais("<"); _root.incDec_mc.incDec_txt.text="+18"; }else if(c==6){ _root.resCresce_mc.resp1_txt._visible=false; _root.resCresce_mc.resp2_txt.text="171"; _root.resCresce_mc.resp3_txt._visible=false; _root.resCresce_mc.resp4_txt.text="153"; _root.resCresce_mc.resp5_txt._visible=false; _root.resCresce_mc.resp6_txt.text="135"; _root.resCresce_mc.resp7_txt._visible=false; _root.resCresce_mc.resp8_txt.text="117"; colocados=res7; sinais(">"); _root.incDec_mc.incDec_txt.text="-9"; }else if(c==7){ _root.resCresce_mc.resp1_txt.text="280"; _root.resCresce_mc.resp2_txt._visible=false; _root.resCresce_mc.resp3_txt.text="210"; _root.resCresce_mc.resp4_txt._visible=false; _root.resCresce_mc.resp5_txt.text="140"; _root.resCresce_mc.resp6_txt._visible=false; _root.resCresce_mc.resp7_txt.text="70"; _root.resCresce_mc.resp8_txt._visible=false; colocados=res8; sinais(">"); _root.incDec_mc.incDec_txt.text="-35"; }else if(c==8){ _root.resCresce_mc.resp1_txt.text="62"; _root.resCresce_mc.resp2_txt.text="124"; _root.resCresce_mc.resp3_txt._visible=false; _root.resCresce_mc.resp4_txt.text="248"; _root.resCresce_mc.resp5_txt._visible=false; 139 Apêndice A – Código ActionScript _root.resCresce_mc.resp6_txt.text="372"; _root.resCresce_mc.resp7_txt._visible=false; _root.resCresce_mc.resp8_txt._visible=false; colocados=res9; sinais("<"); _root.incDec_mc.incDec_txt.text="+62"; }else if(c==9){ _root.resCresce_mc.resp1_txt._visible=false; _root.resCresce_mc.resp2_txt.text="500"; _root.resCresce_mc.resp3_txt._visible=false; _root.resCresce_mc.resp4_txt.text="474"; _root.resCresce_mc.resp5_txt._visible=false; _root.resCresce_mc.resp6_txt.text="448"; _root.resCresce_mc.resp7_txt._visible=false; _root.resCresce_mc.resp8_txt.text="422"; colocados=res10; sinais(">"); _root.incDec_mc.incDec_txt.text="-13"; } } _root.resCresce_mc.alvoC1_mc.onRelease=function(){ //ao clicar no rectangulo de resposta para onde arrastar o numero preenche -se a sub-pergunta do seleccionado e da pergunta em questao numTentFalha=0; _root.resultado_txt._visible=false; _root.fundores_mc._visible=false; quadnaoVisiveis(this); if(pergunta==1){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res2op1[j]; } subPerg=0; }else if(pergunta==5){ 140 se quer quadrado Apêndice A – Código ActionScript _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res6op1[j]; } subPerg=0; }else if(pergunta==6){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res7op1[j]; } subPerg=0; }else if(pergunta==9){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res10op1[j]; } subPerg=0; } } _root.resCresce_mc.alvoC2_mc.onRelease=function(){ numTentFalha=0; _root.resultado_txt._visible=false; _root.fundores_mc._visible=false; quadnaoVisiveis(this); if(pergunta==0){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res1op1[j]; } subPerg=0; }else if(pergunta==2){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res3op1[j]; } subPerg=0; }else if(pergunta==3){ _root.prg1_mc._visible=true; 141 Apêndice A – Código ActionScript for(var j:Number=0; j<=3; j++){ expressao[j].text=res4op1[j]; } subPerg=0; }else if(pergunta==4){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res5op1[j]; } subPerg=0; }else if(pergunta==5){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res6op2[j]; } subPerg=1; }else if(pergunta==7){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res8op1[j]; } subPerg=0; } } _root.resCresce_mc.alvoC3_mc.onRelease=function(){ numTentFalha=0; _root.resultado_txt._visible=false; _root.fundores_mc._visible=false; quadnaoVisiveis(this); if(pergunta==1){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res2op2[j]; } subPerg=1; }else if(pergunta==6){ _root.prg1_mc._visible=true; 142 Apêndice A – Código ActionScript for(var j:Number=0; j<=3; j++){ expressao[j].text=res7op2[j]; } subPerg=1; }else if(pergunta==8){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res9op1[j]; } subPerg=0; }else if(pergunta==9){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res10op2[j]; } subPerg=1; } } _root.resCresce_mc.alvoC4_mc.onRelease=function(){ numTentFalha=0; _root.resultado_txt._visible=false; _root.fundores_mc._visible=false; quadnaoVisiveis(this); if(pergunta==0){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res1op2[j]; } subPerg=1; }else if(pergunta==3){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res4op2[j]; } subPerg=1; }else if(pergunta==4){ _root.prg1_mc._visible=true; 143 Apêndice A – Código ActionScript for(var j:Number=0; j<=3; j++){ expressao[j].text=res5op2[j]; } subPerg=1; }else if(pergunta==7){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res8op2[j]; } subPerg=1; } } _root.resCresce_mc.alvoC5_mc.onRelease=function(){ numTentFalha=0; _root.resultado_txt._visible=false; _root.fundores_mc._visible=false; quadnaoVisiveis(this); if(pergunta==1){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res2op3[j]; } subPerg=2; }else if(pergunta==2){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res3op2[j]; } subPerg=1; }else if(pergunta==3){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res4op3[j]; } subPerg=2; }else if(pergunta==5){ _root.prg1_mc._visible=true; 144 Apêndice A – Código ActionScript for(var j:Number=0; j<=3; j++){ expressao[j].text=res6op3[j]; } subPerg=2; }else if(pergunta==6){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res7op3[j]; } subPerg=2; }else if(pergunta==8){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res9op2[j]; } subPerg=1; }else if(pergunta==9){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res10op3[j]; } subPerg=2; } } _root.resCresce_mc.alvoC6_mc.onRelease=function(){ numTentFalha=0; _root.resultado_txt._visible=false; _root.fundores_mc._visible=false; quadnaoVisiveis(this); if(pergunta==0){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res1op3[j]; } subPerg=2; }else if(pergunta==4){ _root.prg1_mc._visible=true; 145 Apêndice A – Código ActionScript for(var j:Number=0; j<=3; j++){ expressao[j].text=res5op3[j]; } subPerg=2; }else if(pergunta==5){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res6op4[j]; } subPerg=3; } else if(pergunta==7){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res8op3[j]; } subPerg=2; } } _root.resCresce_mc.alvoC7_mc.onRelease=function(){ numTentFalha=0; _root.resultado_txt._visible=false; _root.fundores_mc._visible=false; quadnaoVisiveis(this); if(pergunta==1){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res2op4[j]; } subPerg=3; }else if(pergunta==2){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res3op3[j]; } subPerg=2; }else if(pergunta==6){ _root.prg1_mc._visible=true; 146 Apêndice A – Código ActionScript for(var j:Number=0; j<=3; j++){ expressao[j].text=res7op4[j]; } subPerg=3; }else if(pergunta==8){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res9op3[j]; } subPerg=2; }else if(pergunta==9){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res10op4[j]; } subPerg=3; } } _root.resCresce_mc.alvoC8_mc.onRelease=function(){ numTentFalha=0; _root.resultado_txt._visible=false; _root.fundores_mc._visible=false; quadnaoVisiveis(this); if(pergunta==0){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res1op4[j]; } subPerg=3; }else if(pergunta==2){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res3op4[j]; } subPerg=3; }else if(pergunta==3){ _root.prg1_mc._visible=true; 147 Apêndice A – Código ActionScript for(var j:Number=0; j<=3; j++){ expressao[j].text=res4op4[j]; } subPerg=3; }else if(pergunta==4){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res5op4[j]; } subPerg=3; }else if(pergunta==7){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res8op4[j]; } subPerg=3; }else if(pergunta==8){ _root.prg1_mc._visible=true; for(var j:Number=0; j<=3; j++){ expressao[j].text=res9op4[j]; } subPerg=3; } } function posicaoInicial(){ _root.prg1_mc.pc11_mc._x=0; _root.prg1_mc.pc11_mc._y=0; _root.prg1_mc.pc21_mc._x=97.5; _root.prg1_mc.pc21_mc._y=0; _root.prg1_mc.pc31_mc._x=193.5; _root.prg1_mc.pc31_mc._y=0; _root.prg1_mc.pc41_mc._x=290.4; _root.prg1_mc.pc41_mc._y=0; } 148 Apêndice A – Código ActionScript function colocaNumero(num_mc:MovieClip){//mediante a pergunta e depois a subpergunta faz desaparecer a subpergunta e escreve o numero no rectangulo da resposta e poe a subpergunta na posicao inicial if(pergunta==0){ if(subPerg==0){ _root.resCresce_mc.resp2_txt._visible=true; _root.resCresce_mc.resp2_txt.text=num_mc.num2_ txt.text; verifica[0]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else if(subPerg==1){ _root.resCresce_mc.resp4_txt._visible=true; _root.resCresce_mc.resp4_txt.text=num_mc.num3_ txt.text; verifica[1]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else if(subPerg==2){ _root.resCresce_mc.resp6_txt._visible=true; _root.resCresce_mc.resp6_txt.text=num_mc.num4_ txt.text; verifica[2]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else{ _root.resCresce_mc.resp8_txt._visible=true; _root.resCresce_mc.resp8_txt.text=num_mc.num1_ txt.text; verifica[3]=1; posicaoInicial(); _root.prg1_mc._visible=false; } }else if(pergunta==1){ if(subPerg==0){ _root.resCresce_mc.resp1_txt._visible=true; _root.resCresce_mc.resp1_txt.text=num_mc.num2_ txt.text; verifica[0]=1; 149 Apêndice A – Código ActionScript posicaoInicial(); _root.prg1_mc._visible=false; }else if(subPerg==1){ _root.resCresce_mc.resp3_txt._visible=true; _root.resCresce_mc.resp3_txt.text=num_mc.num3_ txt.text; verifica[1]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else if(subPerg==2){ _root.resCresce_mc.resp5_txt._visible=true; _root.resCresce_mc.resp5_txt.text=num_mc.num2_ txt.text; verifica[2]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else{ _root.resCresce_mc.resp7_txt._visible=true; _root.resCresce_mc.resp7_txt.text=num_mc.num3_ txt.text; verifica[3]=1; posicaoInicial(); _root.prg1_mc._visible=false; } }else if(pergunta==2){ if(subPerg==0){ _root.resCresce_mc.resp2_txt._visible=true; _root.resCresce_mc.resp2_txt.text=num_mc.num3_ txt.text; verifica[0]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else if(subPerg==1){ _root.resCresce_mc.resp5_txt._visible=true; _root.resCresce_mc.resp5_txt.text=num_mc.num2_ txt.text; verifica[1]=1; posicaoInicial(); _root.prg1_mc._visible=false; 150 Apêndice A – Código ActionScript }else if(subPerg==2){ _root.resCresce_mc.resp7_txt._visible=true; _root.resCresce_mc.resp7_txt.text=num_mc.num3_ txt.text; verifica[2]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else{ _root.resCresce_mc.resp8_txt._visible=true; _root.resCresce_mc.resp8_txt.text=num_mc.num4_ txt.text; verifica[3]=1; posicaoInicial(); _root.prg1_mc._visible=false; } }else if(pergunta==3){ if(subPerg==0){ _root.resCresce_mc.resp2_txt._visible=true; _root.resCresce_mc.resp2_txt.text=num_mc.num4_ txt.text; verifica[0]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else if(subPerg==1){ _root.resCresce_mc.resp4_txt._visible=true; _root.resCresce_mc.resp4_txt.text=num_mc.num2_ txt.text; verifica[1]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else if(subPerg==2){ _root.resCresce_mc.resp5_txt._visible=true; _root.resCresce_mc.resp5_txt.text=num_mc.num1_ txt.text; verifica[2]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else{ _root.resCresce_mc.resp8_txt._visible=true; 151 Apêndice A – Código ActionScript _root.resCresce_mc.resp8_txt.text=num_mc.num3_ txt.text; verifica[3]=1; posicaoInicial(); _root.prg1_mc._visible=false; } }else if(pergunta==4){ if(subPerg==0){ _root.resCresce_mc.resp2_txt._visible=true; _root.resCresce_mc.resp2_txt.text=num_mc.num3_ txt.text; verifica[0]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else if(subPerg==1){ _root.resCresce_mc.resp4_txt._visible=true; _root.resCresce_mc.resp4_txt.text=num_mc.num4_ txt.text; verifica[1]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else if(subPerg==2){ _root.resCresce_mc.resp6_txt._visible=true; _root.resCresce_mc.resp6_txt.text=num_mc.num4_ txt.text; verifica[2]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else{ _root.resCresce_mc.resp8_txt._visible=true; _root.resCresce_mc.resp8_txt.text=num_mc.num3_ txt.text; verifica[3]=1; posicaoInicial(); _root.prg1_mc._visible=false; } }else if(pergunta==5){ if(subPerg==0){ _root.resCresce_mc.resp1_txt._visible=true; 152 Apêndice A – Código ActionScript _root.resCresce_mc.resp1_txt.text=num_mc.num4_ txt.text; verifica[0]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else if(subPerg==1){ _root.resCresce_mc.resp2_txt._visible=true; _root.resCresce_mc.resp2_txt.text=num_mc.num3_ txt.text; verifica[1]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else if(subPerg==2){ _root.resCresce_mc.resp5_txt._visible=true; _root.resCresce_mc.resp5_txt.text=num_mc.num2_ txt.text; verifica[2]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else{ _root.resCresce_mc.resp6_txt._visible=true; _root.resCresce_mc.resp6_txt.text=num_mc.num1_ txt.text; verifica[3]=1; posicaoInicial(); _root.prg1_mc._visible=false; } }else if(pergunta==6){ if(subPerg==0){ _root.resCresce_mc.resp1_txt._visible=true; _root.resCresce_mc.resp1_txt.text=num_mc.num3_ txt.text; verifica[0]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else if(subPerg==1){ _root.resCresce_mc.resp3_txt._visible=true; _root.resCresce_mc.resp3_txt.text=num_mc.num4_ txt.text; verifica[1]=1; 153 Apêndice A – Código ActionScript posicaoInicial(); _root.prg1_mc._visible=false; }else if(subPerg==2){ _root.resCresce_mc.resp5_txt._visible=true; _root.resCresce_mc.resp5_txt.text=num_mc.num2_ txt.text; verifica[2]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else{ _root.resCresce_mc.resp7_txt._visible=true; _root.resCresce_mc.resp7_txt.text=num_mc.num3_ txt.text; verifica[3]=1; posicaoInicial(); _root.prg1_mc._visible=false; } }else if(pergunta==7){ if(subPerg==0){ _root.resCresce_mc.resp2_txt._visible=true; _root.resCresce_mc.resp2_txt.text=num_mc.num3_ txt.text; verifica[0]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else if(subPerg==1){ _root.resCresce_mc.resp4_txt._visible=true; _root.resCresce_mc.resp4_txt.text=num_mc.num4_ txt.text; verifica[1]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else if(subPerg==2){ _root.resCresce_mc.resp6_txt._visible=true; _root.resCresce_mc.resp6_txt.text=num_mc.num1_ txt.text; verifica[2]=1; posicaoInicial(); _root.prg1_mc._visible=false; 154 Apêndice A – Código ActionScript }else{ _root.resCresce_mc.resp8_txt._visible=true; _root.resCresce_mc.resp8_txt.text=num_mc.num2_ txt.text; verifica[3]=1; posicaoInicial(); _root.prg1_mc._visible=false; } }else if(pergunta==8){ if(subPerg==0){ _root.resCresce_mc.resp3_txt._visible=true; _root.resCresce_mc.resp3_txt.text=num_mc.num4_ txt.text; verifica[0]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else if(subPerg==1){ _root.resCresce_mc.resp5_txt._visible=true; _root.resCresce_mc.resp5_txt.text=num_mc.num3_ txt.text; verifica[1]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else if(subPerg==2){ _root.resCresce_mc.resp7_txt._visible=true; _root.resCresce_mc.resp7_txt.text=num_mc.num1_ txt.text; verifica[2]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else{ _root.resCresce_mc.resp8_txt._visible=true; _root.resCresce_mc.resp8_txt.text=num_mc.num2_ txt.text; verifica[3]=1; posicaoInicial(); _root.prg1_mc._visible=false; } }else if(pergunta==9){ 155 Apêndice A – Código ActionScript if(subPerg==0){ _root.resCresce_mc.resp1_txt._visible=true; _root.resCresce_mc.resp1_txt.text=num_mc.num2_ txt.text; verifica[0]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else if(subPerg==1){ _root.resCresce_mc.resp3_txt._visible=true; _root.resCresce_mc.resp3_txt.text=num_mc.num1_ txt.text; verifica[1]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else if(subPerg==2){ _root.resCresce_mc.resp5_txt._visible=true; _root.resCresce_mc.resp5_txt.text=num_mc.num3_ txt.text; verifica[2]=1; posicaoInicial(); _root.prg1_mc._visible=false; }else{ _root.resCresce_mc.resp7_txt._visible=true; _root.resCresce_mc.resp7_txt.text=num_mc.num4_ txt.text; verifica[3]=1; posicaoInicial(); _root.prg1_mc._visible=false; } } } function quadnaoVisiveis(mov_mc:MovieClip){//para desaparecerem todos os rectangulos da resposta excepto aqueles que tivrem valores e aquele que foi clicado mov_mc.enabled=false;//para nao carregar outra vez quando carregado a primeira vez para assim por o cont=0 uma unica vez naquela subpergunta var resposta expResposta:Array=new Array();//array 156 dos quadrados de Apêndice A – Código ActionScript expResposta[0]=_root.resCresce_mc.alvoC1_mc; expResposta[1]=_root.resCresce_mc.alvoC2_mc; expResposta[2]=_root.resCresce_mc.alvoC3_mc; expResposta[3]=_root.resCresce_mc.alvoC4_mc; expResposta[4]=_root.resCresce_mc.alvoC5_mc; expResposta[5]=_root.resCresce_mc.alvoC6_mc; expResposta[6]=_root.resCresce_mc.alvoC7_mc; expResposta[7]=_root.resCresce_mc.alvoC8_mc; var expRespostatxt:Array=new Array();//array dos quadrados de resposta expRespostatxt[0]=_root.resCresce_mc.resp1_txt expRespostatxt[1]=_root.resCresce_mc.resp2_txt expRespostatxt[2]=_root.resCresce_mc.resp3_txt expRespostatxt[3]=_root.resCresce_mc.resp4_txt expRespostatxt[4]=_root.resCresce_mc.resp5_txt expRespostatxt[5]=_root.resCresce_mc.resp6_txt expRespostatxt[6]=_root.resCresce_mc.resp7_txt expRespostatxt[7]=_root.resCresce_mc.resp8_txt for(var i:Number=0; i<=8; i++){ if(expRespostatxt[i].length==0 && expResposta[i] !=mov_mc){ expResposta[i]._visible=false; } } _root.resSomb_mc._visible=true;//quando desaparecem quadrados aparecem outros que estao por tras com um efeito sombra } function quadVisiveis(){ _root.resCresce_mc.alvoC1_mc._visible=true; _root.resCresce_mc.alvoC2_mc._visible=true; _root.resCresce_mc.alvoC3_mc._visible=true; _root.resCresce_mc.alvoC4_mc._visible=true; _root.resCresce_mc.alvoC5_mc._visible=true; _root.resCresce_mc.alvoC6_mc._visible=true; _root.resCresce_mc.alvoC7_mc._visible=true; _root.resCresce_mc.alvoC8_mc._visible=true; 157 os Apêndice A – Código ActionScript _root.resSomb_mc._visible=false;//quando tornam a visiveis os quadrados desaparecem aqueles com o efeito sombra } function sons(s:String){ var som:Sound= new Sound(); som.attachSound(s); som.start(); } _root.resCresce_mc.alvoC1_mc.onPress=function(){ sons("clique.wav"); } _root.resCresce_mc.alvoC2_mc.onPress=function(){ sons("clique.wav"); } _root.resCresce_mc.alvoC3_mc.onPress=function(){ sons("clique.wav"); } _root.resCresce_mc.alvoC4_mc.onPress=function(){ sons("clique.wav"); } _root.resCresce_mc.alvoC5_mc.onPress=function(){ sons("clique.wav"); } _root.resCresce_mc.alvoC6_mc.onPress=function(){ sons("clique.wav"); } _root.resCresce_mc.alvoC7_mc.onPress=function(){ sons("clique.wav"); } _root.resCresce_mc.alvoC8_mc.onPress=function(){ sons("clique.wav"); } function sinais(sn:String){ _root.resCresce_mc.sinal_txt.text=sn; _root.resCresce_mc.sinal2_txt.text=sn; _root.resCresce_mc.sinal3_txt.text=sn; 158 estar Apêndice A – Código ActionScript _root.resCresce_mc.sinal4_txt.text=sn; _root.resCresce_mc.sinal5_txt.text=sn; _root.resCresce_mc.sinal6_txt.text=sn; _root.resCresce_mc.sinal7_txt.text=sn; if(sn==">"){ _root.titulo_txt.text="Completa (atendendo ao sinal maior do que)"; os espaços em branco os espaços em branco }else{ _root.titulo_txt.text="Completa (atendendo ao sinal menor do que)"; } } A.5.4.2 Botão “Início” on(release){ loadMovie("inicioOrdenacao.swf",_root); } A.5.4.3 Botão “Seguinte” on(release){ if(_root.inc <=10){ _root.gerarAleatorio(); pergSeguinte(pergunta); _root.seguinte_btn._visible=false; }else{ _root.seguinte_btn._visible=false; } } 159 Apêndice A – Código ActionScript A.5.5 Parte 2 Nível 2 Nota: O código deste Apêndice é semelhante ao código do Apêndice anterior (Apêndice 5.4), modificando apenas os arrays dos números a ordenar que passam a ser maiores, a animação do veículo a montar, entre outras pequenas coisas. A.6 Jogo das Horas A.6.1 Página Inicial A.6.1.1 Botão “Menu” on(release){ loadMovie("./paginaPrincipal.swf",_root) } A.6.1.2 Botão “Nível 1” on(release){ loadMovie("nivel1Horas.swf",_root); } A.6.1.3 Botão “Nível 2” on(release){ loadMovie("nivel2Horas.swf",_root); } 160 Apêndice A – Código ActionScript A.6.2 Nível 1 A.6.2.1 Camada de acções _root.fundoResp_mc._visible=false; _root.pergseguinte_btn._visible=false; var hora:String=""; var minuto:String=""; var pergunta:Number=0; var inc:Number=0; var resultado:String=""; var aux:Number=0; gerarAleatorio(); pergSeguinte(pergunta); function pergSeguinte(c:Number){ _root.pergseguinte_btn._visible=false; _root.fundoResp_mc._visible=false; _root.resultado_txt._visible=false; bloquearRelogios(true); _root.reldig1_mc.caixaRelDig1_mc.gotoAndStop(1); _root.reldig2_mc.caixaRelDig2_mc.gotoAndStop(1); _root.reldig3_mc.caixaRelDig3_mc.gotoAndStop(1); _root.reldig4_mc.caixaRelDig4_mc.gotoAndStop(1); if(c==0){ _root.relog_mc.gotoAndStop(1); _root.reldig1_mc.hora1_txt.text="14"; _root.reldig1_mc.min1_txt.text="12"; _root.reldig2_mc.hora2_txt.text="01"; _root.reldig2_mc.min2_txt.text="00"; _root.reldig3_mc.hora3_txt.text="12"; _root.reldig3_mc.min3_txt.text="00"; 161 Apêndice A – Código ActionScript _root.reldig4_mc.hora4_txt.text="15"; _root.reldig4_mc.min4_txt.text="30"; }else if(c==1){ _root.relog_mc.gotoAndStop(2); _root.reldig1_mc.hora1_txt.text="14"; _root.reldig1_mc.min1_txt.text="20"; _root.reldig2_mc.hora2_txt.text="13"; _root.reldig2_mc.min2_txt.text="15"; _root.reldig3_mc.hora3_txt.text="16"; _root.reldig3_mc.min3_txt.text="00"; _root.reldig4_mc.hora4_txt.text="15"; _root.reldig4_mc.min4_txt.text="05"; }else if(c==2){ _root.relog_mc.gotoAndStop(3); _root.reldig1_mc.hora1_txt.text="03"; _root.reldig1_mc.min1_txt.text="30"; _root.reldig2_mc.hora2_txt.text="18"; _root.reldig2_mc.min2_txt.text="15"; _root.reldig3_mc.hora3_txt.text="03"; _root.reldig3_mc.min3_txt.text="06"; _root.reldig4_mc.hora4_txt.text="16"; _root.reldig4_mc.min4_txt.text="30"; }else if(c==3){ _root.relog_mc.gotoAndStop(4); _root.reldig1_mc.hora1_txt.text="14"; _root.reldig1_mc.min1_txt.text="45"; _root.reldig2_mc.hora2_txt.text="02"; _root.reldig2_mc.min2_txt.text="15"; _root.reldig3_mc.hora3_txt.text="21"; _root.reldig3_mc.min3_txt.text="10"; _root.reldig4_mc.hora4_txt.text="09"; _root.reldig4_mc.min4_txt.text="02"; }else if(c==4){ _root.relog_mc.gotoAndStop(5); _root.reldig1_mc.hora1_txt.text="09"; _root.reldig1_mc.min1_txt.text="10"; _root.reldig2_mc.hora2_txt.text="11"; _root.reldig2_mc.min2_txt.text="45"; 162 Apêndice A – Código ActionScript _root.reldig3_mc.hora3_txt.text="21"; _root.reldig3_mc.min3_txt.text="50"; _root.reldig4_mc.hora4_txt.text="10"; _root.reldig4_mc.min4_txt.text="45"; }else if(c==5){ _root.relog_mc.gotoAndStop(6); _root.reldig1_mc.hora1_txt.text="06"; _root.reldig1_mc.min1_txt.text="40"; _root.reldig2_mc.hora2_txt.text="20"; _root.reldig2_mc.min2_txt.text="32"; _root.reldig3_mc.hora3_txt.text="08"; _root.reldig3_mc.min3_txt.text="30"; _root.reldig4_mc.hora4_txt.text="06"; _root.reldig4_mc.min4_txt.text="08"; }else if(c==6){ _root.relog_mc.gotoAndStop(7); _root.reldig1_mc.hora1_txt.text="16"; _root.reldig1_mc.min1_txt.text="57"; _root.reldig2_mc.hora2_txt.text="12"; _root.reldig2_mc.min2_txt.text="20"; _root.reldig3_mc.hora3_txt.text="23"; _root.reldig3_mc.min3_txt.text="25"; _root.reldig4_mc.hora4_txt.text="04"; _root.reldig4_mc.min4_txt.text="55"; }else if(c==7){ _root.relog_mc.gotoAndStop(8); _root.reldig1_mc.hora1_txt.text="04"; _root.reldig1_mc.min1_txt.text="30"; _root.reldig2_mc.hora2_txt.text="18"; _root.reldig2_mc.min2_txt.text="19"; _root.reldig3_mc.hora3_txt.text="17"; _root.reldig3_mc.min3_txt.text="30"; _root.reldig4_mc.hora4_txt.text="03"; _root.reldig4_mc.min4_txt.text="25"; }else if(c==8){ _root.relog_mc.gotoAndStop(9); _root.reldig1_mc.hora1_txt.text="01"; _root.reldig1_mc.min1_txt.text="08"; 163 Apêndice A – Código ActionScript _root.reldig2_mc.hora2_txt.text="21"; _root.reldig2_mc.min2_txt.text="05"; _root.reldig3_mc.hora3_txt.text="08"; _root.reldig3_mc.min3_txt.text="05"; _root.reldig4_mc.hora4_txt.text="13"; _root.reldig4_mc.min4_txt.text="42"; }else if(c==9){ _root.relog_mc.gotoAndStop(10); _root.reldig1_mc.hora1_txt.text="05"; _root.reldig1_mc.min1_txt.text="10"; _root.reldig2_mc.hora2_txt.text="02"; _root.reldig2_mc.min2_txt.text="25"; _root.reldig3_mc.hora3_txt.text="02"; _root.reldig3_mc.min3_txt.text="30"; _root.reldig4_mc.hora4_txt.text="14"; _root.reldig4_mc.min4_txt.text="05"; }else if(c==10){ _root.relog_mc.gotoAndStop(11); _root.reldig1_mc.hora1_txt.text="05"; _root.reldig1_mc.min1_txt.text="40"; _root.reldig2_mc.hora2_txt.text="08"; _root.reldig2_mc.min2_txt.text="25"; _root.reldig3_mc.hora3_txt.text="20"; _root.reldig3_mc.min3_txt.text="05"; _root.reldig4_mc.hora4_txt.text="05"; _root.reldig4_mc.min4_txt.text="08"; }else if(c==11){ _root.relog_mc.gotoAndStop(12); _root.reldig1_mc.hora1_txt.text="11"; _root.reldig1_mc.min1_txt.text="26"; _root.reldig2_mc.hora2_txt.text="10"; _root.reldig2_mc.min2_txt.text="25"; _root.reldig3_mc.hora3_txt.text="23"; _root.reldig3_mc.min3_txt.text="05"; _root.reldig4_mc.hora4_txt.text="11"; _root.reldig4_mc.min4_txt.text="05"; }else if(c==12){ _root.relog_mc.gotoAndStop(13); 164 Apêndice A – Código ActionScript _root.reldig1_mc.hora1_txt.text="12"; _root.reldig1_mc.min1_txt.text="06"; _root.reldig2_mc.hora2_txt.text="00"; _root.reldig2_mc.min2_txt.text="06"; _root.reldig3_mc.hora3_txt.text="06"; _root.reldig3_mc.min3_txt.text="00"; _root.reldig4_mc.hora4_txt.text="12"; _root.reldig4_mc.min4_txt.text="30"; }else if(c==13){ _root.relog_mc.gotoAndStop(14); _root.reldig1_mc.hora1_txt.text="07"; _root.reldig1_mc.min1_txt.text="09"; _root.reldig2_mc.hora2_txt.text="08"; _root.reldig2_mc.min2_txt.text="45"; _root.reldig3_mc.hora3_txt.text="19"; _root.reldig3_mc.min3_txt.text="43"; _root.reldig4_mc.hora4_txt.text="18"; _root.reldig4_mc.min4_txt.text="43"; }else if(c==14){ _root.relog_mc.gotoAndStop(15); _root.reldig1_mc.hora1_txt.text="16"; _root.reldig1_mc.min1_txt.text="02"; _root.reldig2_mc.hora2_txt.text="04"; _root.reldig2_mc.min2_txt.text="10"; _root.reldig3_mc.hora3_txt.text="05"; _root.reldig3_mc.min3_txt.text="10"; _root.reldig4_mc.hora4_txt.text="14"; _root.reldig4_mc.min4_txt.text="04"; }else if(c==15){ _root.relog_mc.gotoAndStop(16); _root.reldig1_mc.hora1_txt.text="20"; _root.reldig1_mc.min1_txt.text="25"; _root.reldig2_mc.hora2_txt.text="06"; _root.reldig2_mc.min2_txt.text="40"; _root.reldig3_mc.hora3_txt.text="17"; _root.reldig3_mc.min3_txt.text="40"; _root.reldig4_mc.hora4_txt.text="05"; _root.reldig4_mc.min4_txt.text="08"; 165 Apêndice A – Código ActionScript }else if(c==16){ _root.relog_mc.gotoAndStop(17); _root.reldig1_mc.hora1_txt.text="13"; _root.reldig1_mc.min1_txt.text="55"; _root.reldig2_mc.hora2_txt.text="01"; _root.reldig2_mc.min2_txt.text="11"; _root.reldig3_mc.hora3_txt.text="11"; _root.reldig3_mc.min3_txt.text="05"; _root.reldig4_mc.hora4_txt.text="14"; _root.reldig4_mc.min4_txt.text="54"; }else if(c==17){ _root.relog_mc.gotoAndStop(18); _root.reldig1_mc.hora1_txt.text="04"; _root.reldig1_mc.min1_txt.text="09"; _root.reldig2_mc.hora2_txt.text="20"; _root.reldig2_mc.min2_txt.text="20"; _root.reldig3_mc.hora3_txt.text="09"; _root.reldig3_mc.min3_txt.text="04"; _root.reldig4_mc.hora4_txt.text="09"; _root.reldig4_mc.min4_txt.text="21"; }else if(c==18){ _root.relog_mc.gotoAndStop(19); _root.reldig1_mc.hora1_txt.text="22"; _root.reldig1_mc.min1_txt.text="14"; _root.reldig2_mc.hora2_txt.text="10"; _root.reldig2_mc.min2_txt.text="03"; _root.reldig3_mc.hora3_txt.text="15"; _root.reldig3_mc.min3_txt.text="55"; _root.reldig4_mc.hora4_txt.text="03"; _root.reldig4_mc.min4_txt.text="10"; }else if(c==19){ _root.relog_mc.gotoAndStop(20); _root.reldig1_mc.hora1_txt.text="07"; _root.reldig1_mc.min1_txt.text="12"; _root.reldig2_mc.hora2_txt.text="07"; _root.reldig2_mc.min2_txt.text="05"; _root.reldig3_mc.hora3_txt.text="07"; _root.reldig3_mc.min3_txt.text="00"; 166 Apêndice A – Código ActionScript _root.reldig4_mc.hora4_txt.text="12"; _root.reldig4_mc.min4_txt.text="35"; }else{ bloquearRelogios(false); _root.resultado_txt._visible=true; _root.fundoResp_mc._visible=true; _root.resultado_txt.textColor=0xFFCC00; _root.resultado_txt.text="Parabéns\nchegaste jogo."; _root.pergseguinte_btn._visible=false; } } function bloquearRelogios(b:Boolean){ _root.reldig1_mc.enabled=b; _root.reldig2_mc.enabled=b; _root.reldig3_mc.enabled=b; _root.reldig4_mc.enabled=b; } //gerar aleatóriamente a primeira pergunta function gerarAleatorio(){ //para nao repetir as operações pergunta=random(20); while (pergunta == aux) { pergunta=random(20); } aux = pergunta; } function sons(s:String){ var som:Sound= new Sound(); som.attachSound(s); som.start(); } 167 ao fim\ndo Apêndice A – Código ActionScript A.6.2.2 Clipe de filme “relógio digital 1” on(rollOver){ _root.reldig1_mc.caixaRelDig1_mc.gotoAndPlay(2); } on(rollOut){ _root.reldig1_mc.caixaRelDig1_mc.gotoAndPlay(1); } on(press){ _root.reldig1_mc.caixaRelDig1_mc.gotoAndPlay(3); //som clique _root.sons("clique.wav"); } on(release){ _root.fundoResp_mc._visible=true; _root.resultado_txt._visible=true; _root.reldig1_mc.caixaRelDig1_mc.gotoAndPlay(2); if(_root.hora==_root.reldig1_mc.hora1_txt.text _root.minuto==_root.reldig1_mc.min1_txt.text){ && _root.resultado_txt.textColor=0x006600; _root.resultado_txt.text="Certo, pergunta\nseguinte"; passa para\n //som certo _root.sons("certo.wav"); _root.pergseguinte_btn._visible=true; _root.bloquearRelogios(false); }else{ _root.resultado_txt.textColor=0xFF0000; _root.resultado_txt.text="Errado, tenta\noutra vez"; //som errado _root.sons("errado2.wav"); } } 168 a Apêndice A – Código ActionScript A.6.2.3 Clipe de filme “relógio digital 2” on(rollOver){ _root.reldig2_mc.caixaRelDig2_mc.gotoAndPlay(2); } on(rollOut){ _root.reldig2_mc.caixaRelDig2_mc.gotoAndPlay(1); } on(press){ _root.reldig2_mc.caixaRelDig2_mc.gotoAndPlay(3); //som clique _root.sons("clique.wav"); } on(release){ _root.fundoResp_mc._visible=true; _root.resultado_txt._visible=true; _root.reldig2_mc.caixaRelDig2_mc.gotoAndPlay(2); if(_root.hora==_root.reldig2_mc.hora2_txt.text _root.minuto==_root.reldig2_mc.min2_txt.text){ && _root.resultado_txt.textColor=0x006600; _root.resultado_txt.text="Certo, pergunta\nseguinte"; passa para\n //som certo _root.sons("certo.wav"); _root.pergseguinte_btn._visible=true; _root.bloquearRelogios(false); }else{ _root.resultado_txt.textColor=0xFF0000; _root.resultado_txt.text="Errado, tenta\noutra vez"; //som errado _root.sons("errado2.wav"); } } 169 a Apêndice A – Código ActionScript A.6.2.4 Clipe de filme “relógio digital 3” on(rollOver){ _root.reldig3_mc.caixaRelDig3_mc.gotoAndPlay(2); } on(rollOut){ _root.reldig3_mc.caixaRelDig3_mc.gotoAndPlay(1); } on(press){ _root.reldig3_mc.caixaRelDig3_mc.gotoAndPlay(3); //som clique _root.sons("clique.wav"); } on(release){ _root.fundoResp_mc._visible=true; _root.resultado_txt._visible=true; _root.reldig3_mc.caixaRelDig3_mc.gotoAndPlay(2); if(_root.hora==_root.reldig3_mc.hora3_txt.text _root.minuto==_root.reldig3_mc.min3_txt.text){ && _root.resultado_txt.textColor=0x006600; _root.resultado_txt.text="Certo, pergunta\nseguinte"; passa para\n //som certo _root.sons("certo.wav"); _root.pergseguinte_btn._visible=true; _root.bloquearRelogios(false); }else{ _root.resultado_txt.textColor=0xFF0000; _root.resultado_txt.text="Errado, tenta\noutra vez"; //som errado _root.sons("errado2.wav"); } } 170 a Apêndice A – Código ActionScript A.6.2.5 Clipe de filme “relógio digital 4” on(rollOver){ _root.reldig4_mc.caixaRelDig4_mc.gotoAndPlay(2); } on(rollOut){ _root.reldig4_mc.caixaRelDig4_mc.gotoAndPlay(1); } on(press){ _root.reldig4_mc.caixaRelDig4_mc.gotoAndPlay(3); //som clique _root.sons("clique.wav"); } on(release){ _root.fundoResp_mc._visible=true; _root.resultado_txt._visible=true; _root.reldig4_mc.caixaRelDig4_mc.gotoAndPlay(2); if(_root.hora==_root.reldig4_mc.hora4_txt.text _root.minuto==_root.reldig4_mc.min4_txt.text){ && _root.resultado_txt.textColor=0x006600; _root.resultado_txt.text="Certo, pergunta\nseguinte"; passa para\n //som certo _root.sons("certo.wav"); _root.pergseguinte_btn._visible=true; _root.bloquearRelogios(false); }else{ _root.resultado_txt.textColor=0xFF0000; _root.resultado_txt.text="Errado, tenta\noutra vez"; //som errado _root.sons("errado2.wav"); } } 171 a Apêndice A – Código ActionScript A.6.2.6 Botão “Início” on(release){ loadMovie("inicioHoras.swf",_root); } A.6.2.7 Botão “Seguinte” on(release){ if(_root.inc < 15){ gerarAleatorio(); pergSeguinte(pergunta); _root.inc++; }else{ pergunta=21; pergSeguinte(pergunta); } } A.6.3 Nível 2 A.6.3.1 Camada de acções _root.verify_btn._visible=false; var horas:String=""; _root.fundoResp_mc._visible=false; _root.pergseguinte_btn._visible=false; var pergunta:Number=0; var inc:Number=0; var resultado:String=""; var aux:Number=0; gerarAleatorio(); 172 Apêndice A – Código ActionScript pergSeguinte(pergunta); function pergSeguinte(c:Number){ _root.horas_cmb.enabled=true; _root.pergseguinte_btn._visible=false; _root.fundoResp_mc._visible=false; _root.resultado_txt._visible=false; if(c==0){ _root.relog_mc.gotoAndStop(1); _root.horas_cmb.removeAll(); _root.horas_cmb.addItem("--selecciona um item--",0); _root.horas_cmb.addItem("cinco horas","cinco horas"); _root.horas_cmb.addItem("três minutos","três horas e cinco minutos"); horas e cinco _root.horas_cmb.addItem("dez horas","dez horas");//* _root.horas_cmb.addItem("meio dia e cinquenta minutos"); }else if(c==1){ _root.relog_mc.gotoAndStop(2); _root.horas_cmb.removeAll(); _root.horas_cmb.addItem("--selecciona um item--",0); _root.horas_cmb.addItem("dezanove minutos","dezanove horas e cinco minutos");//* horas _root.horas_cmb.addItem("treze horas e minutos","treze horas e trinta e cinco minutos"); _root.horas_cmb.addItem("sete horas e um minuto"); _root.horas_cmb.addItem("uma hora e sete minutos"); horas hora e e e trinta cinco e cinco um minuto","sete sete minutos","uma }else if(c==2){ _root.relog_mc.gotoAndStop(3); _root.horas_cmb.removeAll(); _root.horas_cmb.addItem("--selecciona um item--",0); _root.horas_cmb.addItem("vinte e três horas e cinquenta minutos","vinte e três horas e cinquenta minutos"); _root.horas_cmb.addItem("vinte e duas horas e cinquenta e três minutos","vinte e duas horas e cinquenta e três minutos");//* _root.horas_cmb.addItem("dez horas e onze minutos"); horas _root.horas_cmb.addItem("dez minutos","dez horas e cinquenta minutos"); 173 e horas onze e minutos","dez cinquenta Apêndice A – Código ActionScript }else if(c==3){ _root.relog_mc.gotoAndStop(4); _root.horas_cmb.removeAll(); _root.horas_cmb.addItem("--selecciona um item--",0); _root.horas_cmb.addItem("vinte e três minutos","vinte e três horas e quatro minutos"); horas e quatro _root.horas_cmb.addItem("quatro horas e cinquenta e cinco minutos","quatro horas e cinquenta e cinco minutos"); _root.horas_cmb.addItem("onze horas e minutos","onze horas e vinte e dois minutos");//* _root.horas_cmb.addItem("dezasseis minutos","dezasseis horas e onze minutos"); vinte horas e dois e onze }else if(c==4){ _root.relog_mc.gotoAndStop(5); _root.horas_cmb.removeAll(); _root.horas_cmb.addItem("--selecciona um item--",0); _root.horas_cmb.addItem("vinte e uma minutos","vinte e uma horas e quinze minutos");//* horas e quinze _root.horas_cmb.addItem("quinze horas e quarenta e cinco minutos","quinze horas e quarenta e cinco minutos"); _root.horas_cmb.addItem("nove horas e três minutos","nove horas e três minutos"); _root.horas_cmb.addItem("três horas e nove minutos","três horas e nove minutos"); }else if(c==5){ _root.relog_mc.gotoAndStop(6); _root.horas_cmb.removeAll(); _root.horas_cmb.addItem("--selecciona um item--",0); _root.horas_cmb.addItem("nove minutos","nove horas e cinco minutos"); horas _root.horas_cmb.addItem("cinco minutos","cinco horas e nove minutos"); horas e e cinco nove _root.horas_cmb.addItem("vinte e uma horas e vinte cinco minutos","vinte e uma horas e vinte e cinco minutos"); e _root.horas_cmb.addItem("dezassete horas e quarenta e quatro minutos","dezassete horas e quarenta e quatro minutos");//* }else if(c==6){ _root.relog_mc.gotoAndStop(7); _root.horas_cmb.removeAll(); _root.horas_cmb.addItem("--selecciona um item--",0); _root.horas_cmb.addItem("vinte três horas"); 174 e três horas","vinte e Apêndice A – Código ActionScript _root.horas_cmb.addItem("vinte e três horas e cinquenta e sete minutos","vinte e três horas e cinquenta e sete minutos");//* _root.horas_cmb.addItem("vinte e três horas e cinquenta e cinco minutos","vinte e três horas e cinquenta e cinco minutos"); _root.horas_cmb.addItem("doze horas","doze horas"); }else if(c==7){ _root.relog_mc.gotoAndStop(8); _root.horas_cmb.removeAll(); _root.horas_cmb.addItem("--selecciona um item--",0); _root.horas_cmb.addItem("doze minutos","doze horas e trinta minutos"); horas e trinta _root.horas_cmb.addItem("seis horas e doze minutos","seis horas e doze minutos"); _root.horas_cmb.addItem("dezoito horas");//* horas","dezoito _root.horas_cmb.addItem("dezassete horas","dezassete horas"); }else if(c==8){ _root.relog_mc.gotoAndStop(9); _root.horas_cmb.removeAll(); _root.horas_cmb.addItem("--selecciona um item--",0); _root.horas_cmb.addItem("doze horas e seis minutos","doze horas e seis minutos"); _root.horas_cmb.addItem("meio dia e meia hora","meio dia e meia hora");//* _root.horas_cmb.addItem("seis horas","seis horas"); _root.horas_cmb.addItem("meio dia","meio dia"); }else if(c==9){ _root.relog_mc.gotoAndStop(10); _root.horas_cmb.removeAll(); _root.horas_cmb.addItem("--selecciona um item--",0); _root.horas_cmb.addItem("onze menos um quarto");//* _root.horas_cmb.addItem("dez horas e um quarto"); menos horas um e um quarto","onze quarto","dez _root.horas_cmb.addItem("nove horas e onze minutos","nove horas e onze minutos"); _root.horas_cmb.addItem("vinte e uma horas e cinquenta e cinco minutos","vinte e uma horas e cinquenta e cinco minutos"); }else if(c==10){ _root.relog_mc.gotoAndStop(11); _root.horas_cmb.removeAll(); 175 Apêndice A – Código ActionScript _root.horas_cmb.addItem("--selecciona um item--",0); _root.horas_cmb.addItem("cinco minutos","cinco horas e vinte minutos"); horas _root.horas_cmb.addItem("quatro minutos","quatro horas e cinco minutos"); horas _root.horas_cmb.addItem("três horas minutos","três horas e vinte e cinco minutos"); e e vinte e cinco vinte _root.horas_cmb.addItem("quatro horas e vinte minutos","quatro horas e vinte e cinco minutos");//* e cinco e cinco }else if(c==11){ _root.relog_mc.gotoAndStop(12); _root.horas_cmb.removeAll(); _root.horas_cmb.addItem("--selecciona um item--",0); _root.horas_cmb.addItem("meia noite","meia noite"); _root.horas_cmb.addItem("doze horas e cinquenta e cinco minutos","doze horas e cinquenta e cinco minutos"); _root.horas_cmb.addItem("vinte três horas");//* e três horas","vinte e _root.horas_cmb.addItem("vinte duas horas"); e duas horas","vinte e }else if(c==12){ _root.relog_mc.gotoAndStop(13); _root.horas_cmb.removeAll(); _root.horas_cmb.addItem("--selecciona um item--",0); _root.horas_cmb.addItem("nove horas e meia","nove horas e meia"); _root.horas_cmb.addItem("três quarto","três horas menos um quarto");//* _root.horas_cmb.addItem("nove horas e um quarto"); horas horas _root.horas_cmb.addItem("vinte e minutos","vinte e uma horas e três minutos"); e menos um uma um quarto","nove horas e três }else if(c==13){ _root.relog_mc.gotoAndStop(14); _root.horas_cmb.removeAll(); _root.horas_cmb.addItem("--selecciona um item--",0); _root.horas_cmb.addItem("cinco horas minutos","cinco horas e quarenta minutos");//* _root.horas_cmb.addItem("cinco minutos","cinco horas e oito minutos"); horas _root.horas_cmb.addItem("vinte horas minutos","vinte horas e vinte e cinco minutos"); 176 e e quarenta e vinte oito e cinco Apêndice A – Código ActionScript _root.horas_cmb.addItem("seis minutos","seis horas e quarenta minutos"); horas e quarenta }else if(c==14){ _root.relog_mc.gotoAndStop(15); _root.horas_cmb.removeAll(); _root.horas_cmb.addItem("--selecciona um item--",0); _root.horas_cmb.addItem("treze horas e um quarto","treze horas e um quarto"); _root.horas_cmb.addItem("quinze minutos","quinze horas e cinco minutos");//* _root.horas_cmb.addItem("três horas e um minuto"); _root.horas_cmb.addItem("uma hora e três minutos"); horas horas hora e e e cinco um minuto","três três minutos","uma }else if(c==15){ _root.relog_mc.gotoAndStop(16); _root.horas_cmb.removeAll(); _root.horas_cmb.addItem("--selecciona um item--",0); _root.horas_cmb.addItem("passam cinco minutos das catorze horas","passam cinco minutos das catorze horas"); _root.horas_cmb.addItem("catorze minutos","catorze horas e cinco minutos"); horas e _root.horas_cmb.addItem("passam dez minutos horas","passam dez minutos das treze horas");//* cinco das treze _root.horas_cmb.addItem("treze horas","treze horas"); }else if(c==16){ _root.relog_mc.gotoAndStop(17); _root.horas_cmb.removeAll(); _root.horas_cmb.addItem("--selecciona um item--",0); _root.horas_cmb.addItem("faltam vinte minutos onze horas","faltam vinte minutos para as onze horas"); para _root.horas_cmb.addItem("vinte e três horas minutos","vinte e três horas e quarenta minutos"); e quarenta _root.horas_cmb.addItem("vinte minutos","vinte horas e onze minutos"); e onze menos cinco horas _root.horas_cmb.addItem("oito horas minutos","oito horas menos cinco minutos");//* }else if(c==17){ _root.relog_mc.gotoAndStop(18); _root.horas_cmb.removeAll(); _root.horas_cmb.addItem("--selecciona um item--",0); 177 as Apêndice A – Código ActionScript _root.horas_cmb.addItem("passam vinte e cinco minutos das duas horas","passam vinte e cinco minutos das duas horas");//* _root.horas_cmb.addItem("catorze minutos","catorze horas e cinco minutos"); horas _root.horas_cmb.addItem("duas minutos","duas horas e vinte minutos"); e horas _root.horas_cmb.addItem("passam quinze horas","passam quinze minutos das duas horas"); cinco e vinte minutos das duas }else if(c==18){ _root.relog_mc.gotoAndStop(19); _root.horas_cmb.removeAll(); _root.horas_cmb.addItem("--selecciona um item--",0); _root.horas_cmb.addItem("nove horas","nove horas"); _root.horas_cmb.addItem("faltam vinte minutos para as dez horas","faltam vinte minutos para as dez horas");//* _root.horas_cmb.addItem("oito minutos","oito horas e quarenta minutos"); horas e quarenta _root.horas_cmb.addItem("faltam quinze minutos dez horas","faltam quinze minutos para as dez horas"); para as }else if(c==19){ _root.relog_mc.gotoAndStop(20); _root.horas_cmb.removeAll(); _root.horas_cmb.addItem("--selecciona um item--",0); _root.horas_cmb.addItem("dez horas e vinte minutos","dez horas e vinte minutos"); _root.horas_cmb.addItem("quatro minutos","quatro horas e dez minutos"); horas _root.horas_cmb.addItem("dezasseis horas minutos","dezasseis horas menos dez minutos");//* _root.horas_cmb.addItem("vinte e duas minutos","vinte e duas horas e quatro minutos"); e dez menos dez horas e quatro }else{ _root.horas_cmb.removeAll(); _root.resultado_txt._visible=true; _root.fundoResp_mc._visible=true; _root.resultado_txt.textColor=0xFFCC00; _root.resultado_txt.text="Parabéns\nchegaste jogo."; _root.pergseguinte_btn._visible=false; _root.horas_cmb.enabled=false; } } 178 ao fim\ndo Apêndice A – Código ActionScript //gerar aleatóriamente a primeira pergunta function gerarAleatorio(){ //para nao repetir as operações pergunta=random(20); while (pergunta == aux) { pergunta=random(20); } aux = pergunta; } function sons(s:String){ var som:Sound= new Sound(); som.attachSound(s); som.start(); } A.6.3.2 Caixa de selecção (comboBox) on(change){ _root.verify_btn._visible=true; //som clique _root.sons("clique.wav"); } on(open){ //som clique _root.sons("clique.wav"); } A.6.3.3 Botão “Verifica” on(release){ _root.fundoResp_mc._visible=true; _root.resultado_txt._visible=true; if(horas==_root.horas_cmb.getValue()){ _root.resultado_txt.textColor=0x006600; 179 Apêndice A – Código ActionScript _root.resultado_txt.text="Certo, pergunta\nseguinte"; passa para\n //som certo _root.sons("certo.wav"); _root.pergseguinte_btn._visible=true; _root.horas_cmb.enabled=false; _root.verify_btn._visible=false; }else{ _root.resultado_txt.textColor=0xFF0000; _root.resultado_txt.text="Errado, tenta\noutra vez"; //som errado _root.sons("errado2.wav"); } } A.6.3.4 Botão “Início” on(release){ loadMovie("inicioHoras.swf",_root); } A.6.3.5 Botão “Seguinte” on(release){ if(_root.inc < 15){ _root.gerarAleatorio(); pergSeguinte(pergunta); _root.inc++; }else{ pergunta=21; pergSeguinte(pergunta); } } 180 a Apêndice A – Código ActionScript A.7 Página Principal A.7.1 Camada de acções var permissao:Boolean=false; fscommand("fullscreen", true); fscommand("showmenu", false); var flag:Boolean=true; //inciar o som de fundo var somFundo:Sound= new Sound(); somFundo.attachSound("menuPrincipal.wav"); somFundo.start(); //quando a reprodução do som de fundo chega ao fim somFundo.onSoundComplete=function(){ somFundo.start(); } A.7.2 Botão “1º e 2º ano” on(release){ loadMovie("./index.swf",_root); _root.somFundo.setVolume(100); } on(rollOver){ if(_root.permissao==true){ _root.apresent_mc._alpha=20; _root.printsjogs_mc.gotoAndPlay(60); } } on(rollOut){ if(_root.permissao==true){ _root.apresent_mc._alpha=100; _root.printsjogs_mc.gotoAndPlay(66); 181 começa do inicio Apêndice A – Código ActionScript } } A.7.3 Botão “3º e 4º ano” on(release){ _root.submenu_mc.gotoAndPlay(1); } A.7.4 Botão “Operações” on(release){ loadMovie("./inicioMinhoca.swf",_root); _root.somFundo.setVolume(100);//para reproduzidos todos os sons dos mesmos nos jogos serem //e também para dar som quando regressar a esta página } on(rollOver){ if(_root.permissao==true){//para mostrar as imagens do jogo no fim da animação _root.apresent_mc._alpha=20; _root.printsjogs_mc.gotoAndPlay(2); } } on(rollOut){ if(_root.permissao==true){ _root.apresent_mc._alpha=100; _root.printsjogs_mc.gotoAndPlay(6); } } 182 Apêndice A – Código ActionScript A.7.5 Botão “Dinheiro” on(release){ loadMovie("./inicioProblemas.swf",_root); _root.somFundo.setVolume(100); } on(rollOver){ if(_root.permissao==true){ _root.apresent_mc._alpha=20; _root.printsjogs_mc.gotoAndPlay(12); } } on(rollOut){ if(_root.permissao==true){ _root.apresent_mc._alpha=100; _root.printsjogs_mc.gotoAndPlay(18); } } A.7.6 Botão “Múltiplos” on(release){ loadMovie("./inicioPeixe.swf",_root); _root.somFundo.setVolume(100); } on(rollOver){ if(_root.permissao==true){ _root.apresent_mc._alpha=20; _root.printsjogs_mc.gotoAndPlay(24); } } on(rollOut){ if(_root.permissao==true){ _root.apresent_mc._alpha=100; 183 Apêndice A – Código ActionScript _root.printsjogs_mc.gotoAndPlay(30); } } A.7.7 Botão “Fracções” on(release){ loadMovie("./inicioPizza.swf",_root); _root.somFundo.setVolume(100); } on(rollOver){ if(_root.permissao==true){ _root.apresent_mc._alpha=20; _root.printsjogs_mc.gotoAndPlay(36); } } on(rollOut){ if(_root.permissao==true){ _root.apresent_mc._alpha=100; _root.printsjogs_mc.gotoAndPlay(42); } } A.7.8 Botão “Ordenação” on(release){ loadMovie("./inicioOrdenacao.swf",_root); _root.somFundo.setVolume(100); } on(rollOver){ if(_root.permissao==true){ _root.apresent_mc._alpha=20; _root.printsjogs_mc.gotoAndPlay(72); } } 184 Apêndice A – Código ActionScript on(rollOut){ if(_root.permissao==true){ _root.apresent_mc._alpha=100; _root.printsjogs_mc.gotoAndPlay(78); } } A.7.9 Botão “Horas” on(release){ loadMovie("./inicioHoras.swf",_root); _root.somFundo.setVolume(100); } on(rollOver){ if(_root.permissao==true){ _root.apresent_mc._alpha=20; _root.printsjogs_mc.gotoAndPlay(48); } } on(rollOut){ if(_root.permissao==true){ _root.apresent_mc._alpha=100; _root.printsjogs_mc.gotoAndPlay(54); } } A.7.10 Clipe de filme “Com/Sem Som” on(rollOver){ if(_root.flag==true){ _root.botaoSom_mc.gotoAndStop(2); }else{ _root.botaoSom_mc.gotoAndStop(5); } } 185 Apêndice A – Código ActionScript on(rollOut){ if(_root.flag==true){ _root.botaoSom_mc.gotoAndStop(1); }else{ _root.botaoSom_mc.gotoAndStop(4); } } on(press){ if(_root.flag==true){ _root.botaoSom_mc.gotoAndStop(3); }else{ _root.botaoSom_mc.gotoAndStop(6); } var som2:Sound= new Sound(); som2.attachSound("clique.wav"); som2.setVolume(100);//para se ouvir o som do clique do botao do som som2.start(); } on(release){ _root.botaoSom_mc.gotoAndStop(2); if(_root.flag==true){ _root.somFundo.setVolume(0);//sem som _root.flag=false; _root.botaoSom_mc.gotoAndStop(5); }else{ _root.somFundo.setVolume(100);//com som _root.flag=true; _root.botaoSom_mc.gotoAndStop(2); } } 186