Robocode: um auxílio no aprendizado da linguagem Java Mardson da Silva Ferreira, Ronaldo Nery Dantas Filho, Francisco Creonilson Rodrigues, Samy Soares Passos de Sá, Jefferson de Carvalho Silva Resumo: O objetivo deste trabalho é proporcionar aos estudantes da Universidade Federal do Ceará campus Quixadá a utilização da ferramenta Robocode como um meio interessante para o aprendizado de programação orientada a objetos e a linguagem Java. Nosso projeto consiste em ministrar um mini-curso que envolve desde a instalação e o funcionamento da ferramenta até a base necessária para a programação dos robôs mais avançados, além de realizar competições internas no campus. 1. Introdução Aprender uma nova linguagem não é uma tarefa fácil, principalmente se o paradigma (no nosso caso, orientado a objetos) for também desconhecido por parte do estudante. A forma convencional é procurar um livro a respeito do assunto e passar horas estudando. Isso é cansativo e tedioso. O Robocode facilita a aprendizagem dessa nova linguagem e/ou do paradigma de maneira divertida. O Robocode é um software educacional que consiste em um jogo de batalha entre robôs em uma arena virtual, desenvolvido por Mathew Nelson, engenheiro da IBM. O jogo é implementado em Java [1] e utiliza conceitos relacionados à programação Orientada a Objetos (POO) [3], o que o torna uma excelente ferramenta para o ensino de Java, POO e Inteligência Artificial (IA) [4], visto que Robocode [2] é um jogo de estratégia. O diferencial do Robocode é que os robôs têm seus comportamentos programados pelos jogadores. Isto é, ao invés de controlar os robôs com teclado e mouse, deve-se programar o seu comportamento para que eles combatam por conta própria. Isso traz um estímulo a mais para os usuários que tentam cada vez mais aperfeiçoá-los. Criar um robô para competição é uma tarefa fácil até para os que não têm muita prática em programação. Apesar dos códigos de exemplo que acompanham o software estarem escritos em inglês, estes são muito intuitivos e bem comentados. No entanto, criar um robô campeão é uma tarefa mais complicada, podendo levar meses de intenso trabalho e a aplicação de técnicas de Inteligência Artificial. Isso é o que torna o Robocode uma ferramenta interessante e utilizada por iniciantes em programação e também por programadores avançados. Robocode não é só um jogo voltado para o entretenimento, afinal ele tem como objetivo desenvolver o raciocínio e estimular o interesse de aprender programação em geral. Como os robôs são implementados em linguagem Java, temos que ter um pouco de conhecimento em programação, para não termos dificuldades em criá-los. O robocode permite ao usuário conhecer algumas características de orientação a objetos, visto que o Robocode utiliza muitos dos conceitos desse paradigma, a exemplo de herança e polimorfismo, entre outros. Por fim, o conhecimento de algumas técnicas de Inteligência Artificial pode ajudar bastante na construção dos robôs, uma vez que vamos programar o comportamento dos robôs e temos que pensar na melhor estratégia tanto de ataque quanto de defesa. Outro benefício do Robocode é estimular os alunos para o estudo da língua inglesa, pois todo o código e documentação são escritos em inglês, assim como a maioria dos materiais encontrados a respeito do assunto. Com o Robocode, aprender uma nova linguagem de programação torna-se fácil e divertido, porque os interessados aprendem brincando. Os alunos estudam ao mesmo tempo em que se divertem, pois se cria certo grau de rivalidade entre os competidores, que querem cada vez mais desenvolver robôs fortes, com o intuito de ganhar dos adversários. Para isso é preciso muita dedicação e horas de estudo. 2. Metodologia 2.1 Por que usar o Robocode? O jogo é baseado em eventos, por exemplo, ver um robô. A partir desses eventos é que o programador vai definir sua estratégia. Para criar uma estratégia é necessário utilizar procedimentos, onde os mesmos pertencem às classes específicas de robôs. A ferramenta possibilita ao usuário a utilização de troca de mensagens entre os objetos das classes disponibilizadas pelo robocode, para que o usuário possa realizar seu objetivo: vencer o adversário. Todos esses conceitos (troca de mensagens, classes, métodos) são necessários para a programação orientada a objetos. 2.2 As Atividades do Robocode As atividades do projeto são divididas em dois momentos: o estudo dos códigos dos robôs distribuídos com a ferramenta e a realização da monitoria da disciplina de Laboratório de Programação, na qual os estudantes dos cursos de Sistemas de Informação, Engenharia de Software e Redes de Computadores do campus de Quixadá estudam POO. Ambas as tarefas sendo feitas semanalmente. 2.2.1 O Estudo dos Códigos-Padrão Uma vez por semana, realizamos uma reunião com foco no estudo da ferramenta Robocode em si. Nos nossos encontros, estudamos os códigos dos robôs que acompanham a ferramenta, dos métodos, eventos e da Interface de Programação de Aplicativos (API), a qual possui todo o conjunto de rotinas e padrões estabelecidos pelo Robocode em geral. Dessa forma, o conhecimento de como a ferramenta funciona, de como os robôs se movimentam, realizam tiros, identificam inimigos, mudam cor ou as próprias ações, é conquistado e melhorado com o aprofundamento realizado no decorrer dos encontros. Seguindo esse raciocínio, nessa freqüência dos estudos, os envolvidos no projeto acabam ampliando sua criatividade e incrementam seus conhecimentos na linguagem de programação Java. Afinal, o planejamento da estratégia dos seus próprios robôs é realizado a partir da implementação em Java. Com a freqüência dos encontros, torna-se possível a realização de um torneio de Robocode com os estudantes que participam da nossa atividade, previsto para o mês de outubro. 2.2.2 A Realização do Torneio de Robocode Após um período de no máximo oito encontros/reuniões, os envolvidos no projeto já devem estar suficientemente preparados e capacitados a participar de um campeonato de Robocode. Depois dos robôs serem implementados pelos participantes, o campeão é escolhido quando vencer nas determinadas fases do torneio. A realização de um torneio é importante, devido ao maior interesse dos envolvidos a programarem cada vez melhor seus robôs e assim, gerando o maior estudo da ferramenta e da linguagem Java. A vontade de vencer o campeonato acaba tornando essa tarefa bem mais agradável aos participantes, pois eles competem se divertindo. 2.2.3 A Monitoria da Disciplina: Laboratório de Programação Duas vezes por semana, realizamos a monitoria da disciplina de Laboratório de Programação, onde são retiradas as dúvidas existentes, onde são resolvidas as listas de exercícios ou trabalhos e onde são feitas as revisões de assuntos já comentados em sala de aula. Assim, os alunos participantes dos encontros acabam tendo um maior rendimento acadêmico nessa disciplina. Outro ponto bastante importante nessa atividade é que ela auxilia no desenvolvimento dos robôs com o Robocode e vice-versa. Dessa forma, as duas atividades trabalham juntos no auxilio da criação de um maior conhecimento na linguagem Java em alunos. 3. Resultados e discussão Ofertamos um mini-curso de Robocode durante o FLISOL 2011 (Festival Latino Americano de Instalação de Software Livre) [5], realizado na FCRS (Faculdade Católica Rainha do Sertão). A procura pelo nosso minicurso superou todas as expectativas, visto que o número de alunos excedeu a quantidade de vagas prevista. Na sala estavam presentes mais de cinquenta estudantes, dentre os quais muitos eram alunos de informática de escolas técnicas do estado do Ceará. Outra evidência de sucesso deste curso, foi o convite feito por uma professora responsável pelo grupo de alunos da escola técnica de Canindé para ministrar o curso em sua cidade. Como não temos nenhum meio de transporte e Canindé localiza-se muito distante de Quixadá, tal ação era inviável, porém fornecemos nossos contatos para responder quaisquer dúvidas que os presentes no minicurso viessem a ter. A competição de Robocode, um dos principais objetivos do nosso projeto, ainda não pode ser concretizada, por causa de um atraso no início das reuniões com os alunos. O atraso foi ocasionado pelo atraso no envio dos equipamentos do segundo laboratório de informática do bloco anexo, o qual pretendíamos utilizar para as atividades. Contudo, alguns objetivos foram alcançados. Nosso projeto despertou a curiosidade de alguns alunos a respeito da ferramenta, principalmente dos alunos do segundo semestre, muitos dos quais chegaram a participar de reuniões semanais. Aos poucos a proposta do nosso projeto vai sendo cumprida. Apresentar aos estudantes o poder das linguagens orientadas a objetos, visando os três pilares da mesma: encapsulamento, herança e polimorfismo. Demonstrar que a linguagem Java também oferece uma boa performance para o desenvolvimento de jogos de computador e promover a interação entre alunos dos cursos presentes na UFC campus Quixadá, por meio de competições internas. Como no desenvolvimento de softwares de grande porte as linguagens mais utilizadas são as orientadas a objetos, principalmente a linguagem Java, ter uma boa base dos principais conceitos e características relacionadas a esse paradigma é muito importante para a carreira profissional do aluno. Através dos nossos trabalhos conseguimos ensinar a linguagem Java e orientação a objetos de forma dinâmica e divertida, de modo a tornar o aluno mais capacitado para o mercado de trabalho. 4. Conclusões A maioria das pessoas detesta passar horas estudando, pois é cansativo. Por isso aprender algo novo de forma divertida é muito empolgante, foi nesse âmbito que o projeto foi desenvolvido. O Robocode como ferramenta de ensino de Java propôs aos alunos uma forma de fugir da rotina e desprender-se dos métodos convencionais. Despertando o interesse pela programação e aumentando o rendimento acadêmico. Com isso, nosso projeto acaba se tornando um meio fundamental de auxílio à aprendizagem dos alunos. Referências 1. Harvey M. Deitel. (2005) “Java - Como Programar”. 6ª Edição, Pearson Education Do 2. PEZ; Voidious; Fnl; David Alves. (2007). Main Page - RoboWiki <http://robowiki.net/>. Acessado (ou Visitado) em 5 de Maio de 2011 3. Brett D. McLaughlin; Gary Pollice; Dave West. (2006) “Análise e Projeto Orientado ao Objeto”. 1ª Edição, Alta Books 4. Stuart Russel. (2003) “Inteligência Artificial”. 2ª Edição, Campus 5. FLISOL – Ceará: O maior encontro de Software Livre da América Latina <http://www.flisolce.com.br/>. Acessado (ou Visitado) em 9 de Abril de 2011