quarta-feira, 24 de outubro de 2018

Codeblocks no TinkerCAD

Que tal programar a prototipação de um objeto no TinkerCAD? Agora é possível isso com a funcionalidade Codeblocks da qual você programa os movimentos dos blocos construídos, podendo usar animações e o mais importante usar repetições para construir detalhes em objetos, como no caso que iremos demonstrar: a prototipagem de um cabo de chave de fenda.


A linguagem para programar é de blocos assim como o Scratch e muitos dos blocos inclusive se assemelham a ele na questão de funcionalidade, com acréscimo de criação de formas básicas. Para construir o cabo da chave de fenda precisamos de:
  • Um cilindro laranja que vai ser o cabo com raio 10 mm e altura 50 mm e é posicionado em Z=25 para iniciar no plano zero (duas programações com seta verde).
  • Uma esfera laranja que vai ser a ponta arredondada do cabo de mesmo raio do cilindro (10 mm) e posição Z=50 (duas programações com seta laranja).
  • Um cilindro no modo orifício (subtração de volume) que vai fazer os sulcos do cabo com dimensão de raio 2 mm  e altura 80 mm e que estará na posição X=10 (por conta de ficar na borda do cilindro) e Z=30. Como queremos diversos sulcos ao redor do cabo, usamos o loop de repetição com o valor 7, onde dentro dele é copiada essa forma e temos um giro de 45 graus em torno do ponto 0,0,0 de 45 graus (cinco programações com seta vermelha).
  • E por fim outro cilindro em modo orifício de raio 2 mm, altura 45 mm e posicionamento em Z=10 para termos uma abertura de encaixe do cabo com a chave de fenda (duas programações com seta amarela).



O resultado final animado você verifica logo abaixo. Gostou da aprendizagem de hoje? Que tal produzir seus próprios Codeblocks? Não deixe de registrar suas percepções e produções nos comentários e até a próxima.

terça-feira, 23 de outubro de 2018

A importância das rotações e simetria na impressão de objetos.

