XVII Encoinfo – Congresso de Computação e Sistemas de Informação ISSN: 2447-0767 123
ORDENA – um Jogo Educacional para Auxílio ao Ensino de
Métodos de Ordenação Haroldo F. Fritsch, Edeilson M. da Silva, Jackson G. de Souza
1
1Centro Universitário Luterano de Palmas (CEULP/ULBRA)
Caixa Postal 85 – 77.019-900 – Palmas – TO Brazil {fritsch21}@gmail.com, {jgomes,milhomem}@ceulp.edu.br
Resumo. Este artigo apresenta o desenvolvimento de um jogo, denominado Ordena,
cujo o intuito é aprimorar a interação entre alunos e professores durante o processo
de ensino-aprendizagem de métodos de ordenação. O objetivo do jogo é demonstrar
na prática o funcionamento dos algoritmos de ordenação, através de um jogo de
ordenação. Os métodos de ordenação definidos foram: Bubble Sort, Selection Sort e
Insert Sort. O jogo foi desenvolvido na engine de jogos Unity 3D para ser executado
na plataforma Android.
1. Introdução Os algoritmos de ordenação presentes em disciplinas de Estrutura de Dados da maioria dos
cursos de graduação em Tecnologia da Informação, compreendem componentes importantes
para a compreensão de problemas clássicos da computação, como, recuperação de
informação, ordenação, entre outros [Baker et al., 1999, apud Wiedenbeck 2014].
Segundo Ziviani (2004, p. 69) “Os algoritmos de ordenação constituem bons
exemplos de como resolver problemas utilizando computadores”. Dominar algoritmos de
ordenação é especialmente importante para os futuros engenheiros, independentemente do
domínio específico de software que irão trabalhar.
No entanto, algoritmos de ordenação não é um assunto trivial de ser compreendido,
pois exigem a correta compreensão de conceitos abstratos, ou seja, conceitos que os alunos
novatos têm de lidar dos quais eles não têm um modelo concreto em sua vida cotidiana.
Muitos estudantes têm dificuldades devido à natureza do assunto (programação). Além disso,
o tempo de exposição aos algoritmos de ordenação para alguns alunos não é suficiente. Isso
muitas vezes leva a altas taxas de evasão em cursos de programação [Lahtinen, 2005].
Alunos inexperientes são tipicamente limitados a um conhecimento superficial de
algoritmos. Eles muitas vezes se aproximam do código "linha por linha" ao invés de usarem
as estruturas significativas de um programa. O conhecimento desses alunos tende a ser de
contextos específicos e eles também, muitas vezes, não conseguem aplicar o conhecimento
que obtiveram de forma adequada [Cañas, 1994].
De acordo com Silva et al. (2011), as dificuldades que surgem durante o ensino de
algoritmos, se dão pelo fato de exigir, não apenas o aprendizado de uma nova tecnologia, mas
também de um conjunto de habilidades, como raciocínio lógico, competência para resolver
problemas, além da capacidade do aluno em abstrair soluções fazendo uso de uma
representação formal.
Segundo Bittencourt, et. al (2003) o modelo de ensino-aprendizagem contemporâneo,
está centrado na figura do professor, na qual existe um enfoque ao conteúdo em detrimento do
processo de aquisição do conhecimento. Em contraposição a este modelo, Wajskop (2003, p.
5) diz que: “Os jogos fazem forte oposição a esse modelo, enquanto o jogo é uma atividade
livre e espontânea, o ensino é, por excelência, uma atividade dirigida”. Contudo, segundo
Fortuna (2005) brincar desenvolve a imaginação e a criatividade, e, na condição de aspectos
da função simbólica, atingem a construção do sistema de representação, beneficiando, por
exemplo, a aquisição da leitura e da escrita no aprendiz.
124 XVII Encoinfo – Congresso de Computação e Sistemas de Informação ISSN: 2447-0767
O emprego de ferramentas que permitem a visualização de algoritmos9 podem auxiliar
no processo de ensino-aprendizagem, diminuindo o grau de abstração dos alunos [Lahtinen
2005]. Embora existam ferramentas de visualização e exemplos disponíveis na internet para
uso gratuito, é provável que, diante do exposto, professores tenham dificuldades em fornecer
as visualizações para os alunos de uma forma utilizável e eficaz na aprendizagem. Uma
solução seria o uso de jogos eletrônicos para a visualização de algoritmos.
Segundo Souza (2012) a utilização de motores de jogos10
para o desenvolvimento de
jogos eletrônicos reduz de forma considerável o esforço utilizado, permitindo que o foco seja
dado a questões relacionadas ao o jogo em si. Esse processo minimiza a possibilidade de erros
derivados da falta de experiência do desenvolvedor, de forma que é mais adequado para um
especialista em projeto de jogos desenvolver um protótipo utilizando uma ferramenta pronta.
Diante o exposto, o presente trabalho tem apresenta o desenvolvimento do jogo
Ordena, voltado para a plataforma Android11
, construído sobre o motor de jogos Unity 3D,
com intuito de auxiliar o aluno no ensino-aprendizagem de algoritmos de ordenação na
disciplina de Estrutura de Dados.
2. Design do Jogo Em Engenharia de Software são necessários vários passos antes de se entrar na parte de
codificação. Inicialmente é preciso preparar os recursos de software, e prosseguir pela fase de
design. Em relação a de criação de jogos, estes passos são introduzidos na criação do
documento do desenvolvimento do jogo (GDD do inglês Game Design Document).
Segundo Velasquez (2009) o modelo de processo no desenvolvimento de um jogo
possui as etapas: i) concepção de jogo; ii) ideia do jogo e seu enredo; iii) GDD, contendo
todos os detalhes necessários para o desenvolvimento do jogo; iv) escolha da plataforma e
tecnologias de apoio; v) codificação; e vi) a manutenção.
O GDD, é um texto produzido por um game designer (pessoa que projeta
jogos) que descreve todas as características de um jogo, desde informações básicas, conceitos,
personagens e cenários, informações mais detalhadas como projeto de levels (fases do jogo) e
até sons. Ou seja, o GDD é um documento que servirá de referência para todos os envolvidos
no desenvolvimento do projeto [Pedersen 2003].
Com base na definição do GDD para jogos educacionais elaborada pela
SBGames12
o desenvolvimento de um jogo educacional deve seguir um conjunto de diretrizes
que atenda às necessidades dos jogadores. Ele deve ser atrativo e motivador, e que possua o
conteúdo pedagógico necessário para gerar aprendizado [Leite, et. al 2015].
A estrutura de um jogo consiste em vários elementos, segundo Schell (2011) estes
elementos podem ser definidos em quatro categorias, o que ele chamou de “tétrade
elementar”. A Figura 1 apresenta essas categorias.
9 O projeto Codewitz de cooperação internacional visa desenvolver soluções que beneficia o ensino e a
aprendizagem de programação. O principal objetivo do projeto é desenvolver visualizações de algoritmos e conceitos de programação para uso em sala de aula para apoiar a aprendizagem. O projeto está disponível no endereço: http://www.codewitz.net 10
O Unity 3D é o motor de jogo utilizado para o desenvolvido do jogo Ordena. Ele está disponível no endereço: https://unity3d.com/pt 11
O Android é um sistema operacional para aparelhos móveis 12
O SBGames é um simpósio em pesquisa e desenvolvimento de jogos eletrônicos na América Latina, organizado anualmente pela Comissão Especial de Jogos da Sociedade Brasileira de Computação (SBC) e pela ABRAGAMES (Associação Brasileira dos Desenvolvedores de Jogos Digitais).
XVII Encoinfo – Congresso de Computação e Sistemas de Informação ISSN: 2447-0767 125
Figura 1. Tétrade elementar para jogos educacionais
Conforme apresenta a Figura 1 é possível identificar o relacionamento dos
componentes estruturais de um jogo educacional. A estética é o elemento mais visível ao
jogador e representa os sons, aparências que o jogo deve transmitir. A mecânica define os
procedimentos do jogo, como o jogador irá se comportar, o que acontece com ele e o objetivo
do jogo. A narrativa que representa a história que será contada no jogo. E a tecnologia o
elemento menos visível ao jogador, representa o meio físico que permite a existência do jogo.
3. O motor de jogo Unity Segundo Rocha, et. al (2007) um motor de jogo é um framework projetado para a criação e
desenvolvimento de jogos para consoles, dispositivos móveis e computadores pessoais. As
principais funcionalidades fornecidas por um motor de jogo incluem: um motor de
renderização13
de gráficos em 2D e 3D, um motor de física ou de detector de colisões, som,
scripting, animação, inteligência artificial, redes, streaming, memória gestão, segmentação,
localização de apoio, e um grafo de cena.
O objetivo de um motor de jogos consiste em agrupar as funções fundamentais para o
desenvolvimento de jogos. Com isso, várias aplicações podem ser desenvolvidas utilizando
como base de código este componente central. Isto certamente reduz o tempo total de
produção, à medida que concentra a equipe de trabalho em atividades de mais alto nível
[Rocha, et. al 2007].
O motor de jogo Unity 3D é uma plataforma de desenvolvimento flexível, usado para
criar jogos e experiências interativas em 3D e 2D para as principais plataformas do mercado,
como: Windows, Android, iOS, Web entre outras. Unity 3D permite a especificação de
configurações de compactação e de resolução de textura para cada plataforma que a engine
(motor de jogo) suporta, e fornece suporte para mapeamento de colisões [Unity 2015]. A
Figura 2 apresenta uma captura de tela da plataforma.
13
Renderização é processo de geração de uma imagem 2D ou 3D por meio de programas de computador.
126 XVII Encoinfo – Congresso de Computação e Sistemas de Informação ISSN: 2447-0767
Figura 2 - A plataforma de desenvolvimento Unity.
Segundo o Unity (2015) a versão 5 do motor de jogos traz suporte para 21
plataformas, entre elas: Windows, Linux, Android, iOS, Windows Phone 8, PS4, Xbox 360,
Xbox One, TV Android, Oculus Rift e Gear VR.
4. Metodologia O projeto de construção do jogo Ordena foi elaborado com base no processo de
desenvolvimento de jogos segundo Velasquez (2009) e descrito na seção 2. O GDD foi
elaborado conforme as diretrizes da SBGames (2013) para jogos educacionais contidas na
mesma seção. A Figura 3 ilustra o processo de construção do jogo Ordena.
Figura 3 – O processo de construção do jogo Ordena.
De acordo com as etapas apresentadas na Figura 3 o detalhamento do processo é
descrito como se segue.
1) Quanto a idéia e a concepção do jogo:
Idéia: criar um jogo educacional para a visualização dos métodos de ordenação.
Idéia do jogo: criar um jogo que permita ao aluno ordenar passo-a-passo uma lista de
números aleatórios, com base nos algoritmos dos métodos de ordenação.
Delimitação do público-alvo: alunos das disciplinas de estruturas de dados.
Delimitação do conteúdo: serão implementados os seguintes métodos: Bubble-sort,
insert-sort e select-sort.
Objetivo educacional: promover a aprendizagem dos métodos de ordenação.
2) Quanto a elaboração do GDD:
História: o jogo possui uma narrativa não linear, onde cada cena é uma história.
Estética: o possuirá um visual 2D com a padronização de cores para cada método de
ordenação.
XVII Encoinfo – Congresso de Computação e Sistemas de Informação ISSN: 2447-0767 127
Mecânica: a mecânica básica do jogo se resume no ato pressionar duas bolas para que
essas troquem suas posições.
Tecnologia: o jogo será desenvolvido na plataforma Unity 3D e as imagens dos sprites no
editor gráfico GIMP.
Aprendizagem: para promover a aprendizagem, o jogo permitirá ao aluno executar passo-
a-passo os métodos de ordenação.
3) Codificação do jogo
Criação dos cenários: foram criados cinco cenários para o jogo, sendo: menu principal do
jogo, ajuda e definição dos métodos, menu de seleção dos métodos de ordenação; seleção
de fases do método escolhido e o cenário onde o jogo acontece.
Objetos das cenas (sprites): foram criadas bolas enumeradas que representam os números
a serem ordenados.
Lógica do jogo: foram criadas duas lógicas de jogo, uma para o movimento das bolas na
tela e outra para a troca de posição das bolas.
Obtenção da lista de números desordenados: foi criada uma aplicação em separado para
obter as listas com base na dificuldade para ordená-los.
4) Manutenção e prototipação:
Prototipação: foi gerado um protótipo para dispositivos Android, como objetivo de validar
a jogabilidade do jogo e refinar código.
Efeitos sonoros: foi realizada uma pesquisa por arquivos de áudio livre de direitos autorias
para o jogo.
Produção: após as correções do protótipo foi gerado o pacote APK (arquivo auto
instalável) para a plataforma Android.
Segue abaixo a especificação da linguagem de programação bem como os softwares
utilizados no processo de desenvolvimento do jogo:
O monodevelop é um ambiente de desenvolvimento integrado fornecido conjuntamente
com o Unity 3D, e é destinado para o desenvolvimento de scripts (codificação). A
ferramenta combina o funcionamento familiar de um editor de texto com recursos
adicionais para a depuração e outras tarefas de gerenciamento de códigos. Ele suporta duas
linguagens de programação C# e Java [Unity 2015]. Neste projeto optou-se por utilizar a
linguagem C#.
C# - é a linguagem de programação desenvolvida pela Microsoft para a plataforma .NET.
Possui tipagem dinâmica e estática, além de ser orientada a objetos;
GIMP - É uma ferramenta gratuita de edição de imagens que permite a criação e
manipulação. A escolha desta ferramenta foi motivada pela facilidade de exportação de
arquivos compatíveis com o Unity 3D;
5. Apresentação do jogo O objetivo do jogo é realizar a ordenação de uma lista de números desordenados, através da
troca de posição dos números. A troca deverá obedecer às regras de um método de ordenação.
Antes de começar a brincar, o jogador deverá escolher em qual método de ordenação
ele quer jogar, que são: Bubble-sort, Insert-sort e Select-sort
No início do jogo é apresentado ao jogador uma lista de bolas enumeradas, cujos
números estão fora de ordem. Para ordenar todas as bolas, o jogador deverá trocar as posições
das bolas, de duas em duas, até que todas as bolas estejam ordenadas. Porém, para cada
tentativa de troca de posição, será avaliado se a troca pretendida corresponde ao mesmo passo
que um algoritmo de ordenação correspondente. Caso o passo seja o mesmo do algoritmo, a
troca é realizada, caso contrário o jogador recebe um aviso visual do erro e a troca não é
realizada. Vence o jogador que conseguir realizar todas as trocas errando menos de três
vezes e dentro do tempo pré-estabelecido. A Figura 4 ilustra uma captura tela do jogo.
128 XVII Encoinfo – Congresso de Computação e Sistemas de Informação ISSN: 2447-0767
Figura 4 – Captura de tela do jogo Ordena.
Conforme apresenta a Figura 4 os componentes presentes na tela do jogo são: 1) botão
com a função parar/jogar; 2) corresponde ao nome do método de ordenação utilizado na
partida; 3) complexidade do método (para todos os métodos será sempre definida a
complexidade do pior caso); 4) área de fundo; 5) nuvem indicadora do último movimento
realizado; 6) tempo em contagem regressiva para o fim da partida; 7) quantidade de vidas
disponíveis do jogador; 8) indicador de fase atual e 9) bola enumerada.
6. Os cenários do jogo A criação dos cenários do jogo foram baseados nos seguintes critérios: fácil jogabilidade;
ambiente interativo de treinamento para os métodos de ordenação; e a promoção do ensino de
métodos de ordenação. Para isso, definiu-se a criação de cinco cenários, sendo: Inicio,
Instruções, Métodos, Fases e Jogo. Todos os cenários serão descritos nesta seção.
Figura 5 – O cenário Início
Conforme ilustra a Figura 5, no cenário Início dá acesso a todas as opções do jogo,
sendo: Jogar – inicia o jogo; Instruções – acessa o cenário de instruções e treinamento
interativo; Créditos – exibe informações sobre os autores do jogo; Sair – encerra a aplicação.
O quinto botão localizado no canto direito inferior apresentado por uma imagem de saída de
som, permite habilitar ou desabilitar os efeitos sonoros do jogo.
XVII Encoinfo – Congresso de Computação e Sistemas de Informação ISSN: 2447-0767 129
Figura 6 – O cenário Instruções e Treinamento interativo
Figura 6, o cenário Instruções permite ao jogador iniciante conhecer o funcionamento
do jogo, bem como conhecer os conceitos envolvidos nos métodos de ordenação através de
um treinamento interativo.
Figura 7 – O cenário Método de Ordenação
Conforme apresentado na Figura 7, o cenário Métodos que permite ao jogador
escolher qual método de ordenação ele quer jogar. É exibido na parte inferior da tela a
pontuação geral no jogo.
Figura 8 – O cenário Método de Ordenação
De acordo como ilustrado na Figura 8, o cenário Fase que permite ao usuário escolher
uma fase para jogar. No início do jogo todas as fases aparecem bloqueadas para jogar, exceto
a primeira fase de cada método. Para desbloquear uma fase é preciso vencer a fase anterior.
Existem outras sinalizações para as fases das quais o jogador não obtiver a vitória, por
exemplo, se o jogador cometer três erros aparecerá uma mão com polegar para baixo, ou, se o
jogador perder por tempo aparecerá um relógio.
Para o desenvolvimento do jogo definiu-se o limite de 24 fases por método perfazendo
um total de 72 fases. O nível de dificuldade das fases é progressivo e é determinado pela
quantidade de trocas necessário para a ordenação e o tempo disponível para realiza-las.
7. As equações utilizadas no movimento das bolas Com o intuito de obter uma movimentação suave dos objetos na tela foi realizada uma
pesquisa por equações que descrevessem a mecânica do movimento, que resultou na escolha
das equações quadráticas e da reta. Essa seção apresenta a mecânica dos movimentos para as
bolas e os parâmetros utilizados.
De acordo com Sato (2004), as equações de segundo grau são usadas frequentemente
no cálculo das trajetórias de projéteis em movimento. Para facilitar a aplicação da função
Pontuação Geral: 0
130 XVII Encoinfo – Congresso de Computação e Sistemas de Informação ISSN: 2447-0767
quadrática no jogo foi necessário reduzi-la a sua forma fatorada, como apresentação na
Equação 1.
(1)
Para ilustrar a utilização da função quadrática na sua forma fatorada para representar
um movimento parabólico, pode-se observar a Figura 9 que contém quatro funções
quadráticas com as descrições algébricas e as respectivas representações gráficas.
Figura 9 – Exemplo de funções quadráticas na sua forma fatorada.
A Figura 9 apresenta um gráfico com os desenhos do movimento parabólico num
plano. Considerando que a tela de um jogo em 2D pode ser representada por pontos
cartesianos, , e que as raízes reais das funções indicam o ponto em que a curva
intercepta o eixo , a aplicação da equação no jogo é definida em: , onde
é o ponto atual da bola na tela e , o ponto de destino da bola.
8. Considerações Finais Neste artigo foi possível delimitar as etapas do processo de desenvolvimento do jogo Ordena,
iniciando com uma pesquisa orientada na literatura referente à aprendizagem baseada em
jogos. Contudo, embora o trabalho tenha alcançado êxito (pelo processo e pelo jogo, em si,
como resultado mais prático) é evidente a falta da realização de testes como um procedimento
eficaz para mensurar a eficácia do jogo enquanto meio de aprendizado e diversão. Assim,
novos estudos são necessários com o objetivo de validar a utilidade do jogo Ordena em
ambiente real.
Durante o processo de criação de jogos educacionais o grande desafio se concentra em
estabelecer um equilíbrio entre as propriedades que propiciam a diversão e os conteúdos que
oferecerão o aprendizado ao jogador. Assim, um jogo educacional bem-sucedido pode ser
pensado como aquele em que é capaz de oferecer uma experiência tão imersiva quanto a de
um jogo comercial e com a adição do conteúdo pedagógico sem que haja a desvalorização dos
outros elementos básicos de um jogo.
9. Referencias Bibliográficas
Baker, R. S.; Boilen, M.; Goodrich, M. T.; Tamassia, R.; Stibel, B. A. “Testers and visualizers for
teaching data structures”. Em: ACM SIGCSE Bulletin, 31(1), 261-265., 1999.
Bittencourt, J. R.; Giraffa, L. M., “Modelando Ambientes de Aprendizagem Virtuais utilizando
Role-Playing Games”. XIV Simpósio Brasileiro de Informática na Educação - NCE -
IM/UFRJ, 2003.
Cañas, J.J.; Bajo, M.T.; Gonzalvo, P. “Mental models and computer programming. International
Journal of Human-Computer Studies”, 40(5), 795-811. 1994
XVII Encoinfo – Congresso de Computação e Sistemas de Informação ISSN: 2447-0767 131
Fortuna, T. R. “Sala de aula é lugar de brincar”, Em: Planejamento: Análises menos
convencionais, Organizado por Maria L.F. Xavier e Maria I.H. Dalla Zen, Mediação, Porto
Alegre, 2005.
Lahtinen, E.; Ala-mutka, K.; Järvinen, H. “A Study of the Difficulties of Novice Programmers”.
Proceedings do 10th ITiCSE, Monte de Caparica, Portugal, 2005
Leite, P. S.; Mendonça, V. G.. “Diretrizes para Game Design de Jogos Educacionais”. Curitiba-
PR: SBGAMES. Disponível em: <http://www.sbgames.org/>. Acesso em: 15 de outubro de
2015.
Pedersen, R. “Game design foundations”. 1.ED. Sudbury: Wordware publishing, INC. 2003.
Rocha, Rodrigo; Bessa, Aline; Bezerra, Carlos E. B.; Medeiros, Ivan; Oliveira, Caio; Bandeira,
H.; “O Desenvolvimento de um Motor Multiplataforma para Jogos 3D”. Em: São Leopoldo-
RS: VI Simpósio Brasileiro de Jogos, 2007.
Sato, Jocelino. “As cônicas e suas aplicações”. UFU, MG 1, 2005.
SBGames. Disponível em: <http://www.sbgames.org/>. Acesso em: 15 de outubro de 2015.
Schell, J. “A arte de game design: o livro original”. Rio de Janeiro: Elsevier, 2011.
Silva, Juliana Pereira. “A Utilização dos Recursos Tecnológicos no Ensino Superior”. Disponível
em:<http://www.pucrs.br/famat/viali/tic_literatura/artigos/tics/14-151-1-PB.pdf>. 2011,
Acesso em: 07 outubro 2015.
Souza, A. F. “Genis: Assistente para o Desenvolvimento de Jogos de Ação e Rpg”. Petrópolis-RJ:
Tecnologia da Informação e Comunicação do IST-Petrópolis- FAETEC, 2012
Unity Technologies, Disponível em: <http://www.unity3d.com/>. Acesso em: 10 de set. de 2015.
Velasquez, C. E. “Modelo de Engenharia de Software para o Desenvolvimento de Jogos e
Simulações Interativas”, Porto: Universidade Fernando Pessoa. 2009
Wajskop, G. “O brincar na educação infantil. Cadernos de Pesquisa”, São Paulo, (92):62- 9, fev.
2003.
Wiedenbeck, S., Labelle, D. Kain, B., “Factors Affecting Course Outcomes in Introductory
Programming”, In: 16 th Workshop of the Psychology of Programming Interest Group, 2014.
Ziviani, N. “Projeto de Algoritmos: com Implementações em Pascal e C”. 2. ed. São Paulo:
Thomson Learning, 2004.
Top Related