Untitled - Educartec
Transcrição
Untitled - Educartec
AMBIENTE DE AUTORIA DE APLICATIVOS EDUCACIONAIS A Educartec adaptou o aplicativo SCRATCH (MIT - Massachusetts Institute of Technology) para conseguir ler informações da Mesa Educacional (Imagem01). O Scratch é um ambiente de programação visual muito simples e intuitivo, podendo ser usado por principiantes, jovens ou adultos, que queiram iniciar-se no mundo da programação de computadores e desenvolvimento de atividades interativas. OBJETIVO: Este tutorial tem como objetivo orientar no entendimento do ambiente SCRATCH, permitindo a construção de atividades pedagógicas com interação da Mesa Educacional. 1 2 Sumário Introdução ao Desenvolvimento de................................................................................. 5 atividades interativas......................................................................................................... 5 Conhecendo o ambiente de desenvolvimento do SCRATCH........................................ 8 Produzindo ou Importando Cenários............................................................................... 10 Produzindo ou importando personagens....................................................................... 14 Detalhando um pouco mais o Armazém de Comandos.............................................. 16 Características dos Blocos de Comandos....................................................................... 17 Animando e movimentando o personagem pelo cenário............................................ 19 Mudando a aparência do personagem......................................................................... 26 Praticando - I....................................................................................................................... 29 Controlando a Aplicação e Personagens........................................................................ 33 Só existem dois valores lógicos: verdadeiro / falso....................................................... 35 Trabalhando com listas..................................................................................................... 38 Praticando - II...................................................................................................................... 39 Trabalhando com Desenhos e Sons................................................................................ 42 Praticando - III..................................................................................................................... 42 Praticando - IV.................................................................................................................... 49 Dando Sensibilidade e Interatividade aos Personagens............................................... 50 Conhecendo os Últimos Operadores.............................................................................. 61 Trabalhando com a Mesa Educacional e o Scratch....................................................... 65 Criando Aplicativos Educacionais para a Mesa............................................................. 67 APLICATIVO EDUCACIONAL DOS SONS INICIAIS............................................................... 69 CONCLUSÃO....................................................................................................................... 92 3 4 Introdução ao Desenvolvimento de atividades interativas Elementos básicos de uma atividade Uma atividade pedagógica no SCRATCH pode conter alguns elementos básicos: Uma imagem de fundo É uma imagem que fica de fundo no cenário e onde tudo acontece sobre ela. Esta imagem deve ter coerência com o assunto que está sendo tratado. Por exemplo, para uma atividade que tenha como objetivo permitir que o aluno ordene números de 0 a 9, a imagem de fundo ideal é algo que lembre números em sequência, e até mesmo dê dicas para o aluno sobre a solução do que está sendo solicitado. Os personagens Os personagens são os elementos que irão interagir na cena, neste exemplo os personagens seriam os números de 0 a 9. Poderíamos ter aqui ainda outros tipos de personagens, tais como animais, pessoas, etc. 5 IMPORTANTE: para que o personagem se encaixe perfeitamente no cenário, o ideal é que o arquivo seja no formato PNG, ou seja, com transparência. Trilhas de áudio As trilhas de áudio podem ou não existir dentro de uma atividade. São na verdade arquivos de áudio gravados e utilizados dentro da atividade. Podem ser utilizados para: 1) Representar a fala de um personagem; 2) Dar uma instrução ao aluno; 3) Representar um som ambiente. Planejando a atividade: Para desenvolver uma atividade pedagógica o primeiro passo é pensar em um roteiro básico para sua criação. Vamos a um exemplo prático: Criar uma atividade que permita ao aluno completar uma sequência numérica, indo de 0 a 9. Rabisque uma estória para sua atividade, pois assim será possível entender a usabilidade do que você está criando. 6 Complete de 0 a 9. Complete de 0 a 9. 7 Conhecendo o ambiente de desenvolvimento do SCRATCH Para abrir o Scratch dê um duplo clique no ícone EDUCARTEC em sua área de trabalho: Você terá então o ambiente aberto em sua tela: Armazém de Comandos - com oito diferentes caixas cheias de comandos, sendo: MOVIMENTO / APARÊNCIA / SOM / CANETA / CONTROLE / SENSORES / OPERADORES / VARIÁVEIS. Comandos – esta é a área dos comandos. Os comandos variam conforme o bloco aberto do Armazém de Comandos. Neste caso os comandos abertos são os de Sensores, de cor azul claro. Para abrir novos comandos basta dar um duplo clique no bloco desejado no armazém de comandos. 8 Área de programação – é aqui que são arranjados os blocos de comandos, os personagens (trajes) e os sons, cada um em uma aba da janela. Barra de menu – é por meio da barra de menus que você abre, salva e exporta projetos, define a velocidade de execução da atividade e comprime imagens e sons para ocuparem menos espaço de armazenamento. Palco - é onde tudo acontece. Similar ao palco de um teatro, onde os cenários e os atores aparecem, interagindo com falas e ações, neste caso, por meio das programações dos blocos de comandos. Bastidores – é onde ficam armazenados os personagens (atores) que participarão da atividade que se desenvolverá no palco. Cenários – é nesta parte que ficam as imagens que servirão de fundo de tela (cenário) para o ambiente da estória. Ferramentas de Manipulação – para manipulação dos personagens, permitindo clonar, apagar, aumentar e diminuir. Ferramentas de Criação – permite desenhar um personagem (sprite) ou então abrir um pronto que esteja em um arquivo de imagem, preferencialmente do tipo PNG com transparência. 9 Produzindo ou Importando Cenários Os cenários como já sabemos, são as imagens de fundo de tela que irão compor nossa cena. Estas imagens podem ser criadas com recursos internos de desenho ou importadas de arquivos de imagens externos. Para criar uma imagem de cenário dê um duplo clique na miniatura do palco (quadrado branco) na área de cenários. Neste momento a aba de fundo de tela aparecerá na parte superior da área de programação. Caso esta aba não esteja selecionada dê um clique para selecionar e expor seu conteúdo. Você pode dar um nome para este cenário criado. Para criar novos cenários dentro do aplicativo você tem três opções: 1) Criar um desenhando com editor de pintura; 2) Importar um pronto usando um arquivo externo de imagem; 3) Capturar um cenário com a webcam (tirar uma foto). Vamos dar uma olhada no editor de pintura, para tal clique no botão Pintar. Será aberta a tela do editor: O editor é uma espécie de Paint do Windows, com alguns recursos bem interessantes. Veja abaixo a função de cada ícone. Ampliar todos os objetos desenhados na tela ou somente a parte selecionada. Reduz todos os objetos desenhados na tela ou somente a parte selecionada. Rotaciona no sentido anti-horário todos os objetos desenhados ou somente o selecionado. Rotaciona no sentido horário todos os objetos desenhados ou somente o selecionado. 10 Inverte horizontalmente (espelhar horizontal) todos os objetos desenhados ou somente o selecionado. Inverte verticalmente (espelhar vertical) todos os objetos desenhados ou somente o selecionado. Seleciona o pincel de pintura de mão livre e seu tamanho. Seleciona a borracha e seu tamanho. Seleciona a ferramenta de preenchimento. Você pode optar pelo tipo de preenchimento chapado ou gradiente. Seleciona a ferramenta de desenho de retângulo ou quadrado. Você pode optar ainda pelo tipo com e sem preenchimento. Para desenhar um quadrado pressionada a tecla SHIFT. perfeito mantenha Seleciona a ferramenta de desenho de elipse ou circunferência. Você pode optar ainda pelo tipo com e sem preenchimento. Para desenhar uma circunferência perfeita mantenha pressionada a tecla SHIFT . 11 Seleciona a ferramenta de desenho de linha e sua expessura de traço. Para desenhar uma reta em ângulo de 90 graus mantenha pressionada a tecla SHIFT. Seleciona a ferramenta de texto e seu arquivo de fonte e tamanho. Ferramenta de seleção de parte do desenho. Com esta ferramenta é possível que a ação executada reflita somente na parte selecionada, como por exemplo a ação de reduzir e ampliar. Ferramenta que permite selecionar uma área que servirá logo após como uma espécie de carimbo. Ferramenta de seleção de uma cor. Paleta de seleção de cores. Ao clicar no ícone lateral você alterna entre os dois tipos de paleta de cores. Com esta ferramenta você alterna entre duas cores predefinidas. Com esta ferramenta você insere na tela duas linhas guias que indicam o centro da imagem desenhada. Ferramenta de zoom mais e zoom menos de tela. Permite trabalhar as imagens em detalhes. 12 Para importar uma imagem de fundo de tela já pronta, basta clicar no botão Importar. Será aberta a caixa de diálogos Importar imagem de fundo. Selecione o diretório onde está a imagem e logo após dê um clique sobre a imagem desejada e outro clique sobre o botão ok. Você terá agora seu palco com a nova imagem de fundo (novo cenário). Observe que o SCRATCH automaticamente coloca sua resolução de imagem para 480 x 385 pontos de tela (pixels). Você pode ainda editar a imagem de fundo usando o editor ou criar uma cópia idêntica da imagem. Uma outra opção para produzir a imagem de fundo para seu cenário é capturando uma imagem com sua webcam. Pode ser uma imagem impressa ou uma cena real. Posicione a imagem que você deseja capturar da melhor maneira possível e clique no botão com desenho de uma câmera fotográfica e depois no botão Feito. Você pode usar as ferramentas de edição para ajustar da melhor maneira a imagem capturada. 13 Produzindo ou importando personagens Os passos para desenhar, importar ou capturar uma imagem para servir de personagem são similares aos passos para a produção de imagens de fundo de cenário, porém antes de prosseguir, temos que entender alguns conceitos de um personagem. Os personagens são formados por um ou mais sprites. Os sprites são quadros da animação de movimeto de um personagem. Um personagem com um único sprite é um personagem estático, já um personagem com vários sprites pode simular um movimento. Veja o exemplo de personagem abaixo e seus sprites: Se você observar bem verá que existem apenas quatro imagens, sendo que a posição 1 é igual a posição 6, ou seja, a posição inicial é igual a posição final, e a posição 2 é igual a posição 5. Esta técnica permite a ilusão de um movimento contínuo (em loop), onde o personagem inicia e finaliza o movimento na mesma posição. IMPORTANTE - Quanto maior for o número de quadros intermediários simulando posições diferentes do movimento, maior será a qualidade da animação na tela. Vamos a um exemplo passo a passo para montar o personagem “Menino” com os sprites do exemplo citado acima. Este exemplo subentende que você já possui em seu computador os quadros na animação necessários (sprites). Baixando os arquivos para os projetos: Para o desenvolvimento das atividades de todo o livro, entre no link abaixo e faça download do pacote de arquivos de imagens e projetos Scratch. www.educartec.com.br/imagemambienteautoria IMPORTANTE – salve os arquivos em um diretório conhecido, pois você necessitará localizar estes arquivos dentro do SCRATCH. Vamos agora a uma sequência passo a passo para a criação do personagem com animação dentro do SCRATCH: 1) Clique no botão Escolha um Sprite do Arquivo 14 ; 2) Selecione a imagem do primeiro sprite; Será criado então o objeto para o personagem. Você pode dar um nome ao objeto que lembre o personagem, neste caso usamos o nome Menino. Acesse o guia Trajes e veja que o personagem possui apenas um sprite. Para inserir os demais quadros da animação (sprites), clique no botão importar e carregue as demais imagens: per2.png, per3.png,- per4.png, per5.png e per6. png. Pronto, temos agora o personagem pronto para ser animado com seus seis sprites. 15 Detalhando um pouco mais o Armazém de Comandos O Armazém de comandos é formado por oito grupos de comandos, sendo: Comandos para trabalhar movimentação, posicionamento e rotação de personagens e objetos no palco. è De cor azul Comandos para animar personagens, mudar a cor, aplicar efeitos gráficos, mudar o tamanho, ocultar e apresentar objetos e personagens, mostrar mensagens em tela e para mudar a camada dos objetos. è De cor roxa Comandos para tocar sons diversos e narrações, notas musicais de diversos instrumentos, definir volume e definir ritmo. è De cor pink Comandos para desenhar no palco, mudando a cor e a espessura do traço, bem como usar o recurso de carimbo. è De cor verde Comandos que controlam a ordem e o momento que as ações serão executadas dentro da sua criação. è De cor laranja Estes comandos, como o próprio nome sugere, permite que os persongens virtuais ganhem sentidos, tais como tato e audição. Com estes comandos é possível dar ao personagem a capacidade de perceber o ambiente, como por exemplo, saber a distância entre os demais elementos do palco, fazer perguntas e aguardar respostas. è De cor azul claro Estes comandos darão acesso aos operadores matemáticos, operadores condicionais e operadores de texto. Os comandos condicionais complementam os comandos de Controle no fluxo de acontecimento das ações. è De cor azul verde claro Os comandos de variáveis criam espaços na memória do computador para guardar informações que podem ser registradas, alteradas e acessadas enquanto o aplicativo está em execução. São recursos muito úteis na criação de uma atividade interativa. è De cor laranja escuro 16 Características dos Blocos de Comandos Tal como vimos no armazém de comandos, os blocos são agrupados por cores. Existem características dos blocos de comandos que podem ser identificadas pelo formato dos blocos, veja abaixo: Empilhamento: Estes blocos têm uma cavidade na parte de cima e uma saliência na base, tal como . Estas saliências e encaixes servem para empilhar os blocos de forma ordenada e lógica, criando uma ideia de sequência de acontecimento. Encaixe: Os blocos que permitem encaixe de outros blocos tem um formato de “C” e recebem dentro deles diversos arranjos de blocos com capacidade de empilhamento. Veja a composição criada. Entrada de informações digitada: A entrada de informações digitada é feita em blocos que possuem um pequeno campo branco de bordas arredondadas, tal como . Neste caso, o número 10 é digitado e comandará que o personagem vá para a coordenada 10 do eixo X do palco. Entrada de informações por escolha em uma lista dinâmica ou lista fixa: A entrada de informações por lista ocorre, por exemplo, com o comando ao mude para o traje. Este comando permite criar animações de personagens utilizando diversas imagens que representam os quadros da animação. Os nomes apresentados na lista são carregados dinamicamente com os nomes das imagens importadas para formar a animação do personagem. As listas podem também apresentar informações fixas. 17 É importante informar que este tipo de lista também aceita uma entrada de valor diferente dos valores predefinidos, como por exemplo, 75 graus. Tipo de dados Existem três tipos básicos de entrada de informações, sendo: TIPO ACEITA Numérico Números digitados e bloco de comando que retorne números. EXEMPLO - bloco com cantos arredondados. Alfanuméricos Lógicos (boleanos) Números e letras digitados ou escolhidos em uma caixa de seleção ou ainda blocos de comando que retornem números, letras e condições lógicas. Aceitam apenas blocos de comando que informem verdadeiro ou falso. Entrada de informações por bloco de comando Antes de ver este tipo de entrada temos que saber que existem os blocos que possuem a característica de repórteres, ou seja, dão alguma informação para ser usada dentro da composição dos blocos de comando. Por exemplo, poderíamos criar uma composição de comandos que mudará a posição X do personagem de forma dinâmica, tal como . Este recurso dá a entrada da nova posição do personagem pelo comando que retorna a posição atual do ponteiro do mouse no eixo X, bastando encaixar um dentro do outro, fazendo com que o personagem siga o ponteiro do mouse no eixo X (veremos este assunto de forma mais completa mais a frente). Para usar este tipo de composição de blocos de comando temos que seguir a regra de encaixe: 18 Monitoramento: Alguns blocos tipo repórter tem uma caixa de checagem . Se a caixa for selecionada aparecerá no palco um monitor, mostrando o valor do repórter na . ocasião e atualizando esse valor, à medida que for mudando Geralmente este recurso é utilizado para mostrar a pontuação alcançada em uma atividade (veremos este assunto mais em detalhes). Ponto de partida: Os blocos de comandos de pontos de partida possuem sua parte superior arredondada e servem para dar o início em uma ou mais ações e sempre iniciam com o termo Quando... São eles: Quando clicado o ícone iniciar comandos (bandeira verde na parte superior direita do palco). Quando pressionada a tecla especificada na lista, no caso do exemplo da imagem, a tecla <espaço>. Quando um personagem ouvir de outro uma solicitação (um anúncio). Quando clicado com o botão esquerdo do mouse sobre o objeto no palco. Animando e movimentando o personagem pelo cenário Importante salientar que a animação de um personagem é feita por meio da ação de mostrar e esconder os sprites de forma sequencial e a movimentação é realizada por um comando de programação para mudar a posição do personagem na tela. Vamos construir passo a passo cada forma de animação e movimentação: Animando um personagem: Para animar um personagem utilizaremos os primeiros comandos de bloco. Selecione no Armazém de Comandos o bloco de comandos Controle com um clique . Logo em seguida arraste o comando de blocos Quando tecla ... pressionada e o comando de bloco Espere ... segundos para a área de comandos. 19 Observe que o primeiro comando serve para identificar qual tecla está sendo pressionada. Como padrão é configurado a tecla <espaço>, mas podemos configurar qualquer tecla, bastando clicar na seta e logo em seguida na tecla desejada. Configure o segundo comando com o tempo de 0.05 segundos (use ponto e não vírgula). Este tempo é que define a velocidade da animação do personagem. Mude agora para o bloco de comando Aparência a área de Comandos o comando de bloco Mude para o traje ... e arraste para . Altere o traje para o sprite per2, pois o sprite per1 é o que já está na tela. Arraste e aproxime os blocos para que fique com a formação igual a da imagem. Quando você aproxima os dentes de encaixe dos blocos eles se atraem, como um ímã que atrai um metal. Basta arrastar, aproximar e soltar o bloco. Vamos agora completar a animação, para tal temos que duplicar os blocos de animação do personagem para ir até o último Sprite, no caso o Traje per6. Clique com o botão direito sobre o bloco mude para o traje... e logo em seguida clique sobre o comando duplicar. O bloco de comando duplicado ficará colado no ponteiro do mouse. Posicione na parte inferior dos blocos iniciais e clique com o botão esquerdo do mouse para colar os blocos duplicados. Logo em seguida altere o sprite para per3. Você terá no final a seguinte construção de blocos de comandos na tela. Faça o teste pressionando a tecla de <espaço>, seu personagem deverá realizar o movimento no palco. 20 Movendo o personagem pelo cenário Antes de entender como usar os comandos para movimentar um personagem pela tela, temos que entender o sistema de coordenadas e posicionamento dos objetos (personagens, etc) no palco. O centro do palco é o ponto 0,0. Para direita e para cima são valores positivos, já para baixo e para esquerda são valores negativos. Podemos considerar que temos uma resolução de 480 por 360 pontos para a tela do palco. Mas como saber a coordenada X,Y de um ponto específico do palco? Basta posicionar o ponteiro do mouse neste ponto e olhar a coordenada indicada na base da janela do palco. Vamos agora conhecer o bloco de comandos de Movimento , para tal dê um clique sobre ela para abrir seus comandos. Soma o número especificado na coordenada X do personagem. Posiciona o personagem na coordenada X especificada. Soma o número especificado na coordenada Y do personagem. Posiciona o personagem na coordenada Y especificada. Posiciona o personagem na coordenada X, Y especificada. Leva o personagem da sua posição atual até a posição especificada dentro do tempo determinado, criando posições intermediárias. Apresenta no palco um painel que informa a posição da coordenada X do objeto (-240 a 240). 21 Apresenta no palco um painel que informa a posição da coordenada X do objeto (-180 a 180). Gira o personagem no sentido horário o número de graus especificado. Gira o personagem no sentido anti-horário o número de graus especificado, de forma acumulativa. Aponta o personagem para a direção especificada. Apresenta no palco um painel que informa a direção do personagem em graus dentro do palco. Muda a direção do personagem em 180º quando tocar na borda do palco. Muda o personagem para a posição do cursor do mouse ou de outro personagem dentro do palco. Aponta o personagem para a direção do cursor do mouse ou de outro personagem dentro do palco. Antes de começar a usar os comandos de movimento, temos que entender e configurar os bloqueadores de rotação dos personagens. Estilos de Rotação Estes três botões controlam as limitações e permições de giro do personagem quando este muda de direção: Rotação: permitida a rotação do personagem sem restrição. Esquerda-Direita: restringe a rotação do personagem para esquerda e direita. Sem Rotação: personagem sem nenhum tipo de rotação. Animando um personagem: São inúmeras as combinações de comandos de blocos que podem ser arranjados para programar a movimentação de um personagem ou objeto pelo palco. Outro entendimento que devemos ter antes de animar um personagem ou objeto 22 é a vista utilizada. No mundo 2D, onde movimentamos no eixo X e eixo Y apenas, podemos animar um personagem na vista SUPERIOR ou na vista FRONTAL (existe também a vista ortogonal, que não será tratada neste livro). VISTA MOVIMENTO NO EIXO DESLOCAMENTO PARA Superior X Esquerda /Direita Superior Y Para frente / para trás Frontal X Esquerda /Direita Frontal Y Para cima / para baixo Vamos construir um conjunto de blocos de forma simples, porém eficiente, que permitirá a movimentação do personagem para todos os lados. Vamos usar em nosso exemplo a vista superior. 1) Você pode usar uma imagem vista de cima. Para nosso exemplo vamos usar a imagem de um carro (para baixar a imagem acesse www.educartec.com.br/ imagens/carro.png); 2) Clique no ícone de escolha de sprite ; 3) Acesse a pasta onde está a imagem, selecione a mesma e clique ok; 4) Acesse a guia trajes e clique no botão Copiar; 23 5) Clique no botão Editar do segundo sprite (o copiado) e gire a imagem. Para tal no editor de pintura clique três vezes no botão para deixar o carro virado totalmente para a esquerda e clique Ok; 6) Repita esta operação até ter os quatro sprites, conforme a imagem; 7) Vamos agora programar a movimentação do nosso carro. Para tal acesse a guia Comandos; Importante – entenda que estamos dentro da programação do personagem carro. Tudo que for feito aqui influenciará a princípio e por padrão o comportamento deste personagem somente. Abra o bloco de comandos bloco e arraste para a área de comandos o . 8) Abra o bloco de comandos bloco . e arraste para a área de comandos o 9) Abra o bloco de comandos bloco . e arraste para a área de comandos o 10) Organize os blocos conforme a imagem abaixo: Configure a tecla <seta para a direita>, o traje carro3 e o valor para incrementar o eixo X do personagem em 3 pontos no palco. O carro3 é o sprite que tem sua posição virada para a direita. Quanto maior o valor de incremento do eixo X, maior é a velocidade do carro. 24 11) Repita estes passos até ter os comandos que movimentam o personagem carro para a esquerda, para cima e para baixo. Utilize o botão direito do mouse sobre o comando de controle (amarelo) e selecione o comando duplicar. Arraste e solte a cópia no local desejado. No final do trabalho você deverá ter: Lembre-se de alterar as teclas de movimentação para setas para direita, esquerda, acima e para baixo, bem como para retornar no eixo X (para esquerda) e Y (para baixo) basta usar o valor negativo, no caso -3. Temos um problema para resolver, nosso carro ultrapassa os limites do palco. Para resolver esta situação, vamos usar o conjunto de comandos abaixo: Vamos entender o que foi feito: Usamos o bloco Se para avaliar se uma situação é verdadeira, ou seja, se a posição do carro no eixo X for maior (símbolo >) que 205. Esta condição se confirma quando o personagem carro chega ao final do palco e o valor da posição no eixo X ultrapassa o valor de 205. Quando isso acontece é executado o comando que está dentro do bloco amarelo de condição Se, ou seja, ele decrementa (subtrai) a posição do carro em 3 pontos, mantendo o carro estático, mesmo que pressionemos a tecla <seta para direita>. Para criar a condição foi usado o bloco do tipo que permite comparar se um valor é maior que outro . No operador direito da comparação colocamos o comando do tipo repórter que informa a posição X do personagem e do lado esquerdo o valor máximo que o personagem deve atingir, neste caso 205. 25 Use estes blocos e a lógica utilizada e construa a mesma estrutura de blocos para as demais situações de movimentação do personagem carro. No final você terá algo como: IMPORTANTE: Tome cuidado com os números negativos dos eixos X e Y. Vamos relembrar: o número -209 é menor que o número -206, por isso construa sua lógica com cuidado. Vamos voltar a ver em mais detalhes os comandos (lógicos). condicionais Mudando a aparência do personagem Para mudar a aparência de um personagem, ou até mesmo do palco, utilizamos o bloco de comandos . Veremos a finalidade de cada comando a seguir: Como já foi visto anteriormente, o personagem pode ter várias imagens, conhecidas como Sprite e chamadas de Trajes internamente em nosso ambiente de autoria. Este comando realiza a seleção do traje que vai ser mostrado no palco. Se selecionada sua caixa, coloca um painel no palco que informa o número do traje que está em uso no momento. Pode ser usado nos arranjos de comando para informar o número do traje. 26 Muda o traje do personagem para o próximo da lista. Se estiver usando o último traje da lista, retornará para o primeiro traje. Coloca na tela um balão de conversa (tipo revista em quadrinhos) pelo tempo especificado (em segundos) e com o conteúdo digitado. Coloca na tela um balão de conversa (tipo revista em quadrinhos) com o conteúdo digitado e fixo (sem tempo para desaparecer). Coloca na tela um balão de pensamento (tipo revista em quadrinhos) pelo tempo especificado (em segundos) e com o conteúdo digitado. Coloca na tela um balão de pensamento (tipo revista em quadrinhos) com o conteúdo digitado e fixo (sem tempo para desaparecer). Incrementa ou decrementa o efeito selecionado, neste caso o efeito fantasma, que aplica ao personagem um efeito de transparência. Este comando também pode ser aplicado às imagens do palco. Muda o valor do efeito selecionado para o valor digitado. Este comando também pode ser aplicado às imagens do palco. Limpa os efeitos gráficos aplicados ao personagem ou ao palco. Incrementa ou decrementa o tamanho do personagem, aumentando ou diminuindo seu tamanho conforme o valor digitado. Para diminuir o tamanho utilize valores negativos. Redimensiona o tamanho do personagem utilizando porcentagem. No exemplo de 110% estamos aumentando em 10% o tamanho real do personagem, pois 100% é o tamanho original. Se colocassemos -50% estaríamos reduzindo pela metade o tamanho do personagem. 27 Se selecionada sua caixa, coloca um painel no palco que informa o tamanho atual do personagem, sendo que o valor 100 representa o tamanho original do personagem. Pode ser usado nos arranjos de comando para informar o tamanho atual do personagem. Faz o personagem desaparecer e não ser detectado pelos demais elementos do palco. Faz o personagem reaparecer e voltar a ser detectados pelos demais elementos do palco. Os objetos e personagem ao serem inseridos no palco assumem cada um uma camada, ou seja, o último objeto inserido assume a camada mais superior, sobrepondo e escondendo os demais. Este comando coloca o objeto ou personagem sobre os demais, independente da camada que se encontra no momento. OBS: quando movemos um objeto ou personagem como o arrastar do mouse no palco, este também assume a camada mais superior. Muda para trás de outros objetos ou personagens o número de camadas especificado. COMANDOS EXISTENTES SOMENTE PARA SEREM USADOS NO PALCO Muda para o fundo (cenário) de tela cujo nome for especificado. Muda para o fundo de tela seguinte (cenário seguinte). Se marcada a caixa de seleção coloca um painel no palco informando o número do fundo de tela utilizado no momento. Serve ainda para informar comandos que necessitem receber o número correspondente ao fundo de tela atual. 28 Praticando - I Precisamos criar uma atividade onde um professor pergunta e um aluno responde operações simples de soma entre dois números que podem variar entre 1 a 10. Não podemos usar números fixos, ou seja, a cada vez que a professora pergunta ela escolhe números diferentes. Para criar esta atividade vamos necessitar conhecer mais sobre variáveis. Tal como citado anteriormente sabemos que uma variável é um espaço na memória que guarda uma informação. Este espaço na memória recebe um nome para poder ser acessado e alterado quando necessário. Para criar uma variável no Scratch acesse o bloco de comandos e clique no comando , quando será aberta a caixa de diálogo abaixo: Considerando que a professora passará para o aluno dois números para serem somados, vamos criar duas variáveis, uma com nome de Operador1 e outra com nome de Operador2. Deixe marcada a opção para todos os objetos para que esta variável possa ser usada pelos demais personagens, no caso o aluno. Se colocássemos para este objeto apenas as vairáveis criadas poderiam ser usadas apenas pelo personagem criador, no caso a professora. Teremos então no lado esquerdo da tela as variáveis criadas, as quais na verdade se tornaram comandos do tipo repórter, ou seja, podem informar a qualquer momento o valor que está contido em cada variável. Vamos agora posicionar os personagens. O aluno você provavelmente já tenha em seu computador, pois em atividades anteriores já foi baixado. A professora você deve baixar em www.educartec.com.br/ imagens/professora Posicione e redimensione os personagens no palco de maneira que fiquem similar a imagem: Renomeie os Professora e Aluno . personagens para 29 Vamos agora conhecer alguns novos comandos. Clique no personagem Professora para acessar a guia de Comandos. Abra o bloco de comandos e arraste para a área de comandos os comandos e o comando anuncie para todos . Clique na lista, quando será aberta a opção novo..., clique sobre ela e entre com o nome da mensagem. Este comando é a forma que o personagem, no caso a professora, vai se comunicar com os demais personagens no palco. O comando Anuncie...Responda é o mesmo que quando uma pessoa dá um sinal para outra executar algo, neste caso ela dá um sinal ao aluno para que ele responda. Teremos então na área de comandos do personagem professora. É importante entender que a palavra usada responda poderia ser qualquer outra, como por exemplo, resolva. Bom, agora vamos colocar na área de comandos os blocos repórter que informar o valor da variável Operador1 e Operador2. Lembrando que estas variáveis estão vazias, pois ainda não receberam nenhum valor dentro delas. Temos um problema a ser resolvido, como a professora vai escolher números entre 1 a 10. Para solucionar esta questão acesse o bloco de comandos e arraste para a área de comandos dois comandos: Estes comandos realizam um sorteio aleatório (randômico) de um número que esteja entre o número inicial definido, no caso o número 1, e o segundo número, no caso o número 10. Estes dois números sorteados servirão para ocupar as variáveis Operador1 e Operador2. 30 Precisamos agora de um comando que coloque estes valores nas variáveis. Acesse novamente o bloco de comandos e arraste para tela de comandos duas cópias do comando . Logo após configure para que um dos comandos mude a variável Operador1 e outro mude a variável Operador2. Falta agora fazer a professora falar para o aluno qual a soma ele deve realizar. Acesse o bloco de comandos e insira o . Este comando coloca na tela um balão de fala. comando Mas o que exatamente a professora tem que dizer ao aluno? Ela tem que dizer qual a operação de soma ele deve realizar, algo como: Some (Operador1) + (Operador2) Precisamos então . juntar estas Para tal acesse o bloco de comandos área de comandos o comando informações dentro do comando e arraste três vezes para a Pronto, temos tudo que necessitamos para programar os comandos do personagem professora: 31 Vamos então começar a montar nosso fluxo de comando. Primeiramente vamos colocar os valores sorteados nas variáveis... Teremos então... Agora temos que compor o texto que será inserido no balão de fala da professora. Temos três blocos de comandos junte. Vamos usar inicialmente dois para compor... Digite Some no primeiro espaço e coloque o comando Operador1 no segundo. Digite + no primeiro espaço e coloque o comando Operador2 no segundo. Por final use o último bloco junte e insira as composições acima em cada espaço. Teremos então... Agora coloque toda . a composição criada dentro do comando Depois altere o tempo para 3 segundos. Finalize então toda a programação da personagem professora, juntando os blocos na seguinte ordem. Depois altere o tempo para 3 segundos. Começaremos agora a construir os comandos do personagem Aluno, para tal dê um clique sobre o personagem para acessar sua guia de comandos. 32 Crie a estrutura de comandos abaixo: O comando é um recurso que fica aguardando o comando ser acionado (este comando está no bloco de comandos da personagem professora). Para somar os valores existentes dentro das duas variáveis e usamos o comando de soma do bloco . Compomos então ... E depois finalizamos a composição com . O que esse conjunto de comandos vai executar na verdade é o somatório dos números inseridos nas variáveis e apresentar dentro de um balão de fala do personagem Aluno, toda a vez que o personagem professora anunciar Responda. Controlando a Aplicação e Personagens Vamos conhecer agora de forma completa os blocos de comandos de e dar alguns exemplos de uso. É com estes comandos que colocamos uma espécie de Inteligência Artificial em nossos aplicativos educacionais. Como já visto, os comandos que disparam uma ação são: Quando clicado o ícone iniciar comandos (bandeira verde na parte superior direita do palco). Quando pressionada a tecla especificada na lista, no caso do exemplo da imagem, a tecla <barra de espaço>. 33 Quando um personagem ouvir de outro uma solicitação (um anúncio) . Quando clicado com o botão esquerdo do mouse sobre o objeto no palco. Neste comando a palavra objeto... assume o nome do objeto. Ação contínua (loop contínuo) Em diversas situações vamos necessitar para criar nossa aplicação educacional algo que funcione ininterruptamente dentro de nosso fluxo de ações. Para estes casos usaremos: Este comando executa ininterruptamente o conjunto de blocos abrangidos em seu interior e só para se for clicado ou se for acionado o comando de parada . Vamos a um exemplo simples: Vamos fazer com que uma imagem, no caso um balão vermelho, excute pequenos movimentos contínuos na tela, como se estivesse flutuando. Abra a imagem de um balão vermelho para servir de sprite para um novo . Baixe esta imagem do endereço - www.educartec.com.br/ personagem imagens/balao_vermelho.png Crie agora na guia de comandos do personagem a seguinte estrutura de blocos. O que ocorrerá na verdade é que ininterruptamente (sempre) ocorrerá um pequeno movimento para cima e para baixo, conforme os blocos de comando deslize em ... segundos para X , Y. Este bloco de comandos somente será finalizado se pressionada a tecla <p>. Lembre-se, o comando todos os personagens e do palco. 34 realmente irá parar todos os comandos, de Ação contada (loop limitado) É comum necessitarmos executar uma ação por um número definido de vezes. Para estes casos usamos: O número de vezes pode ser digitado ou fornecido por um bloco de comando repórter, que retorne um número. Vamos a um exemplo simples: Neste exemplo, quando a personagem receber um clique, sua imagem irá piscar na tela, ou seja, aparecer e desaparecer pelo números de vezes, que pode variar entre 1 e 5 vezes. Antes de darmos sequência no aprendizado dos blocos de conhecer mais sobre os blocos lógicas. , vamos que retornam resultados de operações Mas o que é uma operação lógica? Usamos operações lógicas o dia todo em nossas vidas. Por exemplo, quando falamos assim: se eu comprar esta TV esse mês não vai sobrar dinheiro e eu não poderei pagar a mensalidade da faculdade. Só existem dois valores lógicos: verdadeiro / falso. Nas operações lógicas podem participar números, letras ou valores lógicos. Por exemplo: 1 > 2 - retorna falso 2 > 1 - retorna verdadeiro 2 = 1 - retorna falso Casa = Caza - retorna falso Existem comandos operadores do tipo repórter que nos informam se uma operação lógica retorna verdade ou retorna falso. As comparações lógicas são realizadas utilizando operadores matemáticos: = > < De comparação Maior que Menor que 35 Veja a aplicação com os comandos: O número 1 é menor que o número 2, por isso retorna verdade. A letra f não é menor que a letra a, por isso retorna falso (a letra a vem antes no alfabeto, por isso tem valor menor que f). O conjunto de caracteres Alexandre é igual ao conjunto de caracteres alexandre, por isso retorna verdade. Veja que o Scratch não diferencia letras maiúsculas de minúsculas. Foi dito acima que podemos fazer operações lógicas com valores lógicos e que retornam valores lógicos. Mas como é isso? Vamos analizar a tabela abaixo: Temos na tabela acima todas as possíveis situações de combinação entre operações com valores lógicos. Vamos dar mais exemplos do cotidiano: 1) Só vamos ao cinema se for ao domingo e se você pagar a entrada. Nestas condições, o passeio só acontecerá se as duas condições forem satisfeitas; 2) Só vamos ao cinema se for ao domingo ou se você pagar a entrada. Nestas condições, o passeio ocorrerá se uma ou outra condição for cumprida. Vamos voltar a ver o restante do bloco . Repetição condicional (loop limitado ou ilimitado) Quando necessitamos criar uma espécie de chave liga/desliga que executa um conjunto de bloco de comandos utilizamos: 36 Com estes conjuntos de comandos criamos uma espécie de chave lógica. Criamos uma variável chamada Ligada. Esta variável assume o valor 1 ou valor 2, conforme a tecla precionada <b> ou <a>. No bloco sempre se ... colocamos uma comparação que retorna verdadeiro ou falso, dependendo do valor da variável Ligado. Se Ligado = 1, retorna verdadeiro, pois 1 = 1; Se ligado = 2, retorna falso, por 1 é diferente de 2. Sendo assim, o personagem irá girar de forma ininterrupta somente quando a condição lógica for verdadeira. Avaliação condicional Existem dois tipos de avaliação condicional, a que executa um bloco de comandos somente para a condição verdadeira e a avaliação condicional que executa um bloco de comando para a condição verdadeira e outro bloco de comando para a condição falsa. Somente atende se a condição for verdadeira. Atende se a condição for verdadeira ou falsa, porém com um bloco de comando distinto para cada situação. Vamos a um exemplo prático: Quando o personagem gato receber um clique ele fará uma pergunta e aguardará uma resposta. Assim que respondida a resposta vai para dentro do comando . O comando Se... compara se a resposta está correta, ou seja, igual a 5. Se verdadeiro diz “Você acertou” e se falso (senão) diz “Você errou”. 37 Trabalhando com listas Vamos conhecer agora o que é uma lista dentro do Scratch. Já sabemos o que é uma variável, ou seja, um espaço na memória do computador que recebe um nome para armazenar uma informação e pode ser acessada e alterada. Uma lista nada mais é do que uma coleção de variáveis agrupadas, uma espécie de tabela. Veja o exemplo abaixo: As listas são dinâmicas e podem receber novas informações a qualquer momento, inclusive durante a execução da aplicação. Permite criar e nomear uma lista; com a lista são criados automaticamente os 9 blocos abaixo. Comando repórter que informa o valor atual da lista. Importante lembrar que a lista pode ser formada por várias linhas e todas serão mostradas. Se a caixa ao lado do nome da lista for marcada um painel com o valor atual da lista é mostrado no palco. Insere na última posição da lista o valor digitado ou o valor inserido por outro comando. Apaga da lista a posição especificada pelo número, a última posição ou todos os elementos da lista. Insere um novo elemento na posição do número digitado, na última posição ou em uma posição aleatória qualquer. Neste caso a lista irá aumentar de tamanho. 38 Substitui o valor do elemento na posição do número digitado, na última posição ou em uma posição aleatória qualquer. Neste caso a lista não irá aumentar de tamanho. Informa o valor do elemento na posição do número digitado, na última posição ou em uma posição aleatória qualquer. Informa o tamanho da lista, ou seja, o número de elementos inserido nela. Retorna verdadeiro se a lista especificada conter o valor digitado ou informado e falso senão conter. Apaga a lista selecionada. Praticando - II Precisamos criar uma atividade onde o professor tem uma forma de inserir perguntas e respostas para que depois estas perguntas e respostas sejam apresentadas para os alunos responderem. Vamos dividir este desenvolvimento em duas etapas. A primeira será o conjunto de comandos que permitirá o professor inserir as questões e suas respostas. Primeiramente vamos criar duas listas e outra com nome de Respostas. , uma com nome de Perguntas Teremos então: 39 Vamos agora criar o conjunto de comandos que irá permitir a inserção de perguntas e respostas em suas respectivas listas. Primeiramente insira no palco a personagem professora e entre em sua guia de comandos e crie a estrutura de blocos de comando abaixo: Vamos entender o que ocorre no bloco de comandos acima: Quando clicamos a <barra de espaços> no teclado é acionado o primeiro comando do bloco pergunte .... e espere, quando então será apresentado no palco a imagem ao lado. Após você digitar a pergunta ela é inserida dentro do comando repórter . Atenção, não confunda, o que é digitado na tela para servir de pergunta é inserido no comando . Veja o esquema abaixo: A pergunta digitada é então inserida na lista Perguntas. Da mesma forma é inserida a resposta. Importante destacar que a pergunta e sua respectiva resposta devem estar na mesma posição de cada lista. Com este conjunto de comandos criamos uma programação que permite inserir novas perguntas e respostas toda a vez que desejarmos, basta apenas pressionar a tecla <barra de espaço>. Vamos agora criar os comandos para que a professora faça as perguntas aos alunos. 40 Vamos entender o que foi feito: Sabemos que temos duas listas, uma com as perguntas e outra com as respostas e podemos inserir novas perguntas e respostas a hora que bem quisermos. Sendo assim, como saberemos qual pergunta deve ser feita para o aluno? Para tal teremos que criar uma variável para armazenar o número da questão que será sorteada e apresentada ao aluno. Criamos então a variável . Quando clicamos na personagem professora no palco o primeiro bloco de comando é então executado... A junção destes comandos insere na variável um valor sorteado que pode ir de 1 ao tamanho da lista de perguntas, ou seja, o número máximo é a quantidade de perguntas inseridas, com isso não existe o perigo de tentar acessar uma pergunta que não existe. Após ter o número da questão definido o próximo passo é acessar o item da lista com esse número, para tal utilizamos o comando item...de Perguntas, fazendo com que este item da lista de perguntas seja apresentado na tela utilizando o comando pergunte ... e espere. Agora o que precisamos fazer é comparar a resposta do que foi digitado com a lista de respostas. Se verdadeiro, ou seja, se a resposta digitada for igual a resposta do item da lista respostas é exibida a mensagem “Você acertou. Parabéns”, senão, ou seja, se a resposta for falsa, é apresentada a mensagem “Você errou”. 41 Trabalhando com Desenhos e Sons Vamos agora completar o conhecimento dos comandos que faltam dos blocos e . Veja os comandos de escrita em tela. Importante entender que para desenhar em tela é necessário pelo menos um sprite (um personagem de uma única tela), pois os comandos do bloco estão disponíveis somente quando entramos em um personagem. Abaixa a caneta do sprite, permitindo-o desenhar no Palco. Tira a caneta do sprite, não permitindo que desenhe no Palco. Limpa todos os traços e carimbos do Palco. Muda a cor para a que está selecionada. Muda a cor da caneta para o valor especificado. Muda o tom da caneta pelo incremento especificado. Muda o tom da caneta pelo incremento especificado. Muda o tom da caneta para o valor especificado. especificado. especificado. Muda a espessura do traço da caneta pelo incremento Muda a espessura do traço da caneta para o valor Carimba a imagem do sprite no Palco. Praticando - III Para entender o uso dos comandos da vamos criar um pequeno editor de imagens para que o aluno possa exercitar sua criatividade. Crie então os seguintes sprites: 42 Depois posicione no palco conforme a imagem. Os círculos coloridos servirão para a seleção das cores e os traços servirão para a seleção da espessura do traço desenhado no palco. Vamos agora criar os comandos que permitirão a seleção de cores, a seleção do traço e o desenho em tela. Selecionando as cores: A seleção de cor é realizada por sprite, sendo que o sprite que escreverá em tela é o cursor. Para que a cor de escrita da caneta do sprite cursor seja alterada ao clicar nos sprites que representam as cores teremos que usar o recurso de anunciar ... escutar... Para cada sprite de cor crie o bloco de comandos abaixo: Crie um anúncio para cada cor. Teremos então: Quando o sprite for clicado Quando o sprite for clicado Quando o sprite for clicado Quando o sprite for clicado anunciará preto anunciará azul anunciará vermelho anunciará verde 43 Quando o sprite for clicado anunciará amarelo Quando o sprite for clicado anunciará traco1 Quando o sprite for clicado anunciará traco2 Quando o sprite for clicado anunciará traco3 Vamos agora programar a ação de ouvir do sprite desenho. para seleção da cor de Vamos agora programar a ação de ouvir do sprite do traço de desenho. para seleção espessura Toda a programação de seleção de cor e de espessura de traço está pronta. Vamos agora programar a ação de desenhar em tela. O primeiro passo é criar a estrutura de comandos que irá dar início no aplicativo de desenho e manterá o loop de execução, para tal crie a seguinte estrutura de comando. Temos agora que limitar a ação de desenhar em tela somente se a tecla do mouse estiver pressionada e limitar esta área para que não seja possível desenhar sobre os botões de seleção de cor no canto esquerdo da tela. Para saber se o mouse está pressionado e se estamos fora da área dos botões utilizamos o seguinte arranjo de comandos de comparação lógica: 44 Quando analisamos se o posicionamento do mouse no eixo X é maior que -190 estamos garantindo que o ponteiro do mouse está fora da área dos botões de seleção de cores. Teremos então a composição de comandos. Esta composição é na verdade uma operação lógica, onde: Mouse Pressionado? Mouse X > -190 Sim Retorna verdadeiro Não Retorna falso Sim Retorna verdadeiro Não Retorna falso Para que os comandos de desenho em tela sejam acionados temos que ter as duas situações como verdadeira, ou seja, o mouse pressionado e fora da área dos botões de cores, onde o valor da posição do mouse no eixo X deve ser maior que -190. Se as duas condições forem verdadeiras então serão executados os comandos que movimentarão o sprite cursor e os comandos de desenho em tela. Estes comandos fazem com que o sprite cursor siga o movimento do ponteiro do mouse nas suas posições X e Y no palco e abaixa a caneta para desenhar em tela, ou seja, habilita o desenho em tela quando o sprite se movimenta. A composição completa de comandos ficará então: 45 Resumindo o que ocorre é o seguinte: ao clicar na bandeira de verde de iniciar comandos ele entre num loop contínuo (sempre) e se o mouse estiver pressionado e o ponteiro posicionado fora da área de seleção de cores o sprite cursor passa a acompanhar o movimento do mouse e a desenhar em tela (abaixe a caneta), senão ele apenas levanta a caneta para não mais desenhar em tela com o sprite cursor. Para complementar e finalizar foi inserido nos comandos do sprite cursor uma composição de comandos para limpar a tela caso a tecla <barra de espaço> seja pressionada. Vamos agora conhecer os comandos de áudio e som . Podem ser gravados novos sons ou importados de arquivos de som. Scratch pode ler arquivos MP3, WAV não zipados, AIF e AU (desde que não sejam de 24 bits). Temos ainda acesso a uma biblioteca muito rica de sons de instrumentos que podem variar seu som pela nota musical e pelo rítimo (batimentos por minuto). Gravando um novo som ou narração: Para gravar um novo som acesse a guia Sons do personagem ou do palco e clique no botão Gravar. Será aberta então a janela do Gravador de Som. Clique no botão gravar para gravar sua trilha de áudio. Clique no botão parar para parar a gravação ou a execução da trilha de áudio. Clique no botão tocar para tocar a trilha de áudio. Depois de gravada a trilha clique no botão Ok para confirmar o salvamento da trilha ou no botão Cancelar para anular a gravação. Para importar um áudio já gravado em arquivo clique no botão será aberta a caixa de diálogo importar som: 46 , quando Selecione o arquivo de áudio desejado e clique no botão Ok. Scratch pode ler arquivos MP3, WAV não zipados, AIF e AU (desde que não sejam de 24 bits). Você pode também renomear as trilhas de áudio para organizar melhor o seu projeto. Para excluir um som basta clicar no “X” no canto direito. Para exportar um som gravado basta clicar com o botão direito do mouse, quando será aberto o comando “Exportar esse som”. Clique neste comando e salve o áudio em um arquivo. Vamos conhecer agora os blocos de comandos de : Este bloco reproduz um som definido e passa para a execução do próximo bloco mesmo que a execução do som não tenha chegado ao fim. Este bloco reproduz um som definido e aguarda o final da execução do som para executar o próximo bloco. Este bloco para a execução de todos os sons que estão sendo executados na aplicação. Incrementa ou decrementa o valor no volume. Por exemplo, se o volume atual estiver 25 e for usado este bloco, o volume passará a valer 15 (25 – 10 = 15). O som vai de 0 (zero) que equivale a mudo até 100 que equivale a volume máximo. Configura o volume por porcentagem, indo de 0% (mudo) a 100% volume máximo. Bloco de comando repórter que informa o valor atual do volume para o objeto. Se a caixa de seleção for marcada colocará no palco um painel informando o valor atual do volume. 47 Antes de continuarmos a explicação dos demais blocos de comando de som, temos que ter uma rápida introdução sobre ritmo e batidas. Para um som se transformar em música e trilha sonora ele tem que assumir um ritmo. O ritmo para a música pode ser entendido como um conjunto de sons em intervalos regulares ou irregulares, fortes ou fracos, longos ou breves. Dentro do ritmo temos uma batida, que na verdade é uma pulsação de som em um determinado tempo. O tempo na música é medido em bpm (batidas por minuto). Vamos agora aos blocos que trabalham o ritmo da trilha de áudio. Este bloco de comando determina quantas batidas teremos em um minuto. Não confunda com número de vezes que o instrumento irá tocar. Incrementa ou decrementa o ritmo conforme o número especificado. Bloco de comando do tipo repórter que informa qual o ritmo atual. Se a caixa de seleção for marcada coloca um painel no palco para expor o valor do ritmo atual. O bloco vai tocar o instrumento específico para a quantidade especificada de segundos, utilizando uma bateria MIDI. Mesmo que o bloco usa a palavra “tambor”, as opções no menu drop-down são muitos instrumentos de percussão diferentes, incluindo bateria, triângulo, etc. Os segundos dependerão da configuração do bloco que configura o bpm (batimentos por minuto). Por exemplo, se os bpm’s estiverem configurados para 60 e você definir que o tambor vai bater por 1 batida, significa que o tempo será 1 segundo. Este bloco de comando irá interromper a execução dos comandos pelo tempo especificado em batidas e não somente dos sons. O tempo em segundos dependerá da configuração dos bpm’s (batimentos por minuto). Por exemplo, se os bpm’s estiverem configurados para 30, o tempo de parada neste caso será de 30 segundos, pois cada batida leva 2 segundos. 48 Este bloco de comando seleciona entre os 128 diferentes instrumentos musicais e sons. Importante citar que um Sprite pode tocar apenas um tipo de instrumento por vez. A mudança de instrumentos não afeta o bloco tambor. Falta agora conhecer o bloco de comandos que dá acesso às notas musicais. Neste bloco as notas musicais são representadas por números. Segue abaixo uma relação das notas para facilitar o uso deste bloco: Mesmo que o teclado drop-down mostre apenas duas oitavas de notas (48 a 72), um número pode ser colocado manualmente para obter qualquer nota. Para alterar oitavas, basta adicionar ou subtrair 12 ao valor digitado. Praticando - IV Para entender o uso dos blocos de comando para o uso de sons, trilhas e notas musicais, vamos criar abaixo uma pequena composição musical. 49 Vamos entender o script anterior: Quando teclamos a letra “t” será repedida duas vezes a nota 62 por meio segundo, logo em seguida será repetida por duas vezes a nota musical 69 por meio segundo, logo em seguida será repetida por duas vezes a nota musical 81 por meio segundo e por final será executada a nota musical 69 também por meio segundo. Afirmamos aqui que 0.5 batidas é o mesmo que 0.5 segundos pois por padrão o ritmo configurado é de 60 bpm. Onde 1 batimento leva um segundo para ser executado, sendo assim 0.5 batimento leva 0.5 segundo para ser executado. Dando Sensibilidade e Interatividade aos Personagens Veremos agora uma parte muito importante do Scratch, onde permitiremos que nossos personagens tenham a possibilidade de sentir o ambiente virtual a sua volta e interagir com ele, criando uma espécie de inteligência artificial (A.I) em nossos aplicativos educacionais. Personagem realizando uma pergunta e registrando a resposta Já utilizamos em uma situação anterior estes comandos, porém agora vamos detalhar mais estes blocos. O bloco pergunte...e espere apresenta no palco o balão da pergunta e o campo de resposta. Quando o usuário responde e tecla <enter> ou clica no ícone de confirmação a resposta é inserida e armazenada no bloco repórter resposta. Caso a caixa de seleção do bloco resposta seja marcada é colocado no palco um painel que registra a resposta dada pelo usuário a pergunta realizada. Movimentação do personagem com o uso do mouse Temos dois blocos de comando do tipo repórter que informam as posições X e Y do ponteiro do mouse. e Vamor criar um script de blocos de comando que faça o personagem seguir o ponteiro do mouse e aprender um pequeno truque para mudar o eixo central da imagem. 50 Vamos usar a seguinte imagem como sprite. O centro da imagem é o ponto por onde ela é movimentada no palco, o que causa uma estranhesa, pois o correto é que ela seja movimentada pelo cabo. Para resolver este problema vamos anexar na imagem três quadrados brancos do mesmo tamanho da imagem, um na lateral esquerda e mais dois abaixo, fazendo com que o ponto central seja a ponta do cabo da raquete. Veja a imagem e entenda o que deve ser feito: Tome o cuidado de recortar todo o fundo e usar um padrão de arquivo com transparência (PNG / GIF). Crie os blocos de comando dentro do script do sprite raquete para que quando o aplicativo for iniciado sempre a posição X e Y do sprite seja a mesma posição X e Y do ponteiro do mouse, com isso o sprite seguirá o ponteiro do mouse. Prevendo a Colisão do Personagem Caso tenhamos que identificar dentro de nosso script quando o personagem se aproxima de outro personagem ou objeto no palco, podemos utilizar o bloco de comando . Este é um bloco repórter que informa a distância do personagem (sprite) que possui o script até o objeto selecionado em seu campo drop-down: Veja um exemplo de aplicação: O valor da distância é medido em pixel (pontos na tela). Já sabemos que o palco possui 480 de largura por 385 pixels de altura, com isso podemos concluir que o valor que deverá ser digitado para a comparação dependerá do tamanho do mesmo. No nosso exemplo o valor foi 50 pixels. Faça testes e tire suas conclusões. 51 O bloco pode ser usado também para medir a distância do sprite até o ponteiro do mouse. Veja o exemplo abaixo onde criamos um script que faz o personagem fugir do ponteiro do mouse, reposicionando aleatoriamente o personagem no palco. Medindo o tempo da tomada de ação do usuário dentro da aplicação Em muitos casos pode ser necessário saber o tempo transcorrido para a tomada de uma decisão ou uma resposta do usuário. Para esta finalidade temos o bloco repórter , o qual informa em segundos o tempo transcorrido a partir do momento que o aplicativo / arquivo foi aberto. Caso sua caixa de seleção esteja marcada é colocado no palco um painel que informa o tempo transcorrido. Este comando trabalha similar a um cronômetro. Caso seja necessário zerar este cronômetro e reiniciar a contagem usamos o bloco . Para exemplificar seu uso, vamos criar um script onde a professora realiza uma pergunta e aguarda uma resposta em no máximo 10 segundos. Veja o script abaixo: 52 Vamos entender toda a lógica que está sendo construída com os blocos de comando: Quando o personagem professora recebe um clique é anunciado “perguntado” para os demais scripts, iniciando sua execução. Logo após é feita a pergunta “Qual a capital do Brasil” e aguardada uma resposta, a qual após ser digitada é inserida no bloco resposta. Ao iniciar o script “Quando ouvir perguntado” a primeira ação é zerar o cronômetro . O próximo passo é iniciar um loop contínuo que será executado até que o comando seja encontrado. Com este arranjo de blocos de comandos criamos uma condição lógica que realiza um conjunto de blocos de comando caso não exista resposta (zero letras na resposta) e outro conjunto de blocos de comando caso exista uma resposta (resposta tem pelo menos um caractere). Temos agora que nos preocupar com a limitação de tempo para dar a resposta, pois caso ele seja ultrapassado, o aluno deverá ser reprovado e a professora deverá informar o término do tempo ao aluno. 53 Se o tempo for maior que 10 segundos será dito pela professora “Seu tempo acabou” durante 2 segundos e logo em seguida todo o script será parado (pare tudo). Mas se algo for digitado na resposta o fluxo lógico senão será acessado. Neste ponto do script teremos duas situações, ou o aluno respondeu de forma correta e dentro do tempo ou respondeu de forma errada também dentro do tempo. Caso o aluno responda corretamente teremos... Se a resposta for “Brasilia” e o tempo passado for menor que 10 segundos a professora dirá “Parabéns, você acertou.” Caso o aluno responda de forma errada teremos... Se a resposta NÃO for “Brasilia” e o tempo passado for menor que 10 segundos a professora dirá “Estude mais, você errou.” Após o aluno acertar ou errar a resposta o bloco e limpa a resposta do bloco repórter . 54 para todo o script Personagem percebendo o volume do som na aplicação Temos dois blocos que nos permitem saber qual o volume do som capturado pelo microfone instalado no computador, sendo: Bloco repórter que relata o quão alto está o som capturado pelo microfone, variando de 1 a 100. Caso você não tenha um microfone habilitado em seu computador, este bloco poderá retornar volume 0 ou -1. Se sua caixa de seleção estiver marcada, será colocado no palco um painel informando o valor atual do volume capturado pelo microfone. Este é um bloco lógico (boleano) que retorna verdadeiro se o som estiver igual a 30 ou superior e falso se o som capturado pelo microfone estiver abaixo de 30. Para testar a aplicação destes blocos de comando vamos construir um script que identifica o nível de volume capturado pelo microfone e altera o tamanho e brilho de um ícone tipo microfone. Veja o script: aumentará conforme o volume Após iniciada a aplicação o tamanho do sprite do áudio capturado pelo microfone e se o som for considerado alto, ou seja, com valor igual ou superior a 30, o brilho do ícone aumentará em 100 pontos. Conhecendo as características dos objetos Em muitos casos é útil conhecer as características de cada objeto usado no palco, seja ele um personagem ou um objeto simples. Para esta finalidade temos o bloco repórter abaixo: Não confunda a propriedade volume do sprite com o volume de captura de áudio do microfone . Esta propriedade é do volume do áudio que pode ser executado pelo sprite . 55 Inserindo a sensibilidade de tato no personagem Um dos grandes recursos do Scratch que permite criar interação com o cenário e inteligência artificial (A.I) dentro da aplicação são os blocos que identificam colisão. São eles: Este bloco lógico (boleano) retorna verdadeiro se o personagem está tocando no ponteiro do mouse, nas bordas do palco ou em outro personagem previamente selecionado na lista. Este bloco lógico (boleano) retorna verdadeiro se o personagem está tocando na cor especificada. Para selecinar uma nova cor clique no pequeno quadrado de cor para acessar o conta-gotas e logo após clique sobre a cor desejada. Este bloco lógico (boleano) retorna verdadeiro se uma determinada cor no personagem está tocando em outra cor de outro personagem, de outro objeto ou do próprio palco. Para selecionar as cores desejadas use o conta-gotas. Vamos a um exemplo bastante interessante onde criaremos um script em que uma bola se movimentará ao colodir contra as paredes de um recepiente circular de quatro cores. Importante salientar que todos os blocos de comando estão dentro do sprite bola. 56 Vamos entender este script: Criamos duas variáveis para guardar os valores de deslocamento da bola nos eixos X e Y; O primeiro arranjo de comandos é iniciado quando a bandeirola verde iniciar comandos é acionada, quando então inserimos nas variáveis valores aleatórios de 1 a 5; Logo em seguida é anunciado para todos Iniciado. Após a construção do primeiro bloco que dá início e aplicação, vamos construir o bloco que é o motor de colisão da aplicação e é iniciado pelo bloco do tipo chapéu; Para garantir a execução contínua dos blocos de comando foi usado o bloco sempre... Teremos agora duas situações para ser tratadas, uma onde a bola se movimenta sem colidir em nada e a outra quando a bola colide nas paredes do círculo: Se a bola não colidir os valores da posição X e Y serão incrementados pelas variáveis . Considerando que o círculo possui quatro cores, temos que montar um conjunto de blocos com várias operações de comparação lógica que retorne apenas verdadeiro ou falso, ou seja, está ocorrendo a colisão com uma das cores do círculo ou não está ocorrendo uma colisão. Basta agora montar os blocos tocando nas cores do círculo... 57 Teremos então a avaliação lógica que indicará se a bola está tocando em uma ou em outra cor do círculo e retornará verdadeiro ou falso. Temos agora que criar os blocos de comando que serão executados caso a bola toque em uma das cores do círculo. O que na verdade tem que ocorrer de imediato é a inversão da direção de deslocamento da bola e nesta ação entra a boa e velha matemática básica. O que dá a velocidade e a direção de deslocamento da bola são as variáveis . Sabemos ainda que inicialmente elas podem ser preenchidas com valores que variam de 1 a 5. Para inverter o deslocamento toda a vez que a bola bate na parede do círculo basta multiplicar as variáveis por -1, invertendo seu sinal entre + (mais) e – (menos). Para que a bola perca o contato de imediato com o círculo, inserimos comandos de movimento para a bola com a inversão de , onde incrementamos em alguns pontos a posição da bola para se afastar do círculo. 58 Para que a bola não fique em um movimento único de vai e volta, sem variar sua , porém temos um trajetória, será necessário escolher novos valores para problema, as variáveis não alteram mais seu valor entre 1 e 5, mas sim podem estar na faixa de -5 e 5. Se estiver com valores negativos ela estará descendo e se for positivo estará subindo. Para resolver este problema, antes de escolher um novo valor para identificamos se as variáveis são negativas (bola descendo) ou positivas (bola subindo). Vamos analisar os cálculos matemáticos que usamos para descobrir se um número é negativo ou positivo. Tivemos que realizar estes cálculos pelo fato de que o Scratch não possui um bloco de comando que faça isso diretamente. Se um número somado ao seu valor absoluto der zero é porque ele é negativo. Vejamos: Número: -3 -3 + 3 = 0 (igual à zero) Se der maior que zero é porque ele é positivo. Vejamos: Número: 5 5 + 5 = 10 (maior que zero) Saiba que: o valor absoluto de um número nada mais é do que ele mesmo sem sinal. Teremos então: 59 Temos agora que alterar os valores das variáveis para que a bola execute um trajeto diferente do que foi realizado antes de colidir com as paredes do para que a bola inverta sua círculo, bem como alterar o sinal das variáveis direção (suba se estiver descendo ou desça se estiver subindo). são negativos, pois Primeira situação: verdadeiro, ou seja, o resultado é igual à zero. Arranjando os blocos teremos agora: 60 é O que falta agora são os blocos que serão acionados quando são positivas: retornar falso, ou seja, as variáveis Concluímos então todo o script necessário para realizar o movimento aleatório da bola dentro do círculo. Conhecendo os Últimos Operadores Antes de entrar no assunto principal deste livro, a interação com a Mesa Educacional , sendo eles: Multimídia, vamos conhecer os últimos comandos Este bloco junta dois pedaços de textos ou caracteres isolados. Esta operação é conhecida como concatenação de strings e neste caso retornaria o texto: olá meu querido aluno. A palavra que está do lado direito do bloco possui uma posição para cada caractere. Se definirmos 1 no primeiro parâmetro o retorno deste bloco seria a letra E, assim como se o valor fosse 6 seria a letra R. 61 Este bloco retorna um número que equivale ao total de caracteres da palavra inserida no parâmetro, neste caso a palavra EDUCARTEC, retornando o valor 9. Este bloco retorna o resto da divisão de um número pelo outro. Se colocarmos 100 no primeiro parâmetro e 3 no segundo, o retorno desse bloco é 1, pois este é o resto da divisão de 100 por 3. Em programação este tipo de cálculo é chamado de Mod. Este bloco arredonda um número seguindo a seguinte regra: se o número à direita do ponto (pois é padrão americano, não se usa vírgula) for igual ou maior que 5 o número é arredondado para cima e se for menor que 5 é arredondado para baixo. Por exemplo, se o número for 3.4999 será arredondado para 3, mas se for 3.5 será arredondado para 4. Este bloco de comando executa diversas funções sobre um número, sendo: abs (valor absoluto), raiz quadrada, sin (seno), cos (coseno), tan (tangente), asin (aseno), acos (acoseno), atan (atangente), In (logaritmo natural), log (logaritmo), e^(número de Euler elevado a...) e 10^(base 10 elevada a potência...). Vamos exemplificar: Vamos calcular se um ano é bissexto ou não. Chama-se ano bissexto o ano ao qual é acrescentado um dia extra, ficando ele com 366 dias, um dia a mais do que os anos normais de 365 dias, ocorrendo a cada quatro anos (exceto anos múltiplos de 100 que não são múltiplos de 400). Os cálculos matemáticos para se saber se um ano é bissexto são os seguintes: 1) Divida o ano por 4, se o resto for 0 o ano poderá ser bissexto, caso contrário, não é bissexto; 2) Se ele passar na primeira regra (divisível por 4), temos que saber se ele termina 62 em 00 e se é divisível por 400. Vamos montar então os blocos: Primeiramente criamos uma variável para guardar o número de caracteres da data digitada. Logo após criamos o script para realizar a pergunta, acionar a validação da data e o script que identifica se o ano é bissexto ou não. A validação da data é feita somente identificando se ela está entre o ano 100 e o ano 3000 (datas válidas para este script). Caso a data digitada seja validada é acionado o script que calcula se o ano é bissexto ou não. A primeira coisa a ser feita é inserir na variável caracteres da data digitada: a quantidade de 63 A próxima etapa é saber se a data digitada é divisível por 4 e sem ter resto na divisão: Se tiver resto na divisão já podemos concluir que o ano não é bissexto. Porém se a divisão retornar zero, o próximo passo é saber se a data digitada é finalizada por 00. O script abaixo extrai os dois últimos dígitos da data e verifica se são iguais a zero, retornando um valor verdadeiro ou falso. Para fins de exemplo vamos simular que a 64 tenha sido 2010. Se o ano for divisível por 4 e não acabar em 00 (duplo zero) o ano é bissexto, tal como calcula o script abaixo: Agora falta realizar só mais uma verificação, ou seja, se é divisível por 4, acabando em 00 e divisível por 400. Se todas estas condições forem verdadeiras o ano é bissexto, caso contrário não. Teremos então o script completo: Trabalhando com a Mesa Educacional e o Scratch O que é a Mesa Educacional? A Mesa Educacional Multimídia Educartec é um hardware pedagógico que se conecta ao computador por uma porta USB. Ela é composta pelo tablado de 15 posições e um conjunto de peças plásticas que representam os símbolos gráficos, podendo ser letras, números ou 65 qualquer outro símbolo, como por exemplo, notas musicais, bandeiras de países, etc. O bloco de comando que faz a leitura das 15 posições da mesa é do tipo , sendo o bloco . Para ler qualquer uma das posições basta mudar o valor do campo, indo de 1 a 15. A conexão da mesa educacional com a atividade pedagógica desenvolvida dentro do Scratch ocorre de forma bastante simples: 1) Estando com a Mesa Educacional Multimídia ligada (luz verde piscando rapidamente); 2) Abra o aplicativo desejado; 3) Clique com o botão direito do mouse sobre o bloco de comando (no lado esquerdo da tela – Armazém de Comandos) e clique sobre mostrar observador da mesa; 4) Será aberto no palco o painel da Mesa Educacional; 5) Observe que a conexão está desligada. Para conectar a mesa com à aplicação basta clicar com o botão direito do mouse agora sobre o painel da mesa (painel vermelho) e escolha a opção selecionar porta serial/usb; 6) Selecione o número da porta serial onde a mesa foi instalada (caso você não saiba, consulte o manual de instalação); 7) Neste momento o painel passa a ter o status ligado e a luz verde da mesa passa a piscar mais lentamente indicando que a mesa está conectada com o computador; 66 8) Pronto, a mesa está conectada e pronta para ser usada em sua aplicação. Caso você queira sumir com o painel da mesa, basta clicar novamente com o botão direito do mouse sobre ele e escolher a opção desapareça. Criando Aplicativos Educacionais para a Mesa Após todo esse conhecimento absorvido, chegou a hora de criar nosso primeiro aplicativo educacional para ser usado em conjunto com a Mesa Educacional Multimídia Educartec. A primeira ação é juntar em uma única palavra todos os caracteres inseridos nas 15 posições. Vejamos como faremos isso: Para montar a palavra construída pelas peças no tablado da mesa vamos usar quatro variáveis. Crie as variáveis visíveis à todos os objetos: Considerando que são muitas posições para serem juntadas em um único bloco , vamos dividir esta tarefa em três etapas, por isso a necessidade das variáveis . Teremos então: Colocaremos estes valores concatenados (posições 1, 2, 3, 4 e 5) da mesa na . variável Faremos este mesmo procedimento para juntar as posições 6, 7, 8, 9 e 10 na 67 variável e as posições 11, 12, 13, 14 e 15 na variável . Com estes blocos de comando capturamos qualquer informação inserida no tablado da mesa, porém ainda estão divididas em três partes dentro das variáveis . Vamos juntar estas partes dentro da variável . Teremos então: Logo após basta inserir tudo dentro de um bloco de execução contínua: Com este script tudo que for construído na mesa será lido pelo Scratch. Vamos agora criar nosso aplicativo educacional de exemplo, completo e totalmente funcional. 68 APLICATIVO EDUCACIONAL DOS SONS INICIAIS Objetivos didáticos: 1) Entender que as palavras são compostas por unidades sonoras e que estas unidades podem ser pronunciadas separadamente; 2) Comparar palavras quanto às semelhanças sonoras em suas sílabas iniciais; 3) Perceber que palavras diferentes possuem partes sonoras iguais; 4) Identificar a sílaba como unidade fonológica; 5) Desenvolver a consciência fonológica, por meio da exploração dos sons das sílabas iniciais das palavras (aliteração). Público-alvo: Alunos em fase de alfabetização que precisam perceber que a palavra é constituída de significado e unidades sonoras e que é necessário refletir sobre as propriedades sonoras das palavras, desenvolvendo a percepção fonológica. Processo de aplicação da atividade: Serão apresentadas na tela cartas em pares que possuem unidades sonoras iniciais semelhantes e nos casos apresentados a mesma sílaba inicial, porém posicionadas de forma aleatória. O aluno deverá identificar estas cartas semelhantes e arrastar as mesmas para a posição tracejada na parte de baixo da tela, formando os pares de cartas. Após formar os pares o aluno deverá montar na mesa educacional as letras que compõem a unidade sonora inicial da palavra que coincidentemente são as sílabas iniciais das palavras. Esclarecemos que as palavras VASSOURA e JARRO possuem como sílaba oral inicial o [VA] e o [JA], respectivamente. Não se deve confundir a sílaba oral dessas palavras com a sua segmentação escrita; pois, nesse caso, por a sílaba seguinte iniciar-se com os dígrafos SS e RR, convencionalizou-se que essas letras iguais são separadas. As telas do aplicativo: 1) Tela de exemplo de uso 2) Tela de desenvolvimento da atividade 3) Tela de finalização e conclusão da atividade 69 Fluxo de scripts da tela de Exemplo de Uso: Fluxo de scripts da tela de Desenvolvimento da Atividade: Na tela de desenvolvimento do aplicativo teremos três elementos básicos, sendo: PRIMEIRO ELEMENTO - CARTA As oito cartas com as imagens e as palavras que devem ser arrastadas para a parte carta cinza pontilhada e combinadas de duas a duas. Cada carta é composta por todas as imagens, a diferença é que estão posicionadas em trajes (sprites) diferentes. Veja abaixo: Isto é necessário para que possamos acessar as cartas pelo bloco repórter , o qual informa o número do traje do objeto e que consequentemente passa a ser o número de cada carta. Por exemplo, a carta cadeira é acessada pelo número 1 (traje 1), já a carta sapato é acessada pelo número 2 (traje 2), e assim ocorre com as demais cartas. As cartas terão todas os mesmos script, sendo: 70 Script de movimento da carta Script para acionamento da função Posicionar Antes de detalhar este Script, saiba que as funções são acionadas pelo bloco Quando eu ouvir... Script para acionamento da função Ocultar início Script para acionamento da função Esconder 71 SEGUNDO ELEMENTO – ÁREA CINZA São as duas áreas onde as duas cartas com as mesmas unidades sonoras devem ser posicionadas para serem avaliadas. Veja que cada carta possui uma borda vermelha exatamente para permitir esta identificação, ou seja, quando a cor vermelha toca a área cinza. Script para acionamento da função Ocultar início Script para acionamento da função Finalizar Script para acionamento da função Iniciar TERCEIRO ELEMENTO – ÍCONE São três ícones que representam qual ação o aluno deve tomar ou o resultado desta ação: Traje que representa a necessidade de uma ação do aluno para completar o exercício. Traje que representa o erro do aluno. Traje que representa o acerto do aluno. 72 Estes ícones são na verdade trajes (sprites) de um mesmo objeto na tela. Script para o loop principal (execute sempre) do aplicativo educacional Script para Inicialização de variáveis Para que nosso aplicativo educacional funcione e tenha total interatividade com o aluno serão necessárias diversas variáveis de memória. Segue abaixo a lista de variáveis de memória que serão necessárias, sua visibilidade e finalidade: VARIÁVEIS TIPO LISTAS NOME DA VARIÁVEL VISIBILIDADE FINALIDADE posx Para todos os objetos Guardar a posição das cartas no eixo X no palco. posy Para todos os objetos Guardar a posição das cartas no eixo X no palco. Silaba_inicial Para todos os objetos Guardar a unidade sonora inicial (sílaba inicial) de cada palavra. 73 VARIÁVEIS TIPO SIMPLES 74 NOME DA VARIÁVEL VISIBILIDADE FINALIDADE Acertos Para todos os objetos Guardar o número de acertos realizados pelo aluno. Carta1-preenchida Para todos os objetos Guardar a situação lógica que define se a área cinza à esquerda está preenchida por uma carta ou não. Carta2-preenchida Para todos os objetos Guardar a situação lógica que define se a área cinza à direita está preenchida por uma carta ou não. Silaba_carta1 Para todos os objetos Guardar o número da carta (no caso o número do traje) da carta que está ocupando a área cinza à esquerda. Silaba_carta2 Para todos os objetos Guardar o número da carta (no caso o número do traje) da carta que está ocupando a área cinza à direita. mesa Para todos os objetos Guardar os caracteres inseridos na mesa educacional. som_esta_correto Somente para o próprio objeto Guardar a Somente para o situação lógica se o som “está correto” já próprio objeto foi tocado. som_esta_correto Somente para o próprio objeto Guardar a Somente para o situação lógica se o som “está errado” já próprio objeto foi tocado. Script para identificar o número de letras em uma unidade sonora (sílaba) Temos um pequeno detalhe para resolver, pois algumas palavras possuem a unidade sonora inicial com duas letras e outras com três letras e esta situação deve ser identificada previamente dentro do aplicativo. PASSO A PASSO PARA A CONSTRUÇÃO DO APLICATIVO EDUCACIONAL NO SCRATCH 1) Primeiramente vamos construir os oito objetos carta. Abra a primeira imagem para a carta, no caso a imagem de uma cadeira; 2) Acesse a guia Traje do novo objeto e importe os demais trajes, na seguinte ordem: sapato, lápis, chuveiro, chupeta, lata, sapo e casa; 75 3) Teremos então a primeira carta (primeiro objeto) com oito trajes. Deixe o primeiro Traje como o Sprite ativo (Traje 1). Não se esqueça de dar um nome ao objeto, neste caso CADEIRA; 4) Duplique este objeto mais sete vezes, totalizando oito cartas. Altere o Traje ativo de cada carta para que fique com a imagem correta e renomeie a mesma para os nomes de referência (cadeira, lápis, chuveiro, chupeta, lata, sapo e casa); Clique com o botão direito sobre a imagem da carta para acessar o menu e o comando duplicar... 5) Vamos agora criar os objetos das áreas cinza para onde as cartas devem a imagem da carta cinza e crie o objeto carta1. Logo em ser arrastadas. Abra seguida duplique o objeto e altere seu nome para carta2; 6) Vamos agora criar o objeto ícone, o qual terá três Trajes. Renomeie os trajes para: duvida_slim, errado_slim e certo_slim. 7) Importe as telas de fundo para o palco; 76 8) Outro passo que deve ser executado é a importação das trilhas de áudio para seus respectivos objetos: ARQUIVO OBJETO NOME DA TRILHA Cadeira.wav Carta cadeira 11 Narrar a cadeira palavra Sapato.wav Carta Sapato 21 Narrar sapato palavra Lapis.wav Carta Lápis 31 Narrar a palavra lápis Chuveiro.wav Carta Chuveiro 41 Narrar a chuveiro palavra Chupeta.wav Carta Chupeta 51 Narrar a chupeta palavra Lata.wav Carta Lata 61 Narrar a palavra lata Sapo.wav Carta Sapo 71 Narrar a palavra sapo Casa.wav Carta Casa 81 Narrar a palavra casa Comando_inicial. wav Ícone Comando_inicial Instruir o usuário de como deve ser executada a atividade Esta_correto.wav Ícone Esta_correto Narrar que a combinação de sílabas está correta Esta_errado.wav Ícone Esta_errado Narrar que a combinação de sílabas está errada Coloque_na_mesa. wav Ícone FINALIDADE a Instruir o usuário para montar a sílaba Coloque_na_mesa correta na mesa educacional 9) Para que toda a interatividade de nosso aplicativo educacional funcione perfeitamente, temos que configurar o valor inicial de nossas variáveis simples e variáveis do tipo lista. Este assunto já foi introduzido anteriormente no item Script para Inicialização de variáveis. Para que possamos preencher nossas variáveis com os valores iniciais corretos, temos que entender como irá ocorrer o posicionamento dos objetos na tela, principalmente dos objetos carta. Devemos lembrar que o palco possui 480 pixels de largura 77 por 360 pixels de altura e cada uma de nossas cartas possuem o tamanho de 68 pixels de largura por 89 pixels de altura. Uma informação que deve ser levada em consideração é que os objetos são posicionados na tela a partir de seu ponto central. O script abaixo deve ser construído no objeto ícone , para tal acesse sua guia de Comandos. Conhecendo o tamanho do palco e das cartas e após alguns cálculos matemáticos é possível definir o valor das posições originais de cada carta para preenchimento das listas posx e posy. Para iniciar o preenchimento da lista, por ela ser acumulativa a cada vez que o Scratch é iniciado, devemos zerar seu conteúdo com o seguinte script: Após já podemos preencher os itens das listas com: Outra lista que deve ser zerada inicialmente e depois preenchida é a lista de silabas_iniciais (exatamente nesta ordem). Foram inicializadas as variáveis do tipo lista, agora temos que inicializar as variáveis comuns, sendo: 10) Vamos iniciar agora a construção dos blocos de comandos (scripts). Clique na guia Comandos do Palco e construa a seguinte estrutura de blocos de comando: 78 Lembre-se que este conjunto de blocos de comando já foi detalhado acima no assunto Fluxo de scripts da tela de Exemplo de Uso. O que este conjunto de blocos de comando faz quando o usuário inicia o aplicativo bandeirola verde é basicamente o seguinte: clicando na a) Esconde todos os objetos da tela; b) Muda o fundo de tela para a tela de exemplo; c) Toca a narração de explicação; d) Muda novamente o fundo de tela para a tela branca de nome fundo; e) Anuncia Iniciar, ou seja, manda executar a função Iniciar existentes nos demais objetos. f) Quando este script ouvir finalizar irá mudar o fundo de tela para final e tocar a narração final1. 11) Conforme identificamos acima, o aplicativo será de fato iniciado por uma . Vamos função denominada Iniciar, a qual estará localizada no objeto Ícone então construir este script acessando a guia Comandos do objeto. a) Primeiramente temos que inicializar as variáveis listas e simples: 79 b) Devemos criar também duas novas funções (quando ouvir) que esconda o objeto ao iniciar e ao finalizar o aplicativo: c) Antes de construir o script do loop principal, temos que criar um script auxiliar, o qual foi detalhado anteriormente no item Script para identificar o número de letras em uma unidade sonora (sílaba); Este script aciona a função loop (anuncia o loop), posiciona as cartas com a função posicionar (anuncia posicionar), muda o traje do objeto para e exibe o objeto que estava oculto. Importante salientar que a função posicionar será construída na sequência, quando for construído o script das cartas. Surge aqui uma dúvida, como saber se a sílaba inicial é de três ou de duas letras? 80 Basta entender parte do script acima, onde usamos as variáveis , as quais guardam a posição da referida sílaba dentro da lista de . sílabas da variável lista Veja a tabela abaixo que representa a variável lista Silaba_inicial: POSIÇÃO NA LISTA CONTEÚDO 1 ca 2 sa 3 la 4 chu 5 chu 6 la 7 sa 8 ca As posições 4 e 5 da lista são as que possuem três sílabas, as demais possuem apenas duas, por tal motivo construímos o script que identifica estas posições: Se a sílaba for de três letras (posições 4 e 5 da lista) a variável mesa receberá as três posições de caracteres da mesa educacional, caso contrário, apenas duas posições. d) Podemos agora construir o script do loop principal. Crie a estrutura inicial que garantira a execução contínua do loop; O próximo passo é criar uma estrutura condicional lógica que se certifique se as duas áreas cinza possuem cartas posicionadas em seu interior; 81 Lembre-se que as variáveis silaba_carta1 e silaba_carta2 são iniciadas ambas com o valor “nenhuma”, desta forma inicialmente esta condição é falsa, pois: Esclarecemos que o bloco de comando era verdadeiro passará a ser falso e vice-versa. inverte a situação lógica, se No caso do nosso script a condição final será verdadeira somente quando as duas variáveis silaba_carta1 e silaba_carta2 forem diferentes de nenhuma, ou seja, quando houver cartas nas áreas cinza. Como o valor é falso a opção senão será o fluxo escolhido e os blocos de comandos serão executados. As variáveis som_esta_correto e som_esta_ errado servem para indicar que o som já foi executado (tocado) ou não. Se o valor da variável for 0 (zero) indica que não foi tocado, mas se for 1 (um) indica que já foi tocado. Caso as duas áreas cinza possuam uma carta que foi arrastada pelo aluno e a condição lógica passe a ser verdadeiro, executaremos uma nova verificação, ou seja, veremos se as sílabas iniciais das duas cartas são iguais. 82 Os valores que estão armazenados nas variáveis silaba_carta1 e silaba_carta2 deixam de ser “nenhuma” quando as áreas cinza são preenchidas por uma carta e da carta. passa a ter o número da carta, mais especificamente o número do Este número serve de índice para acessar a sílaba inicial da carta na variável do tipo lista denominada Silaba_inicial. Veja como seria: Sendo o resultado falso, ou seja, as cartas posicionadas possuem sílabas iniciais diferentes (tal como na imagem de exemplo), será executado o script abaixo: Sendo o resultado verdadeiro teremos que comparar a sílaba inicial das cartas posicionadas na tela e a sílaba que deve ser construída na Mesa Educacional Multimídia usando as peças móveis. Porém antes de iniciar o bloco de comandos que irá repetir a operação até que o aluno consiga acertar as peças na mesa educacional de forma que iguale a sílaba inicial das cartas, teremos um script (conjunto de blocos de comandos) que realizará uma tarefa auxiliar: 83 Este script será executado somente se a trilha de áudio “som_esta_correto” ainda não tenha sido executada, ou seja, o valor ainda esteja em 0 (zero): 1) Será alterado o traje para ; 2) Será executada (tocada) a trilha de áudio “Esta_correto” e será aguardado seu término antes de prosseguir com o script; 3) Será executada (tocada) a trilha de áudio “Coloque_na_mesa” e será aguardado seu término antes de prosseguir com o script; 4) Será alterado o valor da variável “som_esta_correto” para 1 (um), ou seja, já executado. Após este script auxiliar será executado o script que de fato executará a repetição de leitura dos dados da mesa educacional até que a sílaba correta seja escrita. Vamos entender este script: 84 O que este script faz é muito simples, ou seja, executa de forma contínua o que está dentro do bloco repita até enquanto a sílaba das cartas posicionadas na tela nas áreas cinza não seja escrita (montada) de forma correta na mesa educacional. Para saber se a sílaba escrita é a correta é usado um bloco condicional se... senão. Se a sílaba montada na mesa estiver errada a pergunta “Qual a sílaba?” será apresentada por 3 segundos e repetida caso a montagem da sílaba na mesa educacional continue errada. Senão (caso contrário), ou seja, caso a sílaba montada esteja correta, será executado o seguinte script: 1) As cartas serão escondidas; 2) Incrementa um ponto na variável Acertos; 3) Executa (toca) a trilha sonora Esta_correto até terminar; 4) Retorna o traje para . O que falta agora é um script que identifique quando a atividade educacional é concluída, ou seja, quando o aluno conseguir realizar as quatro combinações de cartas e escrever as sílabas iniciais na mesa educacional. O script que realizará esta conferência segue abaixo: Quando o número de acertos chegarem a quatro é porque todas as cartas foram combinadas e as sílabas acertadas na mesa educacional, sendo assim, escondemos o painel da variável Acertos e anunciamos finalizar para os demais objetos. 85 Caso esta condição ainda seja falsa é porque ainda faltam cartas para serem combinadas e sílabas para serem montadas na mesa educacional, sendo assim é anunciado loop, o que faz com que tudo volte para o início do script. 12) Vamos agora analisar e construir o script das cartas. Basta construir um e copiar para as demais cartas: a. Teremos que construir alguns scripts auxiliares do script principal de arrasta da carta pelo palco. O primeiro script auxiliar é o de posicionar (quando ouvir posicionar). O que este script faz quando algum outro objeto anuncia posicionar é: 1) Exibir a carta; 2) Mover a carta para a posição original que está especificada na variável do tipo lista denominada posx e posy. O bloco serve como o índice para localizar qual a posição das coordenadas X e Y dentro da variável posx e posy. b. Outro script auxiliar é o que oculta a carta quando outro objeto anuncia ocultar_inicio. c. O último script auxiliar é o que esconde as cartas após o aluno ter acertado a combinação de cartas e a escrita da sílaba na mesa educacional quando um objeto deve anuncia Esconder. As variáveis silaba_carta1 ou silaba_carta2 guardam o índice da sílaba na de cada carta. lista Silaba_inicial e também coincidem com o número do Desta forma este script identifica qual carta deve ser ocultada quando o valor na das cartas variável silaba_carta1 ou silaba_carta2 coincide com o valor do posicionadas na área cinza. d. Por final vamos construir o script principal das cartas responsável pela movimentação e posicionamento das cartas no palco: Este script é acionado quando a carta recebe um clique do mouse sobre ela. 86 Para que a carta siga o ponteiro do mouse quando este estiver pressionado usamos o seguinte script. Caso a carta tenha sido movimentada pelo palco, temos que saber onde o usuário largou a carta, pois para que a comparação de sílabas ocorra as cartas arrastadas devem ser posicionadas nas áreas cinza (cartas cinza). Para realizar esta verificação, ou seja, se a carta arrastada está tocando uma das áreas cinza (carta1 ou carta2), utilizamos o seguinte script. Estes comandos retornam verdadeiros se a carta arrastada estiver tocando qualquer uma das áreas cinza. 87 Porém se arrastarmos a carta e não posicionarmos sobre uma das cartas cinza ela deverá retornar para sua posição original por meio do script abaixo. Vamos agora construir o script no caso da carta arrastada tocar uma das áreas cinza. O que construirmos para a carta1 (área cinza 1), valerá para a carta2 (área cinza2). Vamos detalhar este script: Caso o valor de executado o seguinte script: 88 seja não, ela não está preenchida e será 1) A carta arrastada irá deslizar em meio segundo até a posição de carta1 (área cinza1 – posição X -113 e posição Y 1111); 2) Mudará a variável carta1_preenchida para sim; 3) Mudará a variável Silaba_carta1 para o valor do na área cinza; 4) Para o fluxo do comando. Caso o valor de o seguinte script: da carta posicionada seja sim, ela está preenchida e será executado 1) A carta arrastada irá deslizar em meio segundo de volta para sua posição original; 2) Aparecerá um balão de fala com “Retire a outra carta”; 3) Para o fluxo do comando. Teremos então o script completo para carta1: Crie na sequência um script semelhante, porém para carta2. Teremos então: 89 Juntando tudo teremos o script completo para a movimentação das cartas: 90 O que falta agora é replicar todos os scripts para as demais cartas. Não seria nada fácil ter que criar tudo novamente carta por carta. Para resolver este problema existe um recurso que permite duplicar os scripts entre os objetos. Clique e arraste cada conjunto de bloco por vez de uma carta para a outra, até que todas as cartas tenham o mesmo conjunto de scripts, mas atenção, realize a rolagem da tela para verificar se realmente o conjunto de blocos de comando foi duplicado no objeto destino. Somente solte os blocos sobre o novo objeto quando perceber uma linha cinza circulando o mesmo. Após estes passos todas as cartas deverão estar com seu script completos. 13) Construiremos agora o último script, contidos nos objetos carta1. a. Os primeiros são scripts auxiliares para finalizar, iniciar e ocultar: b. Por final vamos construir o script principal e responsável por liberar as variáveis carta1_preenchida e silaba_carta1 quando não houver carta na área cinza de carta1: Este script será executado sempre que NÃO houver cor vermelha tocando a carta1 (carta1 cinza). c. Copie (arraste e largue) todos os scripts da carta1 para carta2, mas não esqueça de alterar as variáveis: 91 CONCLUSÃO Após todos estes passos dados e conhecimentos absorvidos, acreditamos que você esteja pronto para desenvolver novos aplicativos educacionais. Não se limite apenas neste estudo, pois o Scratch é um aplicativo com uma comunidade Mundial de usuários muito ativa e você encontrará com facilidade ótimos tutoriais na web. Parabéns por ter chegado até aqui e boa sorte em sua jornada educacional. Ass: Equipe Educartec. 92