Por diversas vezes encontramos objetos muito interessantes em repositórios de impressão 3D (https://www.thingiverse.com/), mas que quando abrimos o .stl vem a desilusão, a forma como foi construído não é possível imprimir na sua impressora 3D. Então hoje vamos comentar um pouco dessa experiência ao tentar imprimir o seguinte puzzle matemático: o Excalibur Puzzle (https://www.thingiverse.com/thing:2871173).
Ao analisar os .stl seja na versão preview do Thingverse ou em um fatiador como o Slic3r, vemos os seguintes problemas que é comum a várias peças: 


Temos uma peça da qual necessitamos construir um vão livre (primeira imagem que está no Slic3r) que é possível usar uma opção de suporte para dar sustentação ou podemos usar algo mais simples, o rotacionamento da peça (que aparece na figura importada para o TinkerCAD) que não exige nada além do conhecimento matemático de rotacionar a peça em 180 graus, para o caso acima.
Agora vamos para um caso um pouco mais complexo, a espada Excalibur. Assim como dito acima, podemos usar a opção de suporte, mas o que apresentaremos aqui é algo mais elegante do ponto de vista matemático: a simetria (se quiser saber mais sobre o conceito acesse: http://www.im.ufrj.br/dmm/projeto/projetoc/precalculo/sala/conteudo/capitulos/cap21s3.html).


Como podemos ver acima, a espada tem uma base (a que toca o plano) menor e aumenta para depois começar a diminuir novamente. Esse formato elíptico exige demais da impressão 3D e por diversas vezes dá um aspecto enrugado, acabando com a estética da peça. A solução é usar um eixo de simetria que corte a peça exatamente em duas partes idênticas e que possam ser impressas e posteriormente coladas uma na outra, conforme segue a figura abaixo:


A versão final desse projeto re-estilizado se encontra em: https://www.tinkercad.com/things/iqL8TNdlcjKhttps://www.tinkercad.com/things/lGap05P0ghohttps://www.tinkercad.com/things/hmednN1dSDWhttps://www.tinkercad.com/things/hyhfmAhaxal. Gostou? Deixe nos comentários as suas impressões e desafios. Até a próxima.

quarta-feira, 10 de outubro de 2018

Construindo games com Roblox Studio.

Construir games é algo que muitos querem fazer, porém quando esbarra-se na programação envolvida para desenvolver um, muitos acabam desistindo. Por isso que hoje vamos introduzir a opção de criação de games pelo Roblox Studio (https://www.roblox.com/create) que apesar de ser possível programar scripts em .lua (um tipo de linguagem de programação) também é possível criar um game apenas usando as opções já disponibilizadas. Existem duas opções a serem instaladas de Roblox, a de criação de games e a de execução dos games (esta última pode ser baixado o aplicativo para mostrar o seu game para os seus amigos), sendo que ambas não é necessário ser administrador do computador para poder realizar.


Como podemos ver acima, o Roblox lembra muito um Minecraft, com personagens da LEGO e com construção de objetos similar ao TinkerCAD. Ao abrir o Roblox Stúdio pela primeira vez, você pode construir um cenário do zero (veremos em outro post) ou usar alguns cenários já pre-determinados que é o nosso caso agora. Nesse cenário da cidade, temos a opção destacada em vermelho de pegar de uma base pre-pronta personagens e objetos para compor o nosso game. Cada objeto ou personagem já vem com subdivisões e ações que podem ser editadas ou acrescentadas na janela de Explorer (em verde). Além disso, movimentações, rotações e escalas são possíveis no destacado em azul. Para executar o game e ver se está tudo funcional, aperte F5 e para parar Shift+F5.
No game proposto acima, vamos fazer uma pequena interação de falas entre o nosso personagem (default do sistema) com o policial inserido acima. Clicando no policial, na janela Explorer, encontre a subparte Head (cabeça) e clique no botão +, e insira um Dialog e três DialogChoice, usando os + de cada um deles e deixando na ordem de estrutura abaixo:


Em seguida faça os seguintes preenchimentos na caixa abaixo do Explorer selecionando cada um dos Dialog e DialogChoice:
  • Dialog: InitialPrompt: Bom dia. GoodbyeDialog: Até mais. O primeiro é referente a primeira fala do policial e o segundo é a despedida. Esse GoodbyeDialog vai ser utilizado em todos os Dialog e DialogChoise com a função de ser um padrão de despedida caso queira interromper o dialogo com o policial.
  • DialogChoice: UserDialog: Gostaria de uma informação. ResponseDialog: Pode falar. A primeira fala se refere ao que o seu personagem vai querer falar e a segunda a resposta que o policial irá dizer, ou seja, funciona como um enredo previamente construído. Isso irá se repetir nos demais DialogChoice.
  • DialogChoice: UserDialog: Você saberia me dizer aonde é a rua Almirante. ResponseDialog: Você segue toda vida reto e dobra a esquerda.
  • DialogChoice: UserDialog: Muito obrigado. ResponseDialog: De nada.

Com essa estrutura obtemos o seguinte game: https://www.roblox.com/games/2470448789/Pergunte-ao-Policial .Curtiu a possibilidade de criação de games? Deixe nos comentários suas impressões e o que mais pode ser realizado nele. Até a próxima.

segunda-feira, 8 de outubro de 2018

Pygame: Entendendo a minha primeira história em Python

Na postagem anterior (http://vemfazermatematicaegames.blogspot.com/2018/10/minha-primeira-historia-em-python.html) criamos uma pequena narrativa escrita em linguagem Python que utiliza imagens já prontas e editadas e as mostra na tela em uma ordem planejada e que se sucedem pelo clique do mouse. Mas agora você deve estar pensando em entender como funciona essa linguagem e como editar para fazer sua própria versão. O código foi dividido em três partes, vamos entender como funciona?



Na linha de código acima temos apenas a definições para os arquivos .png que serão utilizados e do contador de estado do loop de repetição (igual a zero) que será descrito melhor adiante. Pense como se você tivesse usando uma variável global no Scratch. Caso queira utilizar outras imagens na sua narrativa, é aqui que você vai editar colocando o nome da imagem, acrescentar novas linhas de comando (para mais imagens) e podendo ser outro formato além do PNG.



Na linha de código acima, as três primeiras linhas é um padrão usado para utilizar o Pygames, podendo ser copiado para outras situações. A definição screen é o tamanho da tela que você vai querer exibir, lembrando que é muito importante ser próximo do das imagens (em pixels) para evitar distorções. Em seguida, cada definição tela(número) é para carregar a imagem selecionada na definição da primeira parte. Novamente, se precisar modificar ou acrescentar/diminuir imagens terá que fazer a alteração no código aqui também.



Agora podemos observar um loop no código acima que fica testando enquanto for verdade (cada ítem listado abaixo é um bloco de if ou elif):
  • se for clicado na opção fechar (QUIT), irá fechar a janela de execução.
  • se o mouse clicar uma vez e ele ler o contador estado igual a zero, vai executar a primeira tela (que corresponde a primeira imagem), e ao final soma o valor 1 ao estado (valor atual lido mais um).
  • se o mouse clicar uma vez e ele ler o contador estado igual a um, vai executar a segunda tela (que corresponde a segunda imagem), e ao final soma o valor 2 ao estado (valor atual lido mais um). E assim por diante.
E ao fim temos a programação de dar atualização nas imagens a serem exibidas na tela. Tente fazer alterações nesse código e depois deixe nos comentários suas percepções sobre o uso do Pygames. Que inovações você conseguiu realizar? Até a próxima.

quinta-feira, 4 de outubro de 2018

Pygame: Minha primeira história em Python

O objetivo do post de hoje é criar uma narrativa baseada em telas com a programação Python (com o uso da biblioteca Pygame). Se você tem dúvidas sobre o que é o Python, a biblioteca Pygame e a forma de instalar e usar a programação, recomendo acessar https://www.pygame.org/newshttps://www.pygame.org/download.shtml (atente-se ao fato de instalar versões compatíveis entre Python e o Pygames que está no nome do arquivo, a exemplo, o instalador pygame-1.9.2a0.win32-py3.2.msi do Pygame deve ter o Python 3.2). Caso queira baixar a versão utilizada nesse blog, segue o link da pasta com os dois arquivos: Clique Aqui.
Após ter o Pygame instalado e configurado e com a área IDLE aberta, crie um novo arquivo salvando em uma pasta e salve nessa pasta as imagens que estão salvas no GDrive: https://drive.google.com/drive/folders/1Ri89ra0n-ZsIjLVqDmKneVE6AKARfMY6?usp=sharing. Note que já temos um arquivo Python nessa pasta que contém o mesmo código que será descrito a seguir, caso queira usar. No seu arquivo IDLE em branco, copie o código abaixo e em seguida execute-o apertando F5:



O resultado é uma narrativa que segue quadro a quadro ao você clicar na tela de execução com a temática de memes conforme as imagens que estavam dispostas no GDrive: 


No post a seguir, entenderemos o que cada linha de comando significa dentro da programação em Python. Então é isso galera. 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çõ...