segunda-feira, 25 de maio de 2020

Pygames: Construindo inimigos com deslocamentos randômicos e com Game Over

Em post anteriores usando a biblioteca Pygames, construímos diversos elementos que devem estar presentes em um game, tais como:
-Criando um cenário e a movimentação de um personagem (https://vemfazermatematicaegames.blogspot.com/2019/04/pygames-criando-um-cenario-e.html).
Agora iremos juntar todos eles com a inserção do último elemento restante: um "inimigo" que se desloca pela tela guiado por uma fórmula matemática:


Para iniciar, é importante importar bibliotecas "math", "random" e "time" que serão necessárias para alguns comandos, além da já usada Pygames (isso é feito no começo da programação com o uso do "import"). O principal incremento é a fórmula de deslocamento do "inimigo" (que no nosso modelo é o cogumelo), que deve ser colocada dentro do loop "while not fgExit" com o uso de uma variável de contagem que definimos como "t=0". Observe abaixo:


Você pode fazer alterações na velocidade aumentando ou diminuindo o incremento (o valor 1.5) e modificar os deslocamentos diretamente na fórmula. Ainda é possível construir uma fórmula totalmente do zero e ir testando seu desempenho. Que tal?
Uma importante alteração feita, foi no comando "tela.blit(personagem2Img, ( xcogumelo -128 , ycogumelo -128 ))", no qual foi inserido o valor -128 para X e Y e isso foi necessário devido ao posicionamento do bitmap que não considerou o centro da imagem, por isso esse deslocamento de -128, se tornou necessário. Caso você troque de imagem, precisa modificar essa valor de raio do círculo da imagem.
Obviamente, agora temos a disposição um game que necessita que você desloque seu personagem pela tela para não colidir com o inimigo. E se colidir, o que acontece? Uma possibilidade é ser o game over do jogo e para isso foi acrescentado os comandos abaixo:



Como você pode ver, quando existe a colisão, a tela é limpa (fill), é escrito na tela o texto do "game over" (blit) e em seguida, temos um pausa de 4 segundos (sleep(4)) e por fim o jogo fecha (pygame.quit ()). Para customizar isso, existe a possibilidade de escrever novos textos, inserir novas telas ou até mesmo modificar o tempo de espera ou reiniciar o game automaticamente.
Você pode encontrar o modelo do game aqui descrito em: https://drive.google.com/drive/folders/1kT6_sVDmej9-zu-q9ERSrN12nnnx0qCS?usp=sharing. Espero que tenha gostado e que isso o incentive a desbravar o mundo dos games em Python. Recomendo o site do Pygames (https://www.pygame.org/tags/all) onde existem diversos exemplos de games já produzidos que você pode baixar, executar e modificar para ter novas ideias. Até a próxima!

quinta-feira, 21 de maio de 2020

Pygames: Usando cliques do mouse para criar diálogos

O post de hoje é uma continuação da série Pygames, e é aconselhável você ver o post anterior (https://vemfazermatematicaegames.blogspot.com/2020/05/pygames-como-inserir-sons-no-seu-game.html) que já possui uma série de opções já construídas para caso você não consiga entender tudo sobre o código aqui apresentado. Iremos hoje usar a função de cliques do mouse para mostrar um enredo que pode estar embutido no seu game. O layout usado está disponível em: https://drive.google.com/drive/folders/1HLSHOZClAs26ATXSQVRTnh3k69SSoYoG?usp=sharing.


Para inserir a opção de cliques dentro do seu game é bem fácil, já que é um comando semelhante aos do teclado usados anteriormente, como você pode ver abaixo:


Como você pode ver acima, foi criado um contador que inicia no zero (parte inicial das definições, veja na programação destacada abaixo) e que adiciona mais um ao contador para cada clique dado com o mouse e em seguida existe um "se" (if) para os valores 1,2,3,4 e 5 com as programações de limpeza da tela (tela.fill) e desenho na tela do texto (tela.blit) que corresponde ao valor numérico. Esses textos estão pré formatados na parte inicial da definição, como pode-se ver abaixo:


Resumindo, a cada clique de mouse aparece uma nova frase que pode contar uma história ou um dialogo do game para o seu usuário. Para aumentar o número de frases, basta ir aumentando as frases na definição e nos "se" (if) seguindo o modelo já mostrado.
O post de hoje abre um desafio muito grande para você. Como criar diálogos ente diferentes personagens ou mesmo contar uma longa história que tenha vários caminhos possíveis (árvore de possibilidades). Você consegue dar conta desse desafio? Se conseguir, poste nos comentários como solucionou isso. Até a próxima!

terça-feira, 19 de maio de 2020

Pygames: Como inserir sons no seu game

Lembra do nosso projeto de criar cenários e fazer  personagem se movimentarem por ele: https://vemfazermatematicaegames.blogspot.com/2019/04/pygames-criando-um-cenario-e.html. Hoje daremos continuidade  a ele, inserindo sons para customizar o nosso game. Uma atenção especial é que nem sempre o Python (com a biblioteca Pygames) faz a leitura do som em formato MP3, por isso tenha em mão um conversor (programa ou online) para outros formatos como o OGG e o WAV.

A primeira opção de som a ser colocado no game é o som ambiente que será tocado durante todo o game. Abaixo temos o código responsável por ficar tocando o som:



Lembre-se de sempre colocar o nome do arquivo e a extensão corretamente para não dar problemas na hora de executar o game. Além disso, quando usamos sons, pode acontecer dele ser extremamente alto ou baixo, de modo a prejudicar a execução do game. Isso pode ser ajustado com o comando "set_volume" que pode assumir valores entre 0 e 1 para ajustar o som sem precisar fazer qualquer modificação no arquivo.
Além do som de fundo, os games possuem sons associados ao personagem e ao ambiente. No exemplo abaixo, temos o código responsável por fazer sons quando o personagem pula e anda para frente e para trás:



Assim como o código do som ambiente, é necessário definir um carregamento do arquivo de som, mas nesse caso, o play deve ocorrer somente na ação estipulada (pular ou andar) e por isso o play do som fica localizado no código referente a tecla de movimento. 
Caso você queira o código-fonte utilizado nesse post, basta acessar o seguinte link: https://drive.google.com/drive/folders/1LYtnlEE7InMgMGlWCgU83FlVpUuKVW22?usp=sharing. Agora é a sua vez. Use os conhecimentos aqui adquiridos para fazer sua versão de um pequeno game que tenha sons de fundo e sons complementares. Até a próxima!

quinta-feira, 23 de abril de 2020

Revista Maker

O post de hoje é um compilado das Revista Maker que serão atualizadas semana a semana e que trazem atividades das quatro áreas da Educação Maker do SESI SENAI SC para estudantes KIDS (7-10 anos) e TEENS (10-17 anos). Essas atividades em sua maioria são realizadas utilizando materiais simples que você encontra na sua casa.



Revista Maker Kids:



Revista Maker Teens:



terça-feira, 18 de fevereiro de 2020

Construindo um aplicativo de controle de gastos

Controlar seus gastos e ter uma boa saúde financeira é essencial para não acabar entrando em situações problemáticas como dívidas financeiras. Ter ao seu alcance um aplicativo que gerencie seus gastos é essencial e o post de hoje vai abordar essa possibilidade. Mas você deve estar se perguntando: existem tantos aplicativos de gerenciamento de gastos na rede, porque construir mais um? Pelo simples fato de que estar construindo este aplicativo, você já vai entender um pouco da dinâmica da Matemática Financeira e o controle de gastos. O aplicativo denominado Game Money que será abordado no post de hoje pode ser encontrado em: ai2.appinventor.mit.edu/?galleryId=5021055000903680.


Resumidamente esse aplicativo tem entradas numéricas para você colocar seu salário total, diversas despesas (aluguel, água, luz, etc.) e ao fim ele dá o valor que sobrou (se é que sobrou algo) por meio dos blocos de operações de soma e subtração que agem diretamente com os textos (no caso números) inseridos (destacado em vermelho), sem a necessidade de transformar esse dados em valores numéricos dentro da programação:


Como podemos ver acima, existe a possibilidade de armazenar esse valor em um arquivo .txt dentro do celular (opção dentro do Design>Armazenamento>Arquivo) que pode ser resgatado a qualquer hora, funcionando como um banco de dados simplificado (e off-line). Os blocos roxos com que advém da opção "Arquivo" (destacados em vermelho e verde) são responsáveis por guardar informações no arquivo, fazer a leitura e apagar totalmente os dados. Note que, mesmo que você saia do aplicativo sem limpar o "Arquivo", todos os dados ficarão lá armazenados para uma próxima utilização, a única coisa que não ficará guardada é o contador dos meses que será reiniciado após cada vez que a aplicação for encerrada. Na figura abaixo, mostra como fica a base de dados (usando um arquivo) que foi interrompido a contagem dos meses (foi fechado o aplicativo) e sua relação com a estrutura de texto que foi mencionada acima (destacada em vermelho na figura acima):


Assim encerramos a construção do aplicativo de finanças, mas é apenas o começo. Se você parar para pensar é possível adicionar diversas outras funcionalidades e customizações que vão deixar o aplicativo ainda melhor e mais funcional para você. Hora de botar a mão na massa e construir sua própria versão do Game Money, afinal tempo é dinheiro! Até a próxima.

sexta-feira, 24 de janeiro de 2020

Construindo um placar para jogos de mesa.

Se você é fã de um bom carteado (canastra, buraco, truco, etc.) ou um dominó com os amigos, sabe muito bem que anotar os resultados das partidas é essencial para salvar um pouco da sua memória pro jogo. Mas nem sempre você tem a disposição uma caneta e papel (o mundo anda muito tecnológico ultimamente) para isso e se tivesse a disposição um aplicativo para a contagem dos pontos das partidas desses jogos, seria incrível, não é mesmo!? Seus problemas acabaram, o post de hoje é voltado a construir esse aplicativo usando Appinventor2, que pode ser encontrado o modelo em: ai2.appinventor.mit.edu/?galleryId=5965204793458688


Como você pode ver na imagem acima, existem duas possibilidades de construção da marcação de placares: digitando os pontos obtidos somando eles ao final e clicar nos valores pré-estabelecidos para fazer a soma dos pontos. Vamos entender como cada um deles foi construído?

Na primeira opção, temos a construção de um placar com campos de entrada numéricos (essa opção está na área de designer nas propriedades da caixa de texto) que serão coletados e transformados em valores para serem somados de acordo com a variável global a que pertencem. Importante ressaltar que para diminuir o placar (ou seja subtrair do total) deve-se colocar o simbolo do negativo na frente do valor digitado, porém o placar inicial começa zerado por padrão:


Na segunda opção, temos a construção de um placar com botões com os principais valores numéricos positivos e negativos (+1, -1, +10, -10, +100, -100) e que irão alterar o valor do placar diretamente, sem necessidade de digitação de valores: 


Com isso finalizamos a construção do aplicativo de marcação de pontos de jogos de mesa. É possível você fazer outras customizações, tais como acrescentar mais do que dois times ou focar em placares para outros tipos de jogos de mesa. Deixe nos comentários suas impressões sobre o aplicativo e como você montou a sua versão. Até a próxima!

quarta-feira, 22 de janeiro de 2020

Construindo um game de naves espaciais.

No post de hoje iremos construir um game de batalhas entre naves espaciais e que pode ser baixado o modelo em: ai2.appinventor.mit.edu/?galleryId=6701208106041344. O objetivo nesse game é apenas desviar das naves inimigas, que com o passar do tempo o nível aumenta e, faz com que as naves cheguem mais rápido ou mudem completamente sua aceleração. O game só termina quando sua nave (a do jogador) encosta na dos inimigos e fica salvo o seu placar máximo.


Ao jogar o game percebemos que existem dois tipos de naves que se movimentam de formas diferentes:
  • Naves inimigas: se movimentam no eixo Y, descendo em direção da sua nave do jogador e repetindo o processo quando alcançam a borda. Além disso, quando tocam na nave do jogador dá-se o fim do jogo:

  • Nave amiga (sua nave): se movimenta ao longo do eixo X (com valor fixado em Y) que possui dias interfaces com o usuário diferentes: usando o botão (nível fácil ou game 02) ou usando o toque do dedo para deslizar (níveis médio e difícil ou game 01):
Todos os níveis (fácil, médio e difícil) do game são baseados em fases contínuas (como foi dito acima) que acabam acelerando e dificultando propositalmente  o game, mas existe uma diferença entre os game 01 (nível fácil) e game 02 (níveis médio e difícil):

  • No game 01, as naves inimigas se movem de acordo com a programação que gera um número aleatório entre um e cinquenta divididos por cinco para cada um deles e, sempre que muda a fase, muda o número aleatório gerado para cada uma delas, tornando o game nada linear ao ser jogado. Além disso, a sua nave (a do jogador), aumenta de tamanho conforme o nível avança, até um limite máximo em que acabará encostando em uma das naves inimigas e temos o fim do game.
  • No game 02, as naves inimigas se movem de acordo com três intervalos numéricos diferentes que são sorteados apenas ao iniciar o game (variável global Dados) e que vão aumentar a velocidade de acordo com o nível (quanto maior o nível alcançado, maior a velocidade). Esse modo do game acaba sendo mais linear que o primeiro, mas existe uma chance em três do game ter a velocidade das naves trocadas ao ser reiniciado.

Isso é o básico para criar a movimentação em um game de naves espaciais. É possível fazer customizações referente a personalização de novas fases ou fazer aprimoramentos, tal com, ter a possibilidade de atirar com a nave. Todas essas possibilidades são com você e nos vemos nos próximos posts. 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çõ...