Robocode: um auxílio no aprendizado da linguagem Java

Propaganda
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
Download