Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006 Metodologia de Programação Entender o problema e pensar em uma solução. Cria um algoritmo para solucionar o problema – Storyboards são úteis para ajudar a entender a animação Implementar o algoritmo Testar e melhorar Programming in Alice © 2006 Dr. Tim Margush 2 Cenário (Problema) Descrever a animação desejada – Cena inicial Objetos, posicionamento, etc – Mudanças na cena Movimentação de Objetos, etc – Interações com a cena Comandos Programming in Alice do usuário, eventos na animação © 2006 Dr. Tim Margush 3 Cenário (Exemplo) Um peixe e um barco estão na agua perto de uma pequena ilha. O peixe da uma volta em torno da ilha, submerge e salta para frente. O barco está a deriva perto da ilha. Uma arvore indica que o vento sopra forte na ilha. Programming in Alice © 2006 Dr. Tim Margush 4 Cenário (Exemplo) - Objetos Uma cena no mar com o ator principal sendo o peixe. O peixe nada em volta da ilha. Uma simples animação sem interação do usuário. Objetos – Peixe, barco, arvore (animada) – Ilha – Mar Programming in Alice O peixe e o barco estão no mar perto de uma ilha. O peixe circula a ilha, submerge e salta para frente. O barco está a deriva perto da ilha. Uma arvore indica que o vento sopra forte na ilha. © 2006 Dr. Tim Margush 5 Cenário (Exemplo)- Ações Peixe circula a ilha Peixe submerge e salta para frente. O barco está a deriva perto da ilha. Os galhos da arvore balançam O peixe e o barto estão na água perto da ilha. O peixe circula a ilha, mergula, salta para frente. O barco está a deriva. Uma arvore indica que o vento sopra forte na Programming in Alice © 2006 Dr. Tim Margush 6 Storyboard Visual – Ilustra o posicionamento e movimento dos objetos com uma série de cenas. – Com a descrição de cada cena. Textual – Define as cenas de animação – Descreve o roteiro das cenas passo a passo. Programming in Alice © 2006 Dr. Tim Margush 7 Visual Storyboard Cena Inicial: – Ilha com uma arvore – Peixe e barco Ação: – Arvore balança – Barco a deriva Som: – Vento Programming in Alice © 2006 Dr. Tim Margush 8 Visual Storyboard Descrição: – Peixe submerge e salta para frente. Ações: – Peixe submerge e então se prepara para saltar. – Peixe salta pra frente. – Outras ações e continuação Som – Vento Programming in Alice © 2006 Dr. Tim Margush 9 Textual Storyboard Cena 2: O Salto Do these in order – Move fish down – Turn fish back – Do these together Um Algoritmo (pseudocódigo) Move fish Up Turn fish forward – Faz som de mergulho Programming in Alice © 2006 Dr. Tim Margush 10 Avaliação As cenas se conectam bem? O que podemos modificar para fazer a transição entre cenas mais suave? Está faltando alguma cena(baseada na especificação original)? Está faltando alguma descrição na especificação original? Programming in Alice © 2006 Dr. Tim Margush 11 Implementação Escolha uma linguagem de programação e ambiente – Vamos escolher Alice =) – Escolha de acordo com a disponibilidade e capacidade de cada linguagem – Nem sempre escolha o que você está mais confortável Programming in Alice © 2006 Dr. Tim Margush 12 Início da Animação Crie um novo Mundo em Alice – Escolha o template como ponto de partida – Escolha um nome bem representativo para o mundo e salve-o numa pasta Crie a Cena Inicial – Adicione os objetos de acordo com o storyboard. Programming in Alice © 2006 Dr. Tim Margush 13 Programando Editor – A ferramento utilizada para escrever o seu programa – Use o editor para comandar os objetos da sua cena Nossa primeira instrução vai ser colocada no método Nome – world.my_first_method() Objeto ao qual o Método pertence Programming in Alice complet o do Método Nome do Método © 2006 Dr. Tim Margush 14 Método Inicial Quando o mundo inicia, um metodo específico é executado – Isso é mostrado na parte de eventos – Nesse exemplo, world.my_first_method() As intruções para o método é inserida na aba de código no Editor – Alice usa drag-n-drop para reduzir os erros de sintaxe Erro de sintaxe é um erro “gramatical” na estrutura de instruções: pontuação, erro de digitação, ordem errada de palavras, etc O editor de Alice te ajuda a não errar na sintaxe Programming in Alice © 2006 Dr. Tim Margush 15 Storyboard to Code Instruções em Alice normalmente afetam um objeto. A sintaxe de uma instrução que chama uma ação de um objeto é: – object_name.method_name() pode existir coisas dentro do parenteses chamadas argumentos Programming in Alice © 2006 Dr. Tim Margush 16 Estruturas de Controle Palavras reservadas são utilizadas em linguagens de programação para determinar a ordem(fluxo) de instruções. Alice fornece essas palavras na parte inferior da janela do editor Seleção e Repetição Sequencia e Execução paralela Programming in Alice Instruções Especiais © 2006 Dr. Tim Margush Comentário e Documentação 17 Criando uma Estrutura de Controle Arraste o comando para o editor Solte-o no local correto contorno verde indica legal, não correto A estrutura do bloco é criada Note as chaves que encerram cada bloco Programming in Alice © 2006 Dr. Tim Margush 18 Adicionando Ações Arraste o peixe para o bloco Cena 2: O Salto Do these in order – Move fish down – Turn fish back – Do these together Move fish forward Turn fish forward – Faz som de mergulho Escolha os parametros do método Programming in Alice © 2006 Dr. Tim Margush 19 Chamada do Método O objeto lilfish se moverá – Argumentos para “move” significam: Os argumentos são: “DOWN” e “0.5m” O método é “move” Direção: down Distância: .5 m Outros??? (more…) Clique Play para ver o que acontece O objeto é “lilfish” Programming in Alice © 2006 Dr. Tim Margush 20 Mais Ações Cena 2: O Salto Do these in order – Move fish down – Turn fish back – Do these together Move fish forward Turn fish forward – Make splash sound Programming in Alice © 2006 Dr. Tim Margush 21 Mais Detalhes O Quão alto o peixe vai? Down 0.5m Turn Back 0.25 rev Programming in Alice Together: Forward 1 Turn Front .25 © 2006 Dr. Tim Margush 22 Analizando o Caminho do Peixe 1 metro pra frente (forward 1m) O peixe sobe 0.63, então termina 0.13m acima da água. r C = 2 * PI * r 4 = 2 * PI * r 2/PI = r Ângulo de 90 graus(turn 0.25) Programming in Alice 0.63 = r © 2006 Dr. Tim Margush 23 Um Salto melhor Alcança 1m de altura r = 1.5m Começou 0.5m abaixo da superfície Ângulo de 180 graus (turn 0.5) C = 2 * PI * r Do Together: Forward 4.71 Turn forward 0.5 C = 2 * PI * 1.5 C = 9.42 Metade do circulo é 4.71 Programming in Alice © 2006 Dr. Tim Margush 24 Aninhando Estruturas de Controle Cada estrutura de controle consiste de um bloco Adicionando uma estrutura de controle dentro de outra é chamado aninhamento (nesting) Programming in Alice Os colchetes indicam os blocos Blocos não se sobrepõe © 2006 Dr. Tim Margush 25 Documentação Todos os programas merecem uma boa documentação – Comentários são incluidos no código para indicar o comportamento desejado – Em Alice comentários são adicionados arrastando o controle de comentário para o editor Inserindo comentário Terminado o comentário Programming in Alice © 2006 Dr. Tim Margush 26 Método Orient To obj.orientTo(<asSeenBy>) Use esse método para copiar a orientação de outro objeto (front, right and up) – O centro do objeto não é alterado Programming in Alice © 2006 Dr. Tim Margush 27 Turn To Face obj.turnToFace(<alvo>) Use esse método para que a frente dele fique direcionada para o alvo (a orientação horizontal não é alterada) Programming in Alice © 2006 Dr. Tim Margush 28 Point At obj.pointAt(<alvo>) O objeto é apontado em direção ao centro do alvo (a frente do objeto é apontada em direção ao centro do alvo e seu eixo horizontal é alterado) – Mover para frente depois de obj.pointAt(alvo) irá fazer com que o objeto passe pelo centro do alvo Programming in Alice © 2006 Dr. Tim Margush 29 Propriedade Vehicle Escolha a propriedade vehicle de um objeto para fazê-lo se movimentar junto com o veículo Mover o barco fará o macaco se mover com ele Mas mover o macaco não irá mover o barco, a menos que a propriedade vehicle do barco seja definida como macado, porém isso é ilegal! Programming in Alice © 2006 Dr. Tim Margush 30 Argumentos Adicionais de Movimento duração – Padrão é 1 second style – Como uma sequência de movimentos interage asSeenBy – Controla os movimentos do objeto com o ponto de vista de um objeto diferente(outro objeto) Programming in Alice © 2006 Dr. Tim Margush 31 As Seen By obj.move(UP,1m) define pra cima em relação a orientação do chão obj.turn(LEFT,.25rev); asSeenBy(island) roda o objeto ao redor da ilha ao invés de rodar em torno de si mesmo sun.turn(RIGHT,0.25 revolutions); asSeenBy(smiley) Programming in Alice © 2006 Dr. Tim Margush 32