terça-feira, 25 de setembro de 2018

AppInventor 2: Otimização do uso de telas em histórias

No post anterior (https://vemfazermatematicaegames.blogspot.com/2018/09/appinventor2-criando-seu-aplicativo-de.html) falamos sobre como usar a opção Legenda e Criar Listas para obter um aplicativo de narrativas. Porém, você deve ter observado, que é necessário criar muitas telas repetidas por conta dos diálogos entre personagens e isso acaba impactando no peso do aplicativo. O que vamos trabalhar nesse post, é uma economia de código, aonde uma mesma tela sirva para diversos diálogos e em momentos diferentes da narrativa.
Partimos do problema principal: as legendas se ativarem após clicar em um determinado botão, sendo que precisamos de uma estratégia para que conforme o fluxo da narrativa ative apenas um botão (responsável por uma sequência de diálogos) e os demais fiquem inativos. Observe a programação abaixo:

Usando o comando de inicialização da tela (Quando nomedatela .Inicializar) temos o bloco laranja que ajusta a variável global (sempre zerada) para um valor armazenado previamente obtido da tela anterior com o uso do TinyDB (se você quiser mais informações de como funciona o armazenamento do TinyDB, consulte: https://vemfazermatematicaegames.blogspot.com/2018/06/appinventor-2-construindo-um-placar.html). Em seguida, é testado uma sequência de Se Então, com base na variável global TelaGeral (que agora assumiu o valor pego do TinyDB). No decorrer de cada teste de Se Então são ativados/desativados os botões relacionados ao valor de teste, somando-se um novo valor a variável global TelaGeral e armazena-se no TinyDB para o teste na próxima tela. Obteremos o seguinte fluxograma abaixo (exemplo):

Resumindo, temos diálogos entre três personagens distintos, onde um deles (Personagem 01) tem mais de um diálogo e cada vez que recebe o valor 00 se refere a o primeiro diálogo (ativa o botão 01) e se receber 02 que é a soma do valor dos diálogos 01 e 02 ele irá habilitar o terceiro diálogo (ativa o botão 02) da mesma tela 01. 
Por fim, não se esqueça que cada valor de entrada é preciso ativar/desativar botões diferentes, que sempre na primeira tela, o TinyDB deve ser igualado ao valor inicial, mas com a presença da variável global listada, pois ela é necessária para as posteriores interações e de construir listas de Falas diferentes para cada um dos botões ativos. Recomendo dar uma olhada no projeto finalizado em: [EM BREVE]. 


Por hoje é isso, deixe nos comentários suas opiniões e dúvidas sobre o sistema. Até a próxima. 

AppInventor2: Criando seu aplicativo de histórias.

Dentro do contexto do AppInventor 2, uma forma de criar um aplicativo de histórias é usar telas estáticas com personagens e balões como planos de fundo e, posicionar a opção Legendas para funcionar como texto da narrativa que vai ser trocado de acordo com os cliques em um determinado botão. No fim o resultado é muito parecido com o de um Visual Novel (se você não sabe o que é um, acesse esse link para saber mais: https://www.intoxianime.com/2017/04/guia-o-que-e-visual-novel-e-coisas-que-voce-pode-nao-saber/) e pode ser conferido o resultado final em Clique Aqui.


Como podemos observar acima, ao utilizar a opção Legenda, ela está dentro da opção organização Vertical que serve para manter um padrão de medidas no display da tela, além disso, é possível configurar valores de altura e largura na própria legenda, além do tamanho e fonte. É possível ainda iniciar com uma frase padrão se ela for colocada na caixa Texto, apenas lembrando que essa frase sempre será mostrada ao iniciar a tela em questão.
O próximo passo é pensar em uma programação que dê conta de ficar trocando frases em uma sequência pré-determinada e que, ao clicar no botão ative sempre a próxima frase até um limite máximo em que execute uma nova funcionalidade. Veja a programação abaixo:


Como podemos ver, existem duas variáveis globais: Contador que é específico para contar valores somados em 1 e a variável Falas que tem embutido nela uma lista com frases dispostas em uma ordem já planejada. Portanto, cada vez que apertar o Botão1 (no app ele é o botão Próximo), ele executará um loop de repetição aonde é somado 1 ao Contador. Enquanto esse valor não for maior ou igual a 4 (porque temos quatro frases em Falas) ele irá ajustar o texto da Legenda1 para pegar uma frase da listagem de Falas e em seguida vai comparar qual o valor do Contador e executar a frase de acordo com o valor especificado. Caso contrário ele irá para uma próxima funcionalidade, que no caso aqui é ativar novos botões para continuar os diálogos. Lembrando que é possível trocar a ordem do se então/senão e apenas trocar o sinal do maior igual para manter a lógica.
E finalizando, você deve ter notado que ao usar o bloco Criar Lista, aparecem apenas dois espaços para encaixe de blocos. É possível obter mais encaixes ao clicar na engrenagem azul e arrastar o bloco item para dentro da chave lista e obtém-se um novo encaixe, podendo repetir indefinidamente essa operação. Essa opção serve para diversos blocos do AppIventor 2.
Com isso demos conta de contar uma história no AppInventor. Que narrativas podem aparecer? O céu é o limite! Deixe nos comentários abaixo suas produções e até a próxima.

segunda-feira, 24 de setembro de 2018

TinkerCAD e o espaçamento em encaixes.

Um recurso que usa-se muito, principalmente em puzzle do tipo caixas é o espaçamento interno para as peças se encaixarem. O mais comum é você pensar e construir um puzzle que tenha as medidas exatas, só que isso gera problemas na prática. Veja o exemplo abaixo do puzzle Encaixe:


Nesse puzzle, temos diversos paralelepípedos com uma deformação em uma das pontas, que possuem todos a largura de 15mm. Na solução final, devem existir três paralelepípedos encaixados horizontalmente, que daria uma largura de caixa de 45mm, certo? Porém no projeto acima ele aparece com 47mm, e a explicação para isso é a necessidade de uma folga de encaixe. Normalmente quando imprimimos uma peça em 3D, a ponta da extrusora pode não ser muito precisa e somando-se ao tipo de plástico que pode dilatar, os seus 15mm iniciais, podem se tornar até 15,5mm, o que impossibilita a função de encaixar peças dentro de outra caixa (ou peça) maior, ou seja, o puzzle não funciona. Recomendo sempre folgas de 0,5mm por encaixe, conforme figura abaixo:


Lembrando também, que caso você utilize alguma opção de escala no software de fatiamento (a exemplo, o Slic3r), as folgas de encaixe precisam ser revistas, principalmente se houver redução. Após a impressão, temos o seguinte resultado (links do projeto Caixa: https://www.tinkercad.com/things/9lZmQjeVi62 e Peças: https://www.tinkercad.com/things/e2VlUw1OVzI):


Gostou? Que novos puzzles podemos inventar? Deixe nos cometários as suas prototipagens de puzzle e até a próxima.

Como não perder nenhum compromisso: Meu App Agenda

No nosso dia a dia a agenda é um instrumento de grande importância que as pessoas utilizam para fazer anotações de compromissos ou informaçõ...