sexta-feira, 29 de junho de 2018

AppInventor 2: Construíndo um placar para o seu quizz Mategames

No post anterior sobre a construção de um aplicativo de quizz (http://vemfazermatematicaegames.blogspot.com/2018/06/appinventor-2-construindo-o-quizz.html) fizemos a construção básica de um jogo com perguntas e respostas, porém sem um placar para contabilizar pontos de acertos e erros nas respostas. Faremos isso no post de hoje! Mategames v.2 aí vamos nós!
A primeira coisa que precisamos ter em mente é que as variáveis globais não funcionam de modo "global", ou seja, elas são globais somente na tela em que foram construídas. E isso gera um problema de como fazer uma comunicação de pontos das questões que estão em telas diferentes. A resposta é o uso do TinyDB, que resumidamente serve para armazenar dados coletados pelo aplicativo. Ele se encontra em Design > Armazenamento > TinyDB e ficará invisível na tela do aplicativo.
A primeira coisa que a programação deve ter é a criação da variável global com valor zero e um nome associado (placar no caso). Em seguida, usamos a programação ajuste variável global placar para um determinado valor (no exemplo abaixo foi usado resposta certa igual a 5 pontos e incorreta -1 ponto) conforme o caso. Tendo sido realizado esse calculo, resta apenas armazenar esse valor no TinyDB, com um rótulo padrão para todas as questões (no caso pontos) e dizer que está associado ao valor calculado na variável global. Confira o exemplo para entender o que está acontecendo:

Você deve ter notado que no botão da opção correta existe uma opção de ajuste de botão para desligar ele após ser apertado (ultima programação verde). Isso serve para que o usuário não fique clicando na resposta certa repetidas vezes e fique ganhando pontos que não deveria. Para as opções incorretas como perde pontos, fica liberado dessa opção.
Em todas as telas de perguntas será repetido esse padrão, apenas com um acréscimo da programação para chamar os valores armazenados no TinyDB (ou seja, todas as telas exceto a primeira) pois sempre que for calculado o valor da variável global da tela, ele precisa ser somado aos valores obtidos anteriormente em outras telas (perguntas). Confira no exemplo abaixo:


Depois de tudo isso, é hora de finalizar a versão do aplicativo quizz com placar usando a programação que faz o somatório final dos pontos e mostra na tela o resultado para o usuário. Basicamente apenas é necessário usar o mesmo comando de chamar TinyDB e pedir para escrever na tela o resultado final:


Com isso temos o aplicativo Mategames com placar finalizado. Você pode baixar ele em ai2.appinventor.mit.edu/?galleryId=6527696685367296 para poder fazer seus testes ou melhorar ele. Deixe nos comentários abaixo suas experiências. Até a próxima!

AppInventor 2: Construíndo o quizz Mategames

Em uma das nossas postagens anteriores, criamos uma sequência de quizzes (http://vemfazermatematicaegames.blogspot.com/2018/04/rpg-scratch-propondo-desafios-com.html) no websoftware Scratch. Mas que tal construir um quizz na forma de um aplicativo? Esse é o desafio de hoje. Utilizaremos o MIT AppInventor 2 nessa tarefa e, se você não o conhece ainda, pode usar o tutorial do Hello World que está dispoível no nosso blog parceiro (http://vemfazerrobotica.blogspot.com/2018/02/helllo-world-no-smartphone.html).
Algo crucial para iniciar nossos estudos é entender que o AppInventor 2 possui duas interfaces: a de Designer aonde estão sensores, caixa de textos, botões e a de Blocos aonde programamos por meio de blocos, tal como o Scratch (com algumas peculiaridades). Na aba do designer é possível interligar os componentes que foram disponibilizados na interface (destacado em verde) e uma coisa muito importante, cada aba (screen) é independente não sendo afetada por variáveis globais e não é possível fazer cópias de tela (é necessário construir uma a uma). Uma ferramenta que facilita reusar blocos é a mochila (destacada em azul) que se encontra no canto direito superior, aonde você deixa os principais blocos que você irá utilizar com mais frequência.


Para construir uma tela de perguntas do quiz, começaremos usando a tela de Design, aonde iremos arrastar para a tela central (celular) cinco botões que serão para quatro opções do quizz e um que ativa para a próxima pergunta quando você acerta a resposta (lembrando que esse em específico precisa estar com a caixa Visível desabilitada, destacado em azul) e duas caixas de texto sendo uma para pergunta e outra para dizer se a resposta está correta ou incorreta, conforme a screen abaixo:


Agora na aba de Blocos vamos construir a programação, aonde cada um dos botões vai ter a funcionalidade de resposta incorreta (botões 1, 3 e 4), correta (botão 2) e Próxima tela/pergunta (botão 5) e você pode ver a construção da programação na figura abaixo:


As telas de entrada e de fim do quizz são apenas variações das opções que foram usadas nos botões para seguir em frente, reiniciar o jogo ou fechar a aplicação. Você pode encontrar o projeto Mategames para baixar no seguinte link: ai2.appinventor.mit.edu/?galleryId=5310210493251584. E ai? Que novos quizzes você faria? Que melhorias esse aplicativo deveria ter? Deixe nos comentários suas produções, nos vemos na próxima.

sexta-feira, 15 de junho de 2018

Scracth e Gcode: O desafio de desenhar na areia (parte 02)

Nó ultimo post (http://vemfazermatematicaegames.blogspot.com/2018/06/scracth-e-gcode-o-desafio-de-desenhar.html) vimos algumas interações para fazer formas repetitivas na tela. O desafio de hoje é um pouco mais robusto: criar uma aplicação em Scratch na qual depois do usuário desenhar alguns pontos, ela faça as repetições até chegar em um tamanho mínimo. Vamos lá!?


Acesse o projeto Desenhando na Areia GODE (https://scratch.mit.edu/projects/228934806/) e ao interagir com você percebe que tem três grandes blocos de programação do qual vamos explorar uma a um. Antes de mais nada, iremos usar um tipo de bloco em Variáveis com uma funcionalidade muito específica: a lista.


Os blocos de programação do tipo lista servem para guardar valores numéricos ou não, para serem usados posteriormente. Isso cai como uma luva para o propósito de ter uma funcionalidade aonde você precisa pegar valores de pontos (X,Y) clicados para serem posteriormente colocados no modo de repetição.


Outra funcionalidade do Scratch que é utilizada nesse projeto é a criação de parâmetros de entrada (nesse caso do tipo numérico) que servem como variáveis a serem trabalhadas nesse bloco construído. No projeto apresentado nessa postagem, o "amp" foi criado com essa funcionalidade dentro do bloco "forma" e no "geraPoligono".


O bloco criado "defina[geraPolígono(amp)]" é responsável por essa arquitetura de pegar pontos em x com a listagem lx e pontos em y com ly. Ainda temos a estrutura lógica responsável por pegar apenas pontos quando o mouse está clicado e uma interação igual a 10, pois queremos nove pontos selecionados, já que o Scratch entende o primeiro como a posição inicial aonde a bolinha está. Note que ainda ao lado de cada valor de X e cada valor de Y, temos um fator amp multiplicado a eles, que serve como o fator de repetição que vai diminuindo (ou aumentando caso você queira mexer na programação) do desenho realizado na primeira vez pelo usuário.


No bloco "defina[forma(amp)] temos o bloco de programação responsável por organizar na forma (X,Y) os pontos da lista e definir o fator amp a ser multiplicado. E finalmente no bloco cuja entrada é a barra espaço temos os comandos responsáveis por desenhar a forma e inserir as 10 interações com o valor 0.1. Existem alguns cuidados muito importantes ao trabalhar com tantas variáveis e interações que é justamente fazer o posicionamento de cada um deles no bloco correto em que está sendo utilizada e sempre limpar os valores a cada reinicio de projeto, pois isso pode gerar problemas do tipo ter valores já usados em interação que ao iniciar repassa para o comando de repetição um valor inicial diferente do que deveria ser. Fique ligado nisso!

Que tal testar esse projeto construindo formas bem diferentes e verificar se é possível delas serem realizadas? Qual a diferença perceptível entre objetos geométricos côncavos e convexos? Que tal testar e mudar o número de interações? Como você programaria para que o usuário pudesse entrar com 20 pontos? Deixe nos comentários essas e outras experiências. Até a próxima.

quarta-feira, 13 de junho de 2018

Scracth e Gcode: O desafio de desenhar na areia (parte 01)

Em nosso último post (http://vemfazermatematicaegames.blogspot.com/2018/05/mapeando-scratch-em-um-arquivo-gcode.html) vimos a relação que existe entre o Scratch e um arquivo Gcode. Agora iremos além, com a ideia de poder desenhar no Scratch por pontos (X,Y) e promover interações. No blog parceiro Vem Fazer Robótica, existe um trabalho com Gcodes em Java que servem para se comunicar com uma máquina CNC (http://vemfazerrobotica.blogspot.com/2018/05/universal-gcode-sender.html). Ambos os post tem a finalidade de poder desenhar na areia (entenda aqui que no Scratch acontece o desenho na tela e em um Java ligado a uma CNC, pode-se desenhar em um tablado com uma esfera ligada a um íma sobre a areia). O primeiro passo é entender que é possível promover interações com formas simples como retas.

No projeto Retas GCode por quantidade de divisões (https://scratch.mit.edu/projects/228617230/) e por quantidade de retas (https://scratch.mit.edu/projects/228748404/).


Como é possível observar, no destaque em verde utilizamos uma adição ou subtração em um determinado eixo (X no caso), para que na interação (repetição) promovida em vermelho, o próximo desenho de reta seja um valor diferente do primeiro. Se por exemplo, na primeira passada passou em x=-217, ao adicionar 3, irá passar na próxima vez em x=-214 e, assim por diante, mantendo o valor de Y estático. Observe que existe duas formas diferentes sendo produzidas, o bloco "forma" que faz a parte superior direita e o bloco "forma2" que produz a parte inferior esquerda, onde o segredo está no posicionamento (X,Y) e ao invés de adicionar, temos a subtração de pontos. Que tal dar uma mexida nesses valores e ver o que você consegue gerar.

Quando olhamos para o projeto Quadrado GCode (https://scratch.mit.edu/projects/228774456/), percebemos que com uma construção "similar" as das Retas GCode e com uma regra de interação em cada ponto (X,Y) o que permite fazer os "giros" necessários para fazer um quadrado a partir de retas. Note que, quando trabalharmos com a ideia de GCodes, a linha de comando "girar" tende a ser substituída, pois justamente em um arquivo GCode não existe esse comando, que se baseia apenas por pontos (X,Y).


Gostou das construções apresentadas? Que tal fazer as suas obras de arte? Deixe nos comentários abaixo suas descobertas e construções. Até a próxima.

quinta-feira, 7 de junho de 2018

TinkerCAD e a subtração de volumes

Prototipar peças no TinkerCAD pode ser muito prático, mas as vezes se você não souber usar os recursos de modo adequado, pode ser um fator complicante. Vamos ao desafio de fazer um furo cilíndrico em um cubo.


Como podemos ver acima, ao utilizar a opção "orifício" na forma geométrica, ela assume o papel de subtração do seu volume em relação ao que já existe. Isso é perfeito para criar furos, encaixes, dentre outras possibilidades.
Que tal construir o jogo Tetraedro Puzzle (jogo de duas peças que forma um tetraedro)? Vamos a esse desafio. 


Primeiramente notamos que para construir as duas peças (que são idênticas) precisamos ter o cuidado nas medidas e proporções. Existe várias estratégias de construção, mas a utilizada aqui é de forma a usar a opção "orifício" do TinkerCAD.
Logo nota-se que o Tetraedro não é uma forma básica no TinkerCAD (está em uma outra seção, porém rotacionada o que traz alguns problemas). Podemos usar a forma "Telhado" (que nada mais é do que um prisma de base triangular) e fazer os ajuste necessários na suas pontas.
Na construção da peça usando o formato "Telhado", sendo necessário ser um triângulo equilátero, por isso use Pitágoras para calcular a altura adequada, onde um exemplo é os valores de lado 40 mm e altura 34,64 mm.
No corte das pontas utilize a forma "Pirâmide" com os valores de base (lados do triângulo) e a altura que foram utilizados na peça "Telhado". Faço o encaixe adequado em cada lado da figura original, lembrando em manter os valores de proporcionalidade, conforma a figura abaixo (cada valor de x igual a metade do valor de lado do triângulo):


E obtemos o seguinte resultado no TinkerCad:


E impresso obtemos o seguinte resultado (link do projeto: https://www.tinkercad.com/things/9TgqOuvgrSL ):


Gostou? Que tal os próximos desafios? Vamos prototipar o mundo? Deixe nos cometários as suas prototipagens. 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çõ...