Relatórios Técnicos do DCC/UFJF, 2018

Tamanho da fonte:  Menor  Médio  Maior

ProgBotics: um incentivo ao estudo de algoritmos

André Luiz Vasconcelos, Igor Oliveira Knop

Resumo


O estudo dos algoritmos frequentemente é considerado complexo ou desmotivante para parte dos estudantes que nunca tiveram contato com a área de computação. Entre diversos possíveis fatores, destacam-se o nível de abstração exigido, a abordagem tradicional de execução de rotinas em modo texto e na predominância de operações matemáticas nos exercícios propostos [3,4].
O uso de jogos no ensino de algoritmos pode fazer os alunos se sentirem mais motivados por aliar o estímulo visual com desafios propostos já comumente conhecidos como passatempo e entretenimento [1,2]. Nesse contexto, este trabalho apresenta o desenvolvimento do jogo ProgBotics que tem como objetivo estimular o raciocínio lógico e organização dos passos necessários para o estudo de programação.   O ProgBotics apresenta um conjunto de desafios na forma de quebra-cabeças, nos quais o aluno deve programar um conjunto de robôs. A execução do jogo é em tempo real, com a simulação da física dos elementos espalhados pelo ambiente que dificultam sua conclusão. Ele visa ser um jogo com forte apelo a crianças e jovens e uma introdução ao pensamento sistemático de desenvolvimento de algoritmos.   Outros jogos e projetos já utilizam a programação como mecanismo básico de ações. O LightBot¹, que motivou este trabalho, permite programar um robô cujo objetivo é iluminar espaços em um tabuleiro. O Human Resources Machine² é um jogo comercial com estruturas complexas de programação que desafia o jogador a passar por codificações complexas (muitas vezes quase ilegíveis) para resolver os desafios. E o RoboRally³, um jogo de mesa onde robôs são programados de forma competitiva para completarem um percurso em um ambiente hostil. Pela própria sequencialidade de execução de um código, esses jogos no geral empregam um sistema de grade e "turnos'' para a execução dos comandos. O ProgBotics se diferencia por explorar um ambiente com simulação de física em tempo real com o intuito de torná-lo mais atrativo aos jogadores.   Cada desafio no ProgBotics é composto de duas etapas: a programação seguida da execução. Durante a fase de programação, o jogador deve selecionar um dos quatro robôs e planejar uma sequência de operações baseadas no movimento. As operações são bem simples, como andar para uma das quatro direções ortogonais por um determinado tempo. Outra operação é ficar parado pela mesma quantidade de tempo. Dois botões permitem circular entre os robôs disponíveis e observar e alterar a atual lista de comandos associada.   Durante a etapa de execução, os robôs não podem ser mais programados e há a simulação de todo ambiente. Cada comando implica no movimento em uma determinada direção por uma quantidade de tempo (atualmente, 1 segundo). Nesse intervalo os robôs vão se empurrar mutuamente e outros elementos do cenário. Quando um robô passa sobre um interruptor de mesma cor que ele, esse interruptor é ativado. Se todos os interruptores da sala são ativados, o desafio é concluído e um próximo é proposto. Se o cenário não for concluído dentro de um tempo mínimo, ele é considerado falho. Quando um jogador falha em um cenário, o estado inicial é retomado e novamente se retorna para a etapa de programação dos robôs. Cada cenário se torna mais desafiante à medida que a interação entre os robôs e os obstáculos se torna mais complexa. 
O ProgBotics é implementado com a linguagem de programação Java, com o framework libGDX4 e com ambiente de desenvolvimento Android Studio5. Adicionalmente, as ferramentas Tiled6 e Texture Packer for LibGDX7 foram utilizadas na produção dos cenários e elementos do jogo. Toda a simulação de física de corpos é gerida pela biblioteca Box2d8 através da libGDX. Atualmente ele é executado como uma aplicação para computadores pessoais, mas a sua adaptação para dispositivos móveis estão em desenvolvimento breve devido à própria característica multiplataforma da libGDX.   Atualmente, o ProgBotics ainda encontra-se em desenvolvimento e possui uma série de limitações. O conjunto de comandos é bem restrito por definição, entretanto espera-se futuramente acrescentar mais estruturas de controle como condicionais, laços e funções. Entretanto, não  há a preocupação em apresentar uma linguagem completa. Os controladores devem se manter mais próximos aos elementos do jogo do ponto de vista temático como sensores de luz, transmissores e cartões de memória simulados dentro do jogo. Acredita-se que ao manter essa abordagem, não serão perdidos os elementos lúdicos esperados.

Referências[1] Batista, D. A. and Dias, C. L. (2012). O processo de ensino e de aprendizagem através dos jogos educativos no ensino fundamental. In Revista Colloquium Humanarum, São Paulo, volume 9, pages 975– 982.[2] de Andrade, M. M. and de Oliveira Knop, I. (2015). Projeto e desenvolvimento de jogos eletrônicos multiplataforma: um estudo de caso utilizando cocos2d-x. Caderno de Estudos em Sistemas de Informação, 2(1).[3] Priesnitz Filho, W., Abegg, I., and de Oliveira Simonetto, E. (2012). Uma abordagem diferenciada no ensino de algoritmos através da utilização de uma lousa digital. Revista GEINTEC-Gestão, Inovação e Tecnologias, 2(2):129–137. [4] Santos, A., Gorgônio, A., Lucena, A., and Gorgônio, F. (2015). A importância do fator motivacional no processo ensino-aprendizagem de algoritmos e lógica de programação para alunos repetentes. In WEI-Workshop sobre Educação em Computação, pages 1–10.
1http://lightbot.com2https://tomorrowcorporation.com/humanresourcemachine 3http://avalonhill.wizards.com/games/robo-rally 4https://libgdx.badlogicgames.com 5https://developer.android.com/studio 6http://www.mapeditor.org7https://github.com/libgdx/libgdx/wiki/Texture-packer 8http://box2d.org


Texto Completo: PDF