UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ UTFPR CAMPUS CORNÉLIO PROCÓPIO DIRETORIA DE GRADUAÇÃO E EDUCAÇÃO PROFISSIONAL CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DIOGO HIDEKI MATSUMOTO VÍDERE 2: UMA PLATAFORMA DE JOGOS PARA ESTIMULAÇÃO VISUAL CORNÉLIO PROCÓPIO OUTUBRO - 2012 DIOGO HIDEKI MATSUMOTO VÍDERE 2: UMA PLATAFORMA DE JOGOS PARA ESTIMULAÇÃO VISUAL Trabalho de Diplomação apresentado como requisito parcial a obtenção do grau de Tecnólogo em Análise e Desenvolvimento de Sistemas pela Universidade Tecnológica Federal do Paraná - Câmpus Cornélio Procópio Orientador: Fabrício Martins Lopes CORNÉLIO PROCÓPIO OUTUBRO - 2012 Agradecimentos A meus pais Wanderley e Vera pela oportunidade na formação acadêmica que obtive. A meus irmãos Hugo e Douglas pelas ideias e forças para concluir o trabalho. Ao meu orientador Fabrício pela confiaça, sugestões e esforço depositado neste trabalho. Aos professores da Universidade Tecnológica Federal do Paraná pelo ensino que obtive durante o curso. Aos membros da empresa Calibre Games pelo conhecimento compartilhado e iniciativa deste trabalho. Aos demais amigos e colegas de curso pelo respeito e pela ajuda durante o curso. Aos que não foram citados, porém contribuíram para a conclusão deste trabalho. Resumo A deficiência visual é caracterizada por uma alteração ou diminuição da eficiência visual. Esse resíduo visual pode ser estimulado de forma que as pessoas aprendam a usá-lo e recuperem parcialmente sua acuidade visual. Nesse contexto, esse trabalho apresenta uma plataforma contendo doze jogos destinados ao estímulo visual de pessoas com visão subnormal. Entre os estímulos disponibilizados aos usuários estão a visão para detalhes em cores, percepção de contrastes, estímulos luminosos, interpretação de imagens e cenas, entre outros. Além dos jogos, é disponibilizado na plataforma a integração a um sistema de acompanhamento da evolução dos usuários, tal como escores e estatísticas que permitem identificar o comportamento individual ou coletivo dos usuários, quantidade de vezes que o usuário jogou o mesmo jogo, seus acertos e erros, entre outros, de forma gráfica e intuitiva. O desenvolvimento da plataforma foi realizado com a tecnologia Java, de forma que os jogos possam ser executados independentes do sistema operacional utilizado pelo usuário. Os resultados ilustrativos dos jogos aplicados a um usuário demonstram o potencial dessa plataforma de jogos, os quais apontam a adequação dessa proposta aos objetivos propostos. O Vídere é livremente disponibilizado a partir da url http://code.google.com/p/viderejogos/. Abstract The visual impairment is characterized by a change or reduction of visual efficiency. This residual vision can be stimulated so that people learn to use it and partially recover their eyesight. This paper presents a platform containing twelve games for visual stimulus of people with low vision. Among the visual stimulus available to users, there are games to detect color details, contrast perception, light stimuli, interpretation of images and scenes, among others. In addition to games, it is also available on the platform a system for monitoring the evolution of its users, such as scores and statistics that identify their individual or collective behavior, number of times played by user and the respective game, their successes and errors. This monitoring is presented by using graphics in an intuitive way. The software was developed with the Java technology, so it can be run independent of the operational system. The results of the games applied to a user demonstrate the potential of this game platform, which indicates its suitability to the purposes of this work. The Videre is freely available from the http://code.google.com/p/viderejogos/. Lista de Figuras 3.1 Detalhe do Jogo Só Soprando. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 19 3.2 Interface do mini-jogo Matriz de Formas Geométricas. . . . . . . . . . . . . . . . . . . . . . . . p. 22 3.3 Tela de Parabenização ao concluir todas as fases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 23 5.1 Diagrama de Classes - Jogos Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 31 5.2 Diagrama de Classes - Jogos 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 32 5.3 Diagrama de Classes - Jogos 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 33 5.4 Diagrama de Classes - Jogos 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 34 5.5 Diagrama de Classes - Jogos 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 35 5.6 A Classe FaseSombra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 37 5.7 Área de clique das imagens, antes e atual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 39 5.8 Menu Inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 40 5.9 Diagrama de Casos de Uso - Gerenciar Usuário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 42 5.10 Diagrama de Casos de Uso - Gerar Gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 45 5.11 Diagrama de Atividades - Criar Usuário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 48 5.12 Diagrama de Atividades - Exibir Gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 49 5.13 Diagrama de Atividades - Gerenciamento de Jogadas . . . . . . . . . . . . . . . . . . . . . . . . p. 50 5.14 Diagrama de Sequência - Gerar Gráficos sem filtros adicionais . . . . . . . . . . . . . . . p. 51 5.15 Diagrama de Sequência - Gerar Gráficos com filtros adicionais . . . . . . . . . . . . . . . p. 51 5.16 Diagrama de Classes - Módulo Estatístico (simples). . . . . . . . . . . . . . . . . . . . . . . . . . p. 53 5.17 Diagrama de Classes - Módulo Estatístico (detalhado). . . . . . . . . . . . . . . . . . . . . . . . p. 53 5.18 Arquivo de Configuração de Builds do Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 54 5.19 Menu de Seleção de Gráficos a Gerar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 55 5.20 Exemplo de Gráfico Gerado - Linha de Aprendizado . . . . . . . . . . . . . . . . . . . . . . . . p. 56 5.21 Tela de Seleção de Filtros Adicionais para Linha de Aprendizado . . . . . . . . . . . . p. 56 5.22 Tela de Seleção de Filtros Adicionais para Desempenho em Jogos . . . . . . . . . . . . p. 57 5.23 Exemplo de Gráfico Gerado - Desempenho em Jogos . . . . . . . . . . . . . . . . . . . . . . . . p. 58 5.24 Tela de Seleção de Filtros Adicionais para Uso de Jogo . . . . . . . . . . . . . . . . . . . . . . p. 59 5.25 Exemplo de Gráfico Gerado - Uso de Jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 59 5.26 Exemplo de Gráfico Gerado - Desempenho Coletivo . . . . . . . . . . . . . . . . . . . . . . . . . p. 60 5.27 Exemplo de Gráfico Gerado - Boxplot de Jogos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 61 5.28 Exemplo de Gráfico Gerado - Boxplot de Datas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 62 5.29 Exemplo de Gráfico Gerado - Boxplot de Jogadores . . . . . . . . . . . . . . . . . . . . . . . . . p. 63 5.30 Diagrama de Atividades - Execução de Jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 65 5.31 Diagrama de Classes - Novos Jogos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 66 5.32 Tela do Jogo Identifique as Formas! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 68 5.33 Tela do Jogo de Contraste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 70 5.34 Tela do Jogo de Movimento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 72 6.1 Cronograma planejado sobre a execução do trabalho . . . . . . . . . . . . . . . . . . . . . . . . . p. 73 6.2 Cronograma executado do trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 73 6.3 Descrição dos ciclos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 74 Lista de Tabelas 3.1 Classificação da Perda de Visão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 18 5.1 Alteração dos nomes de imagens no mini-jogo Números . . . . . . . . . . . . . . . . . . . . . p. 37 5.2 Alteração dos nomes de imagens no mini-jogo Matriz de Formas Geométricas p. 38 5.3 Alteração dos nomes de imagens no mini-jogo Matriz de Figuras . . . . . . . . . . . . . p. 39 5.4 Alteração dos nomes de imagens no mini-jogo Ache as Figuras . . . . . . . . . . . . . . . p. 39 5.5 Requisitos Funcionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 41 5.6 Requisitos Não-Funcionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 41 5.7 Caso de Uso Criar Usuário. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 43 5.8 Caso de Uso Alterar Usuário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 43 5.9 Caso de Uso Listar Usuário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 44 5.10 Caso de Uso Escolher Usuário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 44 5.11 Caso de Uso Buscar Usuários . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 46 5.12 Caso de Uso Buscar Jogadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 46 5.13 Caso de Uso Gerar Gráfico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 47 5.14 Caso de Uso Exibir Gráfico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 47 5.15 Atributos da Classe GameData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 52 5.16 Gráfico de Linha de Aprendizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 55 5.17 Gráfico de Desempenho em Jogos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 57 5.18 Gráfico de Uso de Jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 58 5.19 Gráfico de Desempenhos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 60 5.20 Gráfico de Boxplot de Jogos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 61 5.21 Gráfico de Boxplot de Datas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 62 5.22 Gráfico de Boxplot de Jogadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 63 5.23 Requisitos Funcionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 64 5.24 Requisitos Não-Funcionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 64 5.25 Tabela de Pontuação do Jogo de Formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 67 5.26 Formas Geométricas do Jogo de Formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 67 5.27 Tabela de Pontuação do Jogo de Contraste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 69 5.28 Tabela de Pontuação do Jogo de Movimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 71 5.29 Tragetórias do Jogo de Movimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 71 Sumário 1 2 3 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 13 1.1 Apresentação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 13 1.2 Organização do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 13 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 15 2.1 Reorganização da estrutura do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 15 2.2 Acompanhamento da evolução do usuário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 16 2.3 Implementação de novos jogos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 16 Revisão Bibliográfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 17 3.1 Deficiência Visual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 17 3.2 Trabalhos Relacionados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 18 3.2.1 EACH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 18 3.2.2 Só Soprando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 18 3.2.3 LookTel Recognizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 19 3.2.4 DOSVOX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 19 3.2.5 JogaVOX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 20 3.2.6 CityVOX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 20 3.2.7 AudioGames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 20 3.2.8 Smart Audio City . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 20 3.2.9 Boxplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 21 3.3 Jogo Vídere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 21 3.4 Tecnologias Utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 23 3.4.1 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 23 3.4.1.1 JSE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 23 3.4.1.2 JFreeChart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 24 3.4.2 3.4.2.1 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 24 Sistema Operacional Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 24 4 3.4.2.2 Netbeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 25 3.4.2.3 Tortoise Subversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 25 3.4.2.4 Kile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 25 3.4.2.5 Astah UML e Argo UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 25 Modelo Espiral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 26 4.1 Estudo das tecnologias usadas no projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 26 4.2 Desenvolvimento de novos módulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 27 4.2.1 Concepção do Jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 27 4.2.2 Análise de Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 27 4.2.3 Desenvolvimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 27 4.2.4 Testes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 28 4.3 5 Redação do Trabalho de Diplomação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 28 Desenvolvimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 29 5.1 Reestruturação do Código. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 29 5.1.1 Fragmentação de Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 29 5.1.1.1 Lógica de Jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 29 5.1.1.2 Recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 29 5.1.1.3 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 30 5.1.1.4 Fases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 30 5.1.2 Diagrama de Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 30 5.1.3 Mudanças Gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 36 5.1.3.1 Fluxo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 36 5.1.3.2 Fases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 36 5.1.4 Mudanças Específicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 36 5.1.4.1 Sombras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 36 5.1.4.2 Números . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 37 5.1.4.3 Matriz de Formas Geométricas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 38 5.1.4.4 Matriz de Figuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 38 5.1.4.5 Ache as Figuras! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 39 5.2 5.2.1 Módulo Estatístico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 40 Definição de Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 41 5.2.1.1 Requisitos Funcionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 41 5.2.1.2 Requisitos Não-Funcionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 41 5.2.2 Casos de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 41 5.2.3 Diagrama de Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 47 5.2.4 Diagrama de Sequência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 51 5.2.5 Diagrama de Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 52 5.2.6 Inclusão do JFreeChart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 54 5.2.7 Gráficos Desenvolvidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 54 5.2.7.1 Linha de Aprendizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 54 5.2.7.2 Desempenho em Jogos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 57 5.2.7.3 Uso de Jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 58 5.2.7.4 Desempenhos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 60 5.2.7.5 Boxplots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 61 5.3 Novos Jogos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 64 5.3.1 Definição de Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 64 5.3.1.1 Requisitos Funcionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 64 5.3.1.2 Requisitos Não-Funcionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 64 5.3.2 Diagrama de Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 65 5.3.3 Diagrama de Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 66 5.3.4 Jogos desenvolvidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 67 5.3.4.1 Identifique a Forma! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 67 5.3.4.2 Jogo de Contraste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 69 5.3.4.3 Jogo do Movimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 71 6 Cronograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 73 7 Recursos necessários . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 75 8 7.1 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 75 7.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 75 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 76 8.1 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 76 8.2 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 76 Referências Bibliográficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 78 Apêndice A -- Proposta do Trabalho de Diplomação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 80 13 1 Introdução O uso da tecnologia no dia a dia tornou-se uma atividade indispensável. Há vários recursos oferecidos aos usuários realizados com o apoio da informática utilizando-se um software para atender as necessidades de uma pessoa. Dentre as diversas áreas de aplicações, a área educacional foca o estímulo ao desenvolvimento de uma determinada habilidade humana, a qual é chamada de software educacional que oferece ao usuário, muitas vezes, recursos da multimídia para tornar o aprendizado mais interativo e eficiente. Com ênfase na área de desenvolvimento de software educacional é proposta a continuação de um projeto com as mesmas características de uma aplicação educacional focada na área de estímulo à visão para portadores de deficiência visual. 1.1 Apresentação Esta monografia apresenta o Trabalho de Diplomação do Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas da Universidade Tecnológica Federal do Paraná Câmpus Cornélio Procópio. Neste trabalho é descrita a aplicação de uma metodologia comumente utilizada em desenvolvimento de jogos, relatando todos os procedimentos utilizados durante o desenvolvimento do aplicativo. Trata-se de um jogo educacional focado no estímulo à visão de crianças e que também gera estatísticas de aprendizado e uso tanto individual quanto coletivo. 1.2 Organização do Trabalho A organização do Trabalho de Diplomação apresentado está divido da seguinte forma: No Capítulo 2 são apresentados os objetivos deste trabalho. 1.2 Organização do Trabalho No Capítulo 3 são abordados as pesquisas efetuadas durante o trabalho. No Capítulo 4 é apresentado o modelo de desenvolvimento utilizado. No Capítulo 5 é descrito como foi o processo de desenvolvimento do trabalho. No Capítulo 6 são apresentados os cronogramas de desenvolvimento. No Capítulo 7 são descritos os recursos utilizados. No Capítulo 8 são apresentadas as considerações finais deste trabalho. 14 15 2 Objetivos Uma abordagem inicial para o estímulo visual de crianças com baixo índice de visão ou visão subnormal, desenvolvido por Graziela Cristina do Vale Pascoal Rodrigues em seu Trabalho de Diplomação do Curso de Tecnologia em Informática da UTFPR Câmpus Cornélio Procópio foi considerado no desenvolvimento deste trabalho com objetivo de expandir o software. Esse software possui nove diferentes mini-jogos que “abordam meios de estimulação visual tais como, visão para detalhes em cores, visão de detalhes em imagens, percepção de contrastes, estímulos luminosos, interpretação de imagens e cenas, visualização de contornos e melhoria da memória visual.” (RODRIGUES, 2005). A nova versão do projeto foi dividida em três etapas: 1. Reorganização da estrutura do sistema; 2. Acompanhamento da evolução do usuário; 3. Implementação de novos mini-jogos. 2.1 Reorganização da estrutura do sistema A reorganização da estrutura do sistema foi feita com o objetivo de garantir a estabilidade do sistema. Muitos sistemas sofrem contínuas mudanças. Uma pequena mudança em uma parte do sistema pode durar mais do que se esperava ou até mudar o comportamento de outra parte. Para reduzir a frequência com que esses riscos ocorram, manter um código limpo e organizado é uma opção para o desenvolvedor (MARTIN, 2008). Com a reorganização do sistema, utilizando recursos do paradigma de orientação a objetos, novas funcionalidades foram adicionadas ao sistema sem afetar a rotina de um jogo, e a inclusão de novos mini-jogos foi feita de forma mais direta, sem ter que se preocupar como o sistema funciona como um todo, apenas sabendo o básico que uma classe deve implementar. Nesse módulo, parte do tempo foi dedicado a revisão de aspectos gerais do jogo, como 2.2 Acompanhamento da evolução do usuário 16 desempenho, que trata o tempo de carregamento e processamento da aplicação em memória, e documentação do código. 2.2 Acompanhamento da evolução do usuário Foi implementado um módulo para acompanhamento da evolução do usuário baseado em um histórico de dados de cada jogo que são coletados durante sua execução. Os dados são coletados de forma transparente ao usuário: a cada novo jogo que é praticado, informações sobre acertos, erros, pontuações e data são salvos automaticamente. Está presente neste módulo oito diferentes gráficos divididos em duas partes: estatísticas individuais e estatísticas coletivas. Em estatísticas individuais, são gerados gráficos relacionados apenas a um usuário. Um dos resultados indicados por esses gráficos é a possibilidade de acompanhar, indivualmente, qual o desempenho e evolução na aprendizagem de cada jogo. Em estatísticas coletivas, são gerados gráficos relacionados a todos os usuários. É possível notar, nesses gráficos, qual o comportamento coletivo diante a algumas variantes como: data jogada, tipo de jogo, pontuações obtidas e frequência de jogo. Para se fazer a coleta de dados de forma coletiva, foi necessário desenvolver um gerenciador de jogadores para que se possa diferenciar mais de um perfil de jogador. Tal diferença é feita através do nome do usuário. 2.3 Implementação de novos jogos A implementação de novos jogos ao pacote atual oferece mais alternativas de jogos. O foco está em deficientes com um nível de visão um pouco menor do que o requerido nos jogos encontrados no pacote atual. Esses novos jogos envolvem trabalhar: a área de reconhecimento de formas geométricas baseado em um nivel de detalhamento de uma imagem redimensionada; o nível de percepção de uma forma geométrica baseado em níveis de contraste entre o fundo e a imagem; o reconhecimento de sentido de movimento de um objeto baseado na velocidade em que o objeto se encontra. 17 3 Revisão Bibliográfica 3.1 Deficiência Visual A deficiência visual é caracterizada por uma alteração ou diminuição da eficiência visual. As causas mais comuns para que essa alteração ocorra incluem a forma inata na qual a pessoa já nasce com a deficiência, podendo até perder a visão totalmente com o tempo e de forma adquirida, quando a mesma ocorre por sofrer acidentes que comprometam a visão (BRAGA; SEI, 1997). A deficiência visual pode ser dividida em dois grupos: cegueira e visão subnormal. A pessoa considerada cega pode possuir apenas a percepção da luz ou não ter nenhuma visão. A maior parte do conhecimento adquirido por essas pessoas ocorre por meio de outros sentidos, sendo que os mais utilizados são o tato e a audição, que acontecem, por exemplo, através da grafia braille e leitores de telas. Por outro lado, uma pessoa com visão subnormal consegue utilizar a visão para o aprendizado de alguma atividade até o limite que apresenta seja atingido. A perda de visão possui alguns graus de acordo com a escala optométrica de Snellen, que mensura a acuidade visual para longe. Para obter a escala de Snellen é necessário fazer a relação entre a qualidade da visão subnormal a certa distância (em metros ou pés) comparado à qualidade da visão normal. De acordo com essa escala, o primeiro grau é considerado visão normal, os graus 1 e 2 são considerados visão subnormal, enquanto os demais graus são considerados como cegueira (OMS, 2003). A Tabela 3.1 exibe a classificação da perda de visão de acordo com dados retirados de uma pesquisa feita pela Organização Mundial de Saúde - OMS que apresenta o grau da perda de visão e a respectiva acuidade visual máxima para o grau. Existem várias soluções propostas para ajudar o cotidiano de um deficiente visual. Para a leitura, pode ser utilizando tanto o sistema de leitura através do tato, o Braille, ou através da audição, por meio de livros falados ou sintetizadores de voz. Na escrita, existem sistemas que escrevem em Braille e também impressoras Braille. Na locomoção, pessoas com cegueira podem usar bengalas ou cães-guia. Para algumas alterações visuais, como miopia, hipermetropia, astigmatismo, entre outras, 3.2 Trabalhos Relacionados 18 Tabela 3.1: Classificação da Perda de Visão Grau de Perda de Visão Acuidade Máxima (Snellen) 0 1,0 1 0,3 2 0,1 3 0,05 4 0,02 5 0 Fonte: adaptado de OMS. pode ser feito o uso de lentes (óculos ou lentes de contato) ou cirurgias oculares. 3.2 Trabalhos Relacionados Existe uma série de condições que podem limitar uma pessoa a utilizar um jogo eletrônico da forma para a qual ele foi projetado. Tratam-se das deficiências, que podem ser visuais, auditivas, motoras e relacionadas à cognição ou ao aprendizado (FAVA, 2010). Porém, de outro lado, existem várias formas de estimular a visão e vários projetos concluídos relacionados ao desenvolvimento de alguma deficiência humana ou diminuição da barreira de limites, utilizando a tecnologia como meio de interação com o usuário. A seguir são resumidamente descritos alguns deles. 3.2.1 EACH A Escola de Artes, Ciências e Humanidades (EACH) da Universidade de São Paulo (USP) realizou uma pesquisa para analisar o desempenho de pessoas com deficiência ao jogar jogos eletrônicos que exigem movimentação física do jogador. Um dos jogos utilizados na pesquisa foi o de boliche, para o console Nintendo Wii, que recebe as orientações do jogador a partir de movimentos com o controle e pressionando um botão ao mesmo tempo. Em um grupo de doze pessoas, sendo cinco crianças com paralisia cerebral e sete jovens com síndrome de Down, observou-se “que após 20 tentativas os deficientes se adaptam bem à tarefa, com bom desempenho nos escores do jogo virtual” (FERREIRA, 2011). 3.2.2 Só Soprando Só Soprando é um jogo cuja interação com usuário é feita apenas por meio de um microfone. Não há botões no jogo, portanto o uso de teclado e/ou mouse são desprezíveis, visto que 3.2 Trabalhos Relacionados 19 toda ação no jogo é feita apenas por um sopro. Esse jogo foi desenvolvido por um grupo composto de um designer, um programador e um artista gráfico. A ferramenta utilizada foi o Adobe Flash. O jogo possui um mecanismo bem simples: enquanto o jogador estiver assoprando o microfone, o balão irá subir, caso constrário, tende a descer. O objetivo é chegar até o final da fase sem que o balão encoste em algum obstáculo como montanhas, árvores, casas, aves e avião. “O jogo é um símbolo de luta contra o próprio homem. Acredita-se que ao impulsionar o balão com o sopro, como o vento, o usuário transporta suas limitações para o jogo, mostrando que está vivo e que é capaz de vencer frente às suas dificuldades” (FAVA, 2010). Figura 3.1: Detalhe do Jogo Só Soprando. Fonte: (FAVA, 2010) 3.2.3 LookTel Recognizer O LookTel Recognizer é um aplicativo que utiliza a câmera digital de um celular para reconhecer objetos reais e descrevê-los na tela ou pronunciá-los em forma de áudio. O programa possui uma biblioteca pré-definida de objetos reais e descrição, porém, é possível adicionar novas entradas pelo próprio usuário ou por alguma pessoa de preferência. Além disso, atualmente, está em desenvolvimento uma versão que reconhece vários textos, usado por exemplo, para ler jornais, revistas, livros. (LOOKTEL, 2009). LookTel é uma empresa americana que desenvolve aplicações que visam melhorar a qualidade de vida de cegos ou pesoas com visão subnormal. Atualmente, o foco está no desenvolvimento para smartphones. 3.2.4 DOSVOX DOSVOX é um sistema operacional desenvolvido especificamente para deficientes visuais, que utiliza a síntese de voz como principal meio de interação com o usuário. Nele vem in- 3.2 Trabalhos Relacionados 20 cluso: aplicativos de manipulação de textos, impressores e formatadores para braile, programas didáticos para auxílio a deficientes visuais, programas para acesso à internet (BORGES, 2002). 3.2.5 JogaVOX JogaVOX é uma ferramenta feita para professores poderem criar novos jogos para deficientes visuais com estrutura de vérices e caminhos a serem percorridos. Em cada vértice, o “usuário pode explorar seu conteúdo, obtendo informações, recolhendo ou deixando alguns objetos.” (CUNHA, 2007). Ela é estruturada permitindo que o professor desenvolva jogos em ambiente Windows e que sejam executáveis no DOSVOX. Um exemplo aplicado utilizando essa ferramenta foi desenvolvido pelo próprio autor do trabalho: o exemplo permite que o usuário viaje pelos Estados do Brasil adquirindo informações sobre os locais. 3.2.6 CityVOX CityVOX é um jogo didático para deficientes visuais que auxilia na aprendizagem de matemática geométrica. Sobre o mecanismo: na tela principal de jogo há um tabuleiro com várias casas para andar e o jogador precisa responder às perguntas para andar para a próxima casa. Caso acerte a pergunta, irá avançar uma ou mais casas, dependendo do grau de dificuldade da questão. Caso erre, irá voltar uma casa. O objetivo é prender um suposto bandido que aterroriza a cidade de CityVOX. Quando chegar ao final do tabuleiro receberá um som comemorativo, exibindo, também, um relatório de acertos e comentário dos erros em formato de texto (SILVA, 2009). 3.2.7 AudioGames AudioGames é um site que reune vários outros jogos acessíveis a não somente cegos, mas também para pessoas com deficiência motora. Nesse site, apenas jogos que utilizam o áudio como único meio de informação ao usuário são hospedados. Esses jogos não possuem interface gráfica altamente produzida como a maioria dos jogos atuais. No máximo, elas possuem, quando têm, uma simples tela que mostram apenas textos (AUDIOGAMES, 2009). 3.2.8 Smart Audio City Aplicativo desenvolvido para celulares que ajuda o usuário a se locomover dentro de cidades. Quando o deficiente visual aproximar-se de um local, ele poderá receber informações específicas do local por áudio. Essas informações são compartilhadas entre os usuários, possibilitando 3.3 Jogo Vídere 21 um crescimento contínuo de informações. Atualmente, há suporte apenas para celulares Windows Phone (SOARES, 2012). 3.2.9 Boxplot Uma forma eficiente de exibir cinco importantes dados de um conjunto de valores: maior valor, menor valor, mediana, quartil superior e quartil inferior. O maior e menor valor do conjunto ficam, respectivamente, no topo e na base da representação gráfica. Os valores do quartis superior e inferior, que separam o conjunto em um quarto de valores maiores e inferiores a eles, formam as bordas de uma caixa. A mediana, que é o valor do conjunto que separa o grupo em quantidades iguais de numeros menores e maiores a ele, é a linha que se encontra no meio da caixa. 3.3 Jogo Vídere O Vídere é um jogo que atua no estímulo à visão de crianças com visão subnormal entre quatro a oito anos de idade. Esse jogo é composto por nove diferentes mini-jogos que utilizam cores básicas, como azul, amarelo, verde, vermelho, branco e preto, para estimular, de forma interativa e atraente ao jogador sem sobrecarregar funções a um jogo, crianças que possuam alguma das seguintes patologias: albinismo, anirídia, atrofia óptica, catarata, coriorrentinite macular, glaucoma, retinopatia da prematuridade, retinose pigmentar e sublação do cristalino. A interação do usuário com o software é realizada basicamente pela entrada de cliques do mouse. Todo mini-jogo possui uma interface de usuário parecida. No canto superior direito há um texto que indica a quantidade de vidas que o jogador ainda possui. Quando essas vidas chegarem a zero, irá abrir um menu de fim de jogo mostrando a pontuação total. No canto superior esquerdo é mostrado a pontuação total atual. Toda jogada de acerto ou erro irá modificar essa pontuação, sendo que acertos incrementam positivamente e erros decrementam a pontuação. Na parte inferior estão localizados três botões: Ajuda, Tela Inicial e Sair. Ao clicar em Ajuda, uma nova janela será aberta explicando as instruções e regras do mini-jogo atual. Ao clicar em Tela Inicial, irá fechar o mini-jogo atual voltar ao menu inicial. Ao clicar em Sair, o processo do jogo será encerrado. A Figura 3.2 mostra um exemplo de interface do mini-jogo Matriz de Formas Geométricas. Todo mini-jogo possui uma certa quantidade de fases pré-definidas que será trocada quando o jogador concluir a fase atual. Quando a última fase for concluída um novo menu de parabenização será aberta, mostrando a pontuação atual e com três opções: Jogar Novamente, que reiniciará o mini-jogo atual com a pontuação zerada e a quantidade de vidas inicial; Tela Inicial, que irá fechar o mini-jogo atual voltar ao menu inicial e, Sair, que irá encerrar o processo 3.3 Jogo Vídere 22 Figura 3.2: Interface do mini-jogo Matriz de Formas Geométricas. do jogo. A figura 3.3 mostra a tela de parabenização que é mostrada ao concluir todas as fases de um mini-jogo. O trabalho Vídere foi publicado em dois principais eventos. Foi aceito no no Workshop de Jogos Digitais na Educação, evento integrante ao Simpósio Brasileiro de Informática na Educação - SBIE - do ano de 2005, que ocorreu no estado de Minas Gerais na cidade de Juiz de Fora. E foi selecionado a ser apesentado no 1o Seminário Nacional de Educação, Tecnologia e Profissionalização para Pessoas com Necessidades Educacionais Especiais, promovido pelo Ministério da Educação que ocorreu em Brasília. Foi desenvolvido utilizando o modelo de ciclo de vida Espiral adaptado para o desenvolvimento de jogos e dividido em quatro fases: Concepção do Jogo, Análise do Projeto, Desenvolvimento e Teste. O programa foi inteiramente escrito utilizando a linguagem de programação Java. 3.4 Tecnologias Utilizadas 23 Figura 3.3: Tela de Parabenização ao concluir todas as fases. 3.4 3.4.1 Tecnologias Utilizadas API Esse trabalho foi desenvolvido utilizando a linguagem de programação Java. Java é uma linguagem de programação orientada a objetos que é mantida pela Oracle, possuindo sintaxe semelhante a C++. Uma das grandes vantagens em se usar Java é pelo fato de não precisar recompilar o código para que seja executado em outra plataforma que possua a Java Virtual Machine (JVM) instalada. Possui vários recursos compilados e prontos a serem usados pelo programador, porém, muitas veses, ainda será necessário a importação de outros recursos adicionais, conhecidos também como Application Programming Interface (APIs) para agilizar o processo de desenvolvimento de um software (DEITEL, 2010) . APIs utilizadas nesse trabalho: 3.4.1.1 JSE Java Standard Edition é a API de desenvolvimento, distribuída pela Oracle gratuitamente, para criar e executar aplicações Java. Nela está incluso: a JVM, para que se possa ler e exe- 3.4 Tecnologias Utilizadas 24 cutar bytecodes, que são códigos de máquina não-legíveis a humanos; compilador, para gerar o bytecodes recebendo como entrada o código da linguagem java; e ferramentas utilitárias para agilizar o desenvolvimento e ganhar em performance tanto em aplicações desktop quanto em aplicações servidoras (ORACLE, 2012). 3.4.1.2 JFreeChart JFreeChart é uma biblioteca open source escrita em Java que facilita o desenvolvedor a montar e exibir gráficos durante a execução de um aplicativo. Foi fundada em fevereiro do ano de 2000, por David Gilbert, e é mantida pela empresa Object Refinery Limited que vende documentação e guias para programação sobre o JFreeChart. Atualmente, David Gilbert ainda é o gerenciador do projeto, com vários outros contribuidores da comunidade de desenvolvedores. Essa API possui diversas variações de formação de gráficos, dentre elas, as usadas nesse trabalho: gráficos de retas, gráficos de barras, gráfico de pontos, gráficos de Boxplot (VIKLUND, 2012). Não é necessário conhecimento aprofundado em matemática estatística para utilizar a API, pois a montagem dos gráficos é baseado apenas na passagem de parâmetros essenciais à construção de um gráfico. Por exemplo, para montar um gráfico de retas é necessário, basicamente, o valor de um ponto X no eixo das abcissas e seu respectivo valor no eixo das ordenadas. O desenho formado entre a ligação dos pontos das coordenadas e a escala do gráfico são tarefas delegadas ao JFreeChart. 3.4.2 Software Dentro do escopo de desenvolvimento do projeto, foi necessário a utilização de alguns programas indispensáveis e outros que aumentam a produtividade no desenvolvimento geral do projeto. 3.4.2.1 Sistema Operacional Linux O Linux é sistema operacional livre e de código aberto. Possui recursos úteis tanto para usuários leigos quanto para usuários avançados. Dentre as diversas distribuições, foi utilizada o Ubuntu versão 10.10. Alguns dos motivos para a escolha foi a familiaridade pessoal do uso do sistema operacional, pela rapidez na execução de processos e por fornecer utilidades do kernel Linux, como o Terminal, que agilizou algumas das tarefas desse trabalho. 3.4 Tecnologias Utilizadas 3.4.2.2 25 Netbeans Ambiente de desenvolvimento livre e de código aberto, para ajudar a escrever códigos em Java, oferecendo: compilação de códigos em Java, suporte a plugins, edição inteligente de código. Esse software foi escolhido pela familiaridade adquirida antes do início do projeto, em atividades acadêmicas. 3.4.2.3 Tortoise Subversion Sistema de controle de versão de arquivos. Apesar de atualmente ter suporte apenas ao sistema operacional Windows, é possível utilizá-lo, como cliente, pelo Netbeans que possui suporte para operações básicas como update e commit. O servidor foi providenciado pelo serviço do GoogleCode, disponível no endereço: http://code.google.com/p/viderejogos/. 3.4.2.4 Kile Editor e compilador de textos em latex. Utilizado comumente na criação de artigos, monografias, entre outros. Apesar de ser trabalhoso em aprender a utilizá-lo, a grande vantagem está na facilidade de organização de documentos textuais extensos sem se preocupar com a formatação do documento final. 3.4.2.5 Astah UML e Argo UML Editores de diagramas da Unified Modeling Language, com interface gráfica simples. Facilita a organização geral de componentes do sistema. Possuem suporte a importação de código fonte para gerar relação entre classes. Apesar de serem dois softwares com funcionalidades concorrentes, o primeiro foi o mais utilizado, sendo que o segundo foi utilizado apenas para agilizar o processo de modelagem de diagrama de classes simples. 26 4 Modelo Espiral Este Trabalho de Diplomação foi desenvolvido realizando as seguintes atividades: 1. Estudo das tecnologias usadas no projeto; 2. Desenvolvimento de novos módulos; 3. Redação do Trabalho de Diplomação. 4.1 Estudo das tecnologias usadas no projeto Essa atividade foi realizada durante grande parte do Trabalho de Diplomação, em paralelo com a atividade de desenvolvimento. A aquisição de conhecimento sobre assuntos relacionados ao entendimento do projeto desenvolvido e também à implementação dos novos módulos foram realizadas nessa atividade. O aplicativo da ex-aluna foi desenvolvido utilizando a linguagem de programação orientada a objetos Java e compilado no ambiente de desenvolvimento Netbeans. Para alcançar os objetivos do projeto (citados na seção 2), foi necessário a aquisição do código fonte, produzido pela ex-aluna, que foi providenciado por Fabrício Lopes. Em seguida o código foi estudado a fim de entender as relações entre as classes e objetos para que fosse possível a remodelação do sistema sem haver modificações no fluxo atual do jogo e sem alterar a saída de dados nas interfaces gráficas. Os princípios de orientação a objetos SOLID introduzidos por Robert Martin foram as referências para a remodelação do sistema. Os cinco princípios, sendo eles: Single Responsability, Open/Closed, Liskov substitution, Interface segregation e Dependency inversion, visam uma melhor organização e maior limpeza de código, tornado-o fácil de ser entendido e ser mantido não apenas pelo autor, mas também por outros colaboradores (MARTIN, 2008). Com isso, o módulo de acompanhamento da evolução do usuário foi introduzido no sistema e implementado para cada mini-jogo. Esse módulo serve para que o aluno e o professor possam ter estatísticas de resultados baseado em dados coletados durante cada mini-jogo, sendo eles: 4.2 Desenvolvimento de novos módulos 27 identificador do mini-jogo, pontuação de acertos, pontuação de erros, data jogada e estado final do mini-jogo. Os dados são gravados no computador local e é possível criar mais de um perfil de usuário, usando como atributo diferencial o nome do aluno. A exibição das estatísticas é realizado através de gráficos que são gerados e exibidos pelo próprio aplicativo. 4.2 Desenvolvimento de novos módulos O desenvolvimento dos novos módulos foi realizado baseando-se no modelo de processo de ciclo de vida espiral. A escolha do modelo espiral se deu principalmente por ser um modelo que, atualmente, é o mais utilizado para o desenvolvimento de jogos, pois cada iteração é considerada como uma melhoria do jogo como um todo ou parcialmente. Diferente de outros sistemas, um jogo precisa ser, além de funcional e de fácil usagem para o usuário, atrativo sem que haja um sinal de frustação por parte do jogador. Por isso, quanto mais iterações forem realizadas, acredita-se que a qualidade do produto irá aumentar gradativamente (SCHELL, 2008) . As fases seguidas no modelo foram: Concepção do Jogo, Análise de Projeto, Desenvolvimento e Testes. 4.2.1 Concepção do Jogo A fase de concepção do jogo é o ponto inicial da criação de um jogo. É feito um brainstorm (chuva de ideias) para decidir como será o jogo, incluindo planejamento de regras de jogo, de jogabilidade e de abstração interfaces gráficas. 4.2.2 Análise de Projeto Nessa fase, a ideia abstrata da fase anterior é mais concretizada, gerando documentos para descrever o problema e como este será resolvido. A pesquisa por jogos que se assemelhem à ideia também pode ser feita, a fim de encontrar melhores soluções para o jogo. 4.2.3 Desenvolvimento Com o documento gerado na fase anterior, é dado início ao desenvolvimento do jogo. O principal foco nessa fase é a produção do jogo, incluindo a programação das interfaces e regras. O código produzido nessa fase não deve ser final, deve ser feito pensando que haverá possíveis reajustes na fase seguinte. 4.3 Redação do Trabalho de Diplomação 4.2.4 28 Testes O módulo gerado na fase anterior é revisado para verificar se os principais pontos do documento gerado na análise foram cumpridos. Não se limitando apenas à revisão, é realizado um teste a fim de encontrar possíveis defeitos nas rotinas do jogo para corrigi-los para a versão final; avaliar a qualidade, no que se refere à atmosfera do jogo (sensação de estar jogando e identificar-se no ambiente), feedbacks (exercer uma ação e receber um sinal que identifique que a ação realmente foi executada) e jogabilidade (usuário exercer uma ação sem ser atrapalhado pelo próprio jogo). Quando detectada uma nova ideia que possa melhorar o jogo ela é avaliada e um novo ciclo é iniciado, começando da Concepção. 4.3 Redação do Trabalho de Diplomação A redação do Trabalho de Diplomação foi realizada com maior ênfase no final do cronograma planejado, estendendo-se até a um mês após a apresentação do trabalho. Foi considerado na escrita da redação as bibliografias estudadas durante o desenvolvimento do projeto e conversas com o orientador. 29 5 Desenvolvimento 5.1 Reestruturação do Código A reestruturação do código foi realizado na primeira iteração do projeto. A seguir, na seção 5.1.1 é explicado como foi feito a divisão das classes; na seção 5.1.2 é mostrada o diagrama de classes da nova organização geral das classes relacionadas aos mini-jogos e da mesma organização mais detalhada, dividida em três imagens; e nas próximas seções será descrito as mudanças específicas realizadas em cada mini-jogo. 5.1.1 Fragmentação de Classes Todos os nove mini-jogos necessitaram serem reestruturados para que a implementação dos próximos módulos fosse feita de forma transparente e direta. A reestruturação do código foi realizada tendo em mente a melhor maneira de escrever um código simples e dividido em vários pequenos módulos que são responsáveis por uma função bastante específica no jogo. As partes do código que definem a lógica de um mini-jogo, recursos a serem carregados, dados de interface de usuário, e configuração de fases foram separadas, dando origem à novas classes que realizam os papéis citados. 5.1.1.1 Lógica de Jogo A lógica de jogo básica foi transferida para a classe abstrata FaseControladorBase. Todos os mini-jogos atuais extendem essa nova classe que é responsável por controlar: inicialização do mini-jogo; eventos de acerto ou erro do jogador; carregar dados de pontuação, vida, e fase atual; controlar dados de jogadas realizadas pelo jogador; e finalização do mini-jogo. 5.1.1.2 Recursos Os recursos a serem carregados durante os mini-jogos foi delegado à classe Recursos que é um Singleton, ou seja, existe apenas uma única instância no programa todo. Os recursos de 5.1 Reestruturação do Código 30 multimídia, como imagens e sons, podem ser obtidos a partir dessa classe. 5.1.1.3 Interface Os dados de interface de usuário permaneceu na mesma classe que representava um minijogo como um todo, removendo-se os códigos de lógica de jogo, recursos e configuração de fases. 5.1.1.4 Fases A configuração de fases foi transferida para a classe abstrata Fase. Ela apenas guarda informações variáveis de uma fase de um mini-jogo, bem como um identificador único, que é o nome. Apesar de não estar sempre ativa, é útil para separar as váriáveis de configurações de cada fase. Uma mesma classe de configuração de fases pôde ser usada em mais de um tipo diferente de mini-jogo, como acontece no caso dos mini-jogos Esconder Letras e Esconder Números, que utilizam a classe FaseEsconder para criar as fases (Figura 5.2), já que possuem a mesma estrutura de configuração de fases. O mesmo acontece nos mini-jogos Matriz de Figuras e Matriz de Geométrica, que reutilizam a classe FaseMatriz (Figura 5.4). 5.1.2 Diagrama de Classes Na Figura 5.1 é apresentada a relação geral das classes de mini-jogo. Na Figura 5.2 é apresentada, com detalhes, a relação de classes para os mini-jogos: Cores, Esconder Letras e Esconder Números. Em seguida, na Figura 5.3, os mini-jogos: Esconder Figuras e Luzes. Em seguida, na Figura 5.4, os mini-jogos: Números, Matriz de Figuras e Matriz de Geométrica. Em fim, na Figura 5.5, o mini-jogo Sombras. 5.1 Reestruturação do Código Figura 5.1: Diagrama de Classes - Jogos Geral . 31 5.1 Reestruturação do Código Figura 5.2: Diagrama de Classes - Jogos 1 32 5.1 Reestruturação do Código Figura 5.3: Diagrama de Classes - Jogos 2 33 5.1 Reestruturação do Código Figura 5.4: Diagrama de Classes - Jogos 3 34 5.1 Reestruturação do Código Figura 5.5: Diagrama de Classes - Jogos 4 35 5.1 Reestruturação do Código 5.1.3 Mudanças Gerais 5.1.3.1 Fluxo 36 O fluxo de jogo foi modificado levemente. Nessa nova versão, ao entrar na tela de ajuda e voltar ao mini-jogo, os dados não serão reiniciados. Isso foi modificado para melhorar a experiência de usuário, pois dessa forma o jogador poderá ler a ajuda de um mini-jogo e continuar de onde tinha parado, sem perder dados de jogadas. 5.1.3.2 Fases As fases não possuem um grau de dificuldade notável, pois são apenas variações de objetivos. Por isso, todas as fases são carregadas de forma aleatória não-repetida. Sempre que se iniciar um jogo, as fases estarão embaralhadas. Dessa forma o usuário não ficará preso apenas a uma sequência pré-definida de fases, o que poderia tornar cansativo caso jogue o mesmo mini-jogo várias vezes. 5.1.4 Mudanças Específicas Serão descritas, nas seguintes subseções, as mudanças realizadas específicamente em um determinado mini-jogo. 5.1.4.1 Sombras Foi realizado uma padronização no formato das imagens utilizadas no jogo, de forma com que todas imagens relacionadas à sombras mantivessem o formato .gif e os desenhos a se procurar mantivessem o formato .jpg. Tal padronização foi feita para facilitar o acesso aos recursos de imagens sem que haja repetição excessiva de parâmetros para localizar uma imagem. Por exemplo, na fase com identificador “macaco”, a figura central da tela será carregada pelo arquivo “macaco.jpg”, e a opção correta será “macaco.gif”. No código a seguir (Figura 5.6) é mostrado como foi reescrito a nova forma de acesso às imagens, destacanto-se as linhas referentes a esse acesso. 5.1 Reestruturação do Código 37 Figura 5.6: A Classe FaseSombra 5.1.4.2 Números Foi realizada a renomeação geral de imagens relacionadas ao mini-jogo. O principal motivo foi para facilitar a identificação das imagens e também para acesso mais fácil via programação. Os arquivos foram renomeados utilizando comandos específicos providenciados pelo próprio sistema operacional Linux, sendo ele o comando rename que fornece uma maneira fácil de renomear arquivos em conjunto, utilizando expressão regular. A Tabela 5.1 mostra o novo formato do nome das imagens, baseando-se como exemplo todas as figuras relacionadas à imagem de identificador 1. Tabela 5.1: Alteração dos nomes de imagens no mini-jogo Números Nome Original 1gd.jpg 1gf.jpg 1d.jpg 1f.jpg 1g.jpg Nome Modificado 1_desenho_grande.jpg 1_figura_grande.jpg 1_desenho.jpg 1_figura.jpg 1_numero.jpg 5.1 Reestruturação do Código 5.1.4.3 38 Matriz de Formas Geométricas Foi implementado uma nova funcionalidade que permite ao jogador refazer as jogadas, assim será possível corrigir uma opção caso estivesse errada. Para isso, basta clicar em alguma das imagens já selecionadas e, então, a última jogada realizada será desfeita. Não há limites para refazer uma ação e também não há penalidades. Só é possível refazer a ação caso esteja na primeira ou na segunda ou na terceira peça escolhida. A nomenclatura das imagens estava despadronizadas dificultando o acesso direto via programação, portanto houve a necessidade de renomeá-las para que imagens com nomes do tipo “estrela vermelha” coincidissem o tipo de cor vermelho com outras imagens to tipo “hexágono vermelho”. Para tal finalidade, foi feito uma simples tradução para o inglês, visto que não possui diferenciação de cores pelo gênero de um substantivo. A Tabela 5.2 lista os novos sufixos e prefixos das imagens. Tabela 5.2: Alteração dos nomes de imagens no mini-jogo Matriz de Formas Geométricas Nome Original amarelo, amarela azul verde vermelho, vermelha elipse triângulo quadrado estrela hexágono 5.1.4.4 Nome Modificado yellow blue green red ellipse triangle square star hexagon Matriz de Figuras Assim como no mini-jogo anterior, Matriz de Formas Geométricas, a funcionalidade de refazer uma ação foi implementada nesse mini-jogo também. As condições para refazer a ação são as mesmas, ou seja, só é possível refazer caso tenha pelo menos uma imagem escolhida. Penalidades e limites de execução também não foram consideradas. A nomenclatura das imagens estava com um identificador fora de ordem. Isso dificultaria o acesso direto e transparente via programção. Além disso, a formatação das imagens estavam distribuídas entre .gif e .jpg. Dentre os arquivos de imagens renomeados, pode-se citar um exemplo: imagens do grupo “sapo”. A Tabela 5.3 lista como eram os nomes e como foram renomeados. 5.1 Reestruturação do Código 39 Tabela 5.3: Alteração dos nomes de imagens no mini-jogo Matriz de Figuras Nome Original sapo.gif sapo.jpg sapo1 sapo3 5.1.4.5 Nome Modificado sapo1.jpg sapo2.jpg sapo3.jpg sapo4.jpg Ache as Figuras! Devido à área de clique de cada uma das imagens serem relativamente pequenas comparadas à imagem que aparece na tela, as chances de realizar um clique errado eram altas. Por esse motivo, foi aumentado a área de clique de todas as imagens em uma escala que pode-se considerar mais que o dobro da antiga área (Figura 5.7). A aresta da novo quadrado que representa a área de clique foi aumentado de 50 pixels para 80 pixels. Figura 5.7: Área de clique das imagens, antes e atual Foi realizado, também, uma renomeação dos nomes para ficar de mais fácil leitura, separando objetos de fundos. Além disso, foi padronizado a formatação de imagens, sendo: gif para objetos e jpg para fundos. Na Tabela 5.4 é listado o nome antigo e o novo nome do “fundo boneca” e do “objeto boneca”, que são apenas um exemplo de vários que foram modificados. Tabela 5.4: Alteração dos nomes de imagens no mini-jogo Ache as Figuras Nome Original fboneca.gif boneca.gif Nome Modificado background_boneca.jpg object_boneca.gif 5.2 Módulo Estatístico 5.2 40 Módulo Estatístico O módulo estatístico foi realizado na segunda iteração do projeto, conforme citado nos objetivos (Seção 2). Esse módulo foi responsável por incluir, no projeto atual, um sistema de gerenciamento de usuários e exibição de gráficos estatísticos que foram elaborados para usuários adultos que possuam uma visão normal. Com esse novo sistema, houve a necessidade de uma alteração no layout no menu inicial, bem como a adição de novas interfaces gráficas. A Figura 5.8 mostra o novo layout do menu inicial, destacando-se as mudanças: novo botão “trocar” para trocar o usuário atual e; novo botão “Sistema” que abre a tela contendo, além de gerenciamento de usuários, opções para exibir gráficos. Figura 5.8: Menu Inicial 5.2 Módulo Estatístico 41 5.2.1 Definição de Requisitos 5.2.1.1 Requisitos Funcionais Tabela 5.5: Requisitos Funcionais ID RF1 RF2 RF3 RF4 5.2.1.2 Requisito Funcional Gerenciar jogadores Gravar dados de jogadas Gerar gráficos estatísticos Suporte a filtros estatísticos Ator Jogador Módulo Estatístico Módulo Estatístico Módulo Estatístico Requisitos Não-Funcionais Tabela 5.6: Requisitos Não-Funcionais ID Requisito Não Funcional RNF1 O sistema deverá funcionar em multiplataforma. RNF2 Serializar dados na máquina local, sem a necessidade de camadas cliente-servidor. RNF3 O aplicativo deve ser acessível a usuários meigos. RNF4 O módulo estatístico deve se adaptar ao jogador atual. 5.2.2 Categoria Portabilidade Usabilidade Usabilidade Usabilidade Casos de Uso Os casos de uso mostram como o sistema funciona, identificando atores e ações, com um alto nível de abstração. Foi identificado dois atores nesse módulo: Jogador (ou Usuário) e Módulo Estatístico. 5.2 Módulo Estatístico Figura 5.9: Diagrama de Casos de Uso - Gerenciar Usuário 42 5.2 Módulo Estatístico 43 Tabela 5.7: Caso de Uso Criar Usuário Caso de Uso Criar Usuário Finalidade Adicionar um novo usuário jogador ao sistema Atores Jogador Pré-Condição Pós-Condição Sequência de Execução 1. O jogador entra no menu para a criação de um usuário. 2. O jogador informa o nome. 3. Caso o nome for válido, o novo usuário será adicionado. 4. Caso contrário, será solicitado um outro nome. Tabela 5.8: Caso de Uso Alterar Usuário Caso de Uso Finalidade Atores Pré-Condição Pós-Condição Sequência de Execução Alterar Usuário Trocar de perfil de usuário Jogador Existir pelo menos um jogador cadastrado Atualizar lista de usuários 1. O jogador entra no menu para a alterar um usuário. 2. O jogador seleciona um dos usuários listados. 3. O jogador confirma a seleção. 5.2 Módulo Estatístico 44 Tabela 5.9: Caso de Uso Listar Usuário Caso de Uso Listar Usuário Finalidade Exibir todos os usuários existentes na máquina local Atores Módulo Estatístico Pré-Condição Pós-Condição Sequência de Execução 1. O sistema irá ler um arquivo contendo o nome de todos os jogadores. 2. O sistema verifica qual desses jogadores são válidos. 3. O sistema exibe a lista de usuários final. Tabela 5.10: Caso de Uso Escolher Usuário Caso de Uso Finalidade Atores Pré-Condição Pós-Condição Sequência de Execução Escolher Usuário Exibir todos os usuários existentes na máquina local Jogador, Módulo Estatístico Existir pelo menos um jogador cadastrado Confirmar a alteração de um usuário 1. O jogador escolhe um outro jogador dentro de uma lista. 2. O sistema irá buscar o usuário solicitado. 3. Caso encontre o usuário, esse usuário será o atual. 4. Caso contrário, será solicitado ao jogador uma nova escolha. 5.2 Módulo Estatístico Figura 5.10: Diagrama de Casos de Uso - Gerar Gráficos 45 5.2 Módulo Estatístico 46 Tabela 5.11: Caso de Uso Buscar Usuários Caso de Uso Finalidade Atores Pré-Condição Pós-Condição Sequência de Execução Buscar Usuários Buscar dados de um ou mais jogadores na máquina local Módulo Estatístico Existir pelo menos um jogador cadastrado 1. O sistema solicita o caminho dos arquivos a serem lidos no sistema de arquivos. 2. O sistema armazena esses dados de jogadores. 3. O sistema verifica quais desses jogadores são válidos. 4. Caso exista algum jogador inválido, o mesmo será removido. Tabela 5.12: Caso de Uso Buscar Jogadas Caso de Uso Finalidade Atores Pré-Condição Pós-Condição Sequência de Execução Buscar Jogadas Filtrar dados a serem utilizados antes de gerar um gráfico Módulo Estatístico Existir pelo menos um jogador cadastrado; Buscar dados de Usuários; Especificar filtros Gerar um gráfico 1. O sistema busca todos os usuários. 2. O sistema filtra os dados de todas as jogadas de todos os usuários. 3. Repassa os dados ao gerador de gráficos. 5.2 Módulo Estatístico 47 Tabela 5.13: Caso de Uso Gerar Gráfico Caso de Uso Finalidade Atores Pré-Condição Pós-Condição Sequência de Execução Gerar Gráfico Preparar dados gerados para a exibição Módulo Estatístico Selecionar um tipo de gráfico a ser gerado Exibir um gráfico gerado 1. O sistema coleta todas as jogadas relativas ao tipo de gráfico. 2. O sistema gera e exibe o gráfico. Tabela 5.14: Caso de Uso Exibir Gráfico Caso de Uso Finalidade Atores Pré-Condição Pós-Condição Sequência de Execução Exibir Gráfico Exibir na tela do usuário um gráfico estatístico Jogador, Módulo Estatístico Selecionar um tipo de gráfico a ser gerado 1. O Jogador seleciona qual tipo de gráfico quer gerar. 2. Caso o gráfico selecionado necessite de filtros adicionais, o Jogador deverá selecionar esses filtros. 3. O Sistema valida os parâmetros passados pelo Jogador. 4. Caso os parâmetros estejam corretos, o gráfico é gerado e, em seguida, exibido. 5. Caso contrário, não irá gerar gráfico. 5.2.3 Diagrama de Atividades Os diagramas de atividades mostram como é o fluxo das atividades realizadas em alguns casos de uso com um nível de abstração menor, descrevendo as etapas com mais detalhes. 5.2 Módulo Estatístico Figura 5.11: Diagrama de Atividades - Criar Usuário . 48 5.2 Módulo Estatístico Figura 5.12: Diagrama de Atividades - Exibir Gráficos 49 5.2 Módulo Estatístico Figura 5.13: Diagrama de Atividades - Gerenciamento de Jogadas 50 5.2 Módulo Estatístico 5.2.4 51 Diagrama de Sequência Os diagramas de sequências mostram as mensagens trocadas entre objetos do sistema, dando prioridade na ordem temporal em que as mensagens são realizadas. O nível de abstração nesses diagramas é inferior ao de Casos de Uso. Figura 5.14: Diagrama de Sequência - Gerar Gráficos sem filtros adicionais Figura 5.15: Diagrama de Sequência - Gerar Gráficos com filtros adicionais 5.2 Módulo Estatístico 5.2.5 52 Diagrama de Classes O gerenciamento de usuários é realizado pela classe PlayerManager que implementa o padrão de Singleton. Sempre que for necessário carregar ou salvar dados de um jogador essas ações devem ser delegadas à classe anterior. Os jogadores são representados pela classe PlayerData, que possui vários dados de jogadas realizadas, que são as instâncias da classe GameData. A classe GameData é responsável por armazenar dados de todas as jogadas de um jogador. A Tabela 5.15 explica com detalhes qual o tipo de cada atributo e a função do atributo. Tabela 5.15: Atributos da Classe GameData Nome Tipo Tipo Class<?> Descrição Identificador de mini-jogo. Esse valor é populado pelo método getClass() de um FaseControladorBase. Score Inteiro Pontuação final atingida pelo jogador. Acertos Inteiro Quantidade de acertos conquistados pelo jogador. Começa em zero e aumenta em um a cada vez que passar de fase. Erros Inteiro Quantidade de erros do jogador. Começa em zero e incrementa em um caso erre em uma fase. Estado Enumerador Estado final do jogo, podendo ser: Não Terminado, Completado (passou todas as fases) ou Fim de Jogo (perdeu todas as vidas). Data java.util.Date Data em que a instância foi criada. Todos os dados serialializados estarão localizados em uma pasta chamada “videre_dados” que será criada no mesmo local em que for executado o programa. Por exemplo, caso o executável do Vídere esteja em “/home/Videre.jar” a pasta será criada em “/home/videre_dados”. Dentro dessa pasta, será criado dois arquivos de textos sendo eles: “latest.txt” que guarda o nome do último jogador, esse jogador será carregado automaticamente quando abrir o jogo, e; “players.txt” que guarda apenas os nomes de todos de jogadores, em cada linha do arquivo estará escrito o nome de um jogador. Além dos arquivos em texto, os dados reais dos jogadores estarão em uma subpasta chamada “players” onde estará todos arquivos binários contendo os dados de todas as jogadas de um jogador. Cada jogador terá apenas um arquivo binário com nome coincidente ao próprio nome do jogador. Esses arquivos, por usa vez, não podem ser modificados fora do jogo. A classe abstrata PlayerStatisticsBase implementa o básico necessário para gerar dados de gráficos, ação que é delegada às demais classes filhas apresentadas no diagrama de classes (Figuras 5.16 e 5.17) 5.2 Módulo Estatístico Figura 5.16: Diagrama de Classes - Módulo Estatístico (simples) Figura 5.17: Diagrama de Classes - Módulo Estatístico (detalhado) 53 5.2 Módulo Estatístico 5.2.6 54 Inclusão do JFreeChart A API JFreeChart utilizada está em formato .jar, que funciona como uma biblioteca précompilada dentro do escopo do trabalho. Por padrão, o compilador do Netbeans não inclui as bibliotecas adicionais na versão final, que é o executável em formato .jar. Para incluí-las, foi necessário adicionar um trecho de código no arquivo “build-impl.xml” que é um arquivo de configuração de builds (gerar versão executável). No código da Figura 5.18, basicamente está escrito que após o build normal (sem bibliotecas inclusas) seja gerado um outro executável de nome “Videre2.jar” incluindo as bibliotecas “jcommon-1.0.12.jar” e “jfreechart-1.0.9.jar”. Figura 5.18: Arquivo de Configuração de Builds do Projeto 5.2.7 Gráficos Desenvolvidos Os gráficos foram desenvolvidos com a ajuda da API JFreeChart que facilita na criação e exibição de gráficos. Para gerar um dos gráficos das subsessões a seguir, o usuário deverá clicar no menu “Sistema” e em seguida clicar em “Estatísticas” no novo menu. Em seguida, um novo menu irá aparecer, mostrando as opções correspondentes aos tipos de gráficos possíveis. 5.2.7.1 Linha de Aprendizado A seguir, a Tabela 5.16 descreve o principal objetivo do gráfico de Linha de Aprendizado e o funcionamento do mesmo. A Figura 5.20 ilustra um exemplo de um gráfico gerado. A Figura 5.21 ilustra a tela de seleção de filtro que é solicitado antes de gerar o gráfico. 5.2 Módulo Estatístico 55 Figura 5.19: Menu de Seleção de Gráficos a Gerar Tabela 5.16: Gráfico de Linha de Aprendizado Gráfico Objetivo Linha de Aprendizado Identificar como é a curva de aprendizagem em um determinado jogo. O resultado esperado é que a pontuação tenda a aumentar quanto mais vezes um determinado mini-jogo for jogado. Tipo de gráfico Gráfico de Retas Valores do eixo das Número de vezes jogado abcissas (X) Valores do eixo das Pontuação ordenadas (Y) Filtros adicionais Selecionar quais mini-jogos mostrar. Apenas os mini-jogos praticados serão mostrados na lista de opções. 5.2 Módulo Estatístico Figura 5.20: Exemplo de Gráfico Gerado - Linha de Aprendizado Figura 5.21: Tela de Seleção de Filtros Adicionais para Linha de Aprendizado 56 5.2 Módulo Estatístico 5.2.7.2 57 Desempenho em Jogos A seguir, a Tabela 5.17 descreve o principal objetivo do gráfico de Desempenho em Jogos e o funcionamento do mesmo. A Figura 5.22 ilustra a tela de seleção de filtro que é solicitado antes de gerar o gráfico. A Figura 5.23 ilustra um exemplo de um gráfico gerado. Tabela 5.17: Gráfico de Desempenho em Jogos Gráfico Objetivo Desempenho em Jogos Identificar qual é o desempenho médio do jogador em um determinado jogo, baseando-se nas pontuações obtidas pelo mesmo jogador e divindo-as em cinco intervalos. Tipo de gráfico Gráfico de Barras Valores do eixo das Intervalos de Pontuação abcissas (X) Valores do eixo das Frequência de Pontuação ordenadas (Y) Filtros adicionais Selecionar quais mini-jogos mostrar. Apenas os mini-jogos praticados serão mostrados na lista de opções. Figura 5.22: Tela de Seleção de Filtros Adicionais para Desempenho em Jogos 5.2 Módulo Estatístico 58 Figura 5.23: Exemplo de Gráfico Gerado - Desempenho em Jogos 5.2.7.3 Uso de Jogo A seguir, a Tabela 5.18 descreve o principal objetivo do gráfico de Uso de Jogo e o funcionamento do mesmo. A Figura 5.24 ilustra a tela de seleção de filtro que é solicitado antes de gerar o gráfico. A Figura 5.25 ilustra um exemplo de um gráfico gerado. Tabela 5.18: Gráfico de Uso de Jogo Gráfico Objetivo Tipo de gráfico Valores do eixo das abcissas (X) Valores do eixo das ordenadas (Y) Filtros adicionais Uso de Jogo Identificar qual é jogo mais jogado pelo jogador atual. Gráfico de Barras Nome dos Jogos Frequência de Uso Selecionar intervalo de data em dias. Por exemplo: exibir apenas os jogos mais jogados nos últimos 14 dias. 5.2 Módulo Estatístico Figura 5.24: Tela de Seleção de Filtros Adicionais para Uso de Jogo Figura 5.25: Exemplo de Gráfico Gerado - Uso de Jogo 59 5.2 Módulo Estatístico 5.2.7.4 60 Desempenhos Foi desenvolvido dois tipos de gráficos: desempenho individual e desempenho coletivo. No individual, a pontuação registrada no eixo Y do gráfico é dado apenas pelo valor obtido pelo jogador em uma jogada. Já no coletivo, é feito a média da pontuação de todos os jogadores em um jogo e em certa quantidade de jogadas. A seguir, a Tabela 5.19 descreve os detalhes dos gráficos de desempenho. Em seguida um exemplo de gráfico gerado é ilustrado na Figura 5.26. Tabela 5.19: Gráfico de Desempenhos Gráfico Objetivo Tipo de gráfico Valores do eixo das abcissas (X) Valores do eixo das ordenadas (Y) Filtros adicionais Desempenhos Identificar qual é a tendência de aprendizagem nos jogos. Gráfico de Pontos Pontuação Quantidade de jogadas por tipo de jogo Nenhum. Figura 5.26: Exemplo de Gráfico Gerado - Desempenho Coletivo 5.2 Módulo Estatístico 5.2.7.5 61 Boxplots A seguir, é apresentado uma tabela e uma figura para cada tipo de boxplot, sendo Tabela 5.20 e Figura 5.27 referentes ao tipo de jogos, Tabela 5.21 e Figura 5.28 referentes ao tipo de data, e Tabela 5.22 e Figura 5.29 referentes ao tipo de jogadores, Tabela 5.20: Gráfico de Boxplot de Jogos Gráfico Objetivo Boxplot de Jogos Identificar qual jogo está com um grau de dificuldade maior, baseando-se na observação da pontuação de cada jogador Tipo de gráfico Gráfico de Boxplot Valores do eixo das Jogadores por Mini-Jogo abcissas (X) Valores do eixo das Pontuação ordenadas (Y) Filtros adicionais Nenhum. Figura 5.27: Exemplo de Gráfico Gerado - Boxplot de Jogos 5.2 Módulo Estatístico 62 Tabela 5.21: Gráfico de Boxplot de Datas Gráfico Objetivo Boxplot de Datas Identificar se, dependendo do dia, a pontuação dos jogadores podem sofrer uma significante alteração. Tipo de gráfico Gráfico de Boxplot Valores do eixo das Mini-Jogo por Data abcissas (X) Valores do eixo das Pontuação ordenadas (Y) Filtros adicionais Nenhum. Figura 5.28: Exemplo de Gráfico Gerado - Boxplot de Datas 5.2 Módulo Estatístico 63 Tabela 5.22: Gráfico de Boxplot de Jogadores Gráfico Objetivo Boxplot de Jogadores Identificar em quais jogos um jogador consegue atingir mais pontos, verificando se o tipo de jogo afeta o desempenho do jogador. Tipo de gráfico Gráfico de Boxplot Valores do eixo das Mini-Jogo por Jogadores abcissas (X) Valores do eixo das Pontuação ordenadas (Y) Filtros adicionais Nenhum. Figura 5.29: Exemplo de Gráfico Gerado - Boxplot de Jogadores 5.3 Novos Jogos 5.3 64 Novos Jogos O desenvolvimento de novos jogos foi realizada na terceira iteração do projeto. Porém, a ideia dos novos jogos foi pesquisada antes da primeira iteração com a visita ao oftalmologista William Procópio. A reunião tratou-se de orientações técnicas de como estimular a visão de uma criança e também surgiram várias ideias que serão possíveis a longo prazo. 5.3.1 Definição de Requisitos 5.3.1.1 Requisitos Funcionais Tabela 5.23: Requisitos Funcionais ID RF5 RF6 RF7 5.3.1.2 Requisito Funcional Treinar a percepção de tamanho Avaliar o nível de contraste mínimo do jogador Reconhecer a captação de movimento do jogador Ator Jogador Jogador Jogador Requisitos Não-Funcionais Tabela 5.24: Requisitos Não-Funcionais ID RNF5 RNF6 Requisito Não Funcional Categoria O botões precisam ser de fácil identificação com a res- Usabilidade posta que o jogador quer escolher. Utilizar cores e formatos de objetos simples, man- Usabilidade tendo o padrão atual 5.3 Novos Jogos 5.3.2 65 Diagrama de Atividades Figura 5.30: Diagrama de Atividades - Execução de Jogo 5.3 Novos Jogos 5.3.3 66 Diagrama de Classes Figura 5.31: Diagrama de Classes - Novos Jogos A classe FaseMutanteBase é responsável pela lógica básica dos novos mini-jogos que foram desenvolvidos. Ela é responsável por montar a estrutura básica de elementos de interface gráfica dentro de uma instância de TelaJogo e atribui à essas instâncias chamadas de métodos que serão delegados à classes filhas. 5.3 Novos Jogos 67 5.3.4 Jogos desenvolvidos 5.3.4.1 Identifique a Forma! O objetivo da criança nesse mini-jogo é identificar qual é a forma do desenho no centro da tela. O desenho começa com um tamanho muito inferior ao tamanho original e, a cada clique que for dado na tela, o tamanho da figura aumentará. Quando a forma for identificada, o jogador deverá clicar em uma das figuras situadas no canto direito da tela. Caso acerte, irá passar de fase. Caso contrário irá perder pontos. Quanto mais cedo a forma do objeto for identificada, maior será a pontuação obtida na fase. A Tabela 5.25 exibe quais níveis de redimensão de imagem é possível, com a quantia de pontuação obtida em cada nível. Tabela 5.25: Tabela de Pontuação do Jogo de Formas Redimensão Pontos obtidos 6.25% 1000 900 12.5% 25% 800 50% 700 75% 600 100% (Tamanho Original) 500 200% 400 300 300% 400% 200 500% 100 Foi designado um total de doze fases, com dificuldades variadas. Existe um total de sete formas de figuras a serem identificadas, utilizando formas geométricas básicas como quadrados, triângulos, círculos. A cor preta foi utilizada para permitir um contraste maior entre o fundo e a figura. A Tabela 5.26 lista todas as formas. Tabela 5.26: Formas Geométricas do Jogo de Formas Nome da Forma Imagem Círculo Triângulo Triângulo Invertido Quadrado Hexágono Cruz Estrela 5.3 Novos Jogos 68 Figura 5.32: Tela do Jogo Identifique as Formas! 5.3 Novos Jogos 5.3.4.2 69 Jogo de Contraste O objetivo desse jogo é identificar em qual nível de contraste a criança consegue identificar a forma da figura no centro da tela. Para simular o contraste no jogo foi necessário utilizar um fundo branco e uma sombra que se situa em frente à figura a ser identificada. Inicialmente, essa sombra possui um baixo nível de transparência, o que cria um menor contraste. Ao clicar na tela, esse contraste aumenta à medida em que a transparência da sombra diminui. Quando o jogador identificar a figura central, ele deverá clicar em uma das quatro opções ao lado direito da tela. A pontuação é inversamente proporcional ao nível de contraste em que a figura foi identificada. A Tabela 5.27 mostra a pontuação que é obtida baseado no nível de contraste da sombra, um valor proposto de 0 a 100, sendo o menor valor o maior contraste obtido entre o fundo e a figura. Foi elaborado oito diferentes fases utilizando formatos geométricos básicos, como o citado na Tabela 5.26, no jogo anterior. Tabela 5.27: Tabela de Pontuação do Jogo de Contraste Contraste Pontos obtidos 99% 1275 97% 1245 95% 1205 1158 93% 91% 1107 85% 1052 80% 993 75% 931 866 70% 797 65% 725 60% 55% 649 570 50% 40% 486 30% 398 20% 303 05% 200 01% 83 5.3 Novos Jogos 70 Figura 5.33: Tela do Jogo de Contraste 5.3 Novos Jogos 5.3.4.3 71 Jogo do Movimento Esse jogo tem como objetivo reconhecer a captação de movimento do jogador. Em todas as fases aparece uma pequena bola que percorre uma tragetória e o jogador deve identificar qual é a forma dessa tragetória. Uma tragetória possui ao mínimo dois pontos a serem percorridos. Inicialmente, a figura possui uma velocidade alta. Ao clicar na tela, essa velocidade é diminuida. Ao identificar a forma, o jogador poderá clicar nas opções no canto direito da tela. A pontuação obtida em uma fase depende da velocidade da bola em que a tragetória foi identificada. Foi elaborado um total de oito fases, sendo uma fase para cada tipo tragetória (ver Tabela 5.29). A Tabela 5.28 mostra as possíveis pontuações que podem ser obtidas. Tabela 5.28: Tabela de Pontuação do Jogo de Movimento Velocidade Pontos obtidos 1000 1100 500 1000 900 250 800 167 700 125 600 100 67 500 50 400 300 33 25 200 20 100 Tabela 5.29: Tragetórias do Jogo de Movimento Tragetória Imagem Horizontal Vertical Diagonal A Diagonal B Quadrado Letra ’V’ Letra ’V’ Invertida Triângulo 5.3 Novos Jogos 72 Figura 5.34: Tela do Jogo de Movimento 73 6 Cronograma O trabalho foi concluído em seis meses, começando em Janeiro de 2012 e terminando em Junho de 2012. A maior parte do tempo teve foco na reorganização do projeto (módulo 1). É apresentado abaixo uma figura com o cronograma planejado sobre a execução do trabalho, o cronograma executado e, e em seguida a descrição para as atividades em ciclo, definindo as cores e os módulos respectivos; Figura 6.1: Cronograma planejado sobre a execução do trabalho Figura 6.2: Cronograma executado do trabalho 6 Cronograma 74 Figura 6.3: Descrição dos ciclos O cronograma foi dividido em dois tipos de tarefas: tarefas sequenciais, que foram realizadas em paralelo às tarefas do tipo em ciclos; tarefas em ciclos, que foram realizadas em várias iterações, seguindo o ciclo de vida espiral. O cronograma executado difere do planejdo por haver a necessidade de focar o trabalho no desenvolvimento para apenas após essa etapa começar a redação do trabalho. 75 7 Recursos necessários 7.1 Software • Sistema Operacional Linux; • Netbeans IDE; • JDK 7; • Kile; • Okular; • Astah UML; • Argo UML; 7.2 Hardware • Notebook Dell Inspiron 1520, Core 2 Duo 1.8GHz, 2GB de memória RAM, 130GB de disco rígido; 76 8 8.1 Considerações Finais Conclusão Este trabalho apresenta uma nova plataforma para o estímulo visual de pessoas com visão subnormal denominada Vídere 2. São apresentados 12 mini jogos que tratam de contraste, identificação de formas, percepção de movimento, identificação de cores e contornos, análise de cenário de imagens. Além disso, o Vídere 2 oferece estatísticas e gráficos de forma integrada ao aplicativo que disponibiliza que seja feito o acompanhamento de seus usuários, sua evolução no treinamento visual em cada jogo. Além disso, esse acompanhamento pode ocorrer de forma individual ou coletiva. O Vídere foi desenvolvido utilizando ferramentas livres e independentes de sistema operacional, de forma que pode ser usado em qualquer sistema operacional, bastando a instalação do Java na máquina do cliente. O Vídere é livremente disponibilizado a partir da url http://code.google.com/p/viderejogos/. Os resultados apresentados ilustram o potencial dessa plataforma de jogos, os quais exibem de forma clara a adequação dessa proposta os objetivos propostos, mostrando-se uma ferramenta útil para os deficientes visuais e profissionais de saúde que podem acompanhar a evolução dos usuários de forma integrada e transparente ao usuário. O desenvolvimento deste trabalho contribuiu altamente na aquisição de experiência profissional como analista e desenvolvedor de sistemas. O conhecimento adquirido e dificuldades solucionadas na prática durante todo o trabalho esclareceram diversas dúvidas que em momentos teóricos não foram identificados. É inmensurável o valor pessoal da conclusão deste trabalho. 8.2 Trabalhos Futuros Durante o desenvolvimento do trabalho várias ideias foram surgindo para a melhoria do aplicativo: 8.2 Trabalhos Futuros 77 • Possibilitar a opção de executar o aplicativo em forma de Java Web Start, onde o usuários de todo o mundo poderiam contribuir com a experiência de jogo e também analisar estatísticas tanto locais quanto globais. • Estender o aplicativo de forma com que o jogador possa interagir com mini-jogos através de hardware específico para o jogo, por exemplo: um grande tambor que substitui o clique do mouse em um botão. Assim, profissionais de outras áreas poderiam ser integrados ao projeto e seu desenvolvimento. • A inclusão de outros mini-jogos que se assemelhem com jogos utilizados na vida real para gerar mais alternativas de mini-jogos, não limitando-se apenas ao treinamento do sentido visual, mas também ao treinamento de outros sentidos humanos como o auditivo e o tato, pois muitas vezes uma deficiência em um sentido humano não está isolada de outros sentidos (GIL, 2001). 78 Referências Bibliográficas AUDIOGAMES. AudioGames Frequently Asked Questions. 2009. Acesso em: 30 Abr. 2012. Disponível em: <http://audiogames.net/page.php?pagefile=faq>. BORGES, A. Projeto DOSVOX. 2002. Acesso em: 29 Abr. 2012. Disponível em: <http://intervox.nce.ufrj.br/dosvox/intro.htm>. BRAGA, A. P.; SEI, M. Perfil da Deficiência em Crianças e Adolescentes. 1997. Acesso em: 07 Out. 2011. Disponível em: <http://www.icevi.org/publications/icevix/wshops/0348.html>. CUNHA, E. E. JogaVOX: Ferramenta e Estratégias para Construc̃ão de Jogos Educacionais para Deficientes Visuais. 2007. Acesso em: 30 Abr. 2012. Disponível em: <http://intervox.nce.ufrj.br/jogavox/textos/EricaEstevesCunha.pdf>. DEITEL, P. Java Como Programar. [S.l.]: Pearson, 2010. FAVA, F. Jogando com o ar: o sopro como instrumento de acessibilidade nos jogos eletrônicos. 2010. Acesso em: 27 Abr. 2012. Disponível em: <http://www.sbgames.org/papers/sbgames08/gameandculture/full/gc15_08.pdf>. FERREIRA, V. F. Livro estuda benefícios de jogos virtuais para deficientes. 2011. Acesso em: 27 Abr. 2012. Disponível em: <http://www.usp.br/agen/?p=84952>. GIL, M. Deficiência Visual. 2001. Acesso em: 16 Maio 2012. Disponível em: <http://deficienciavisual.com.sapo.pt/txt-deficienciavisual-MartaGil.htm>. LOOKTEL. LookTel - Instant Recognition Apps for Persons with Low Vision or Blindness. 2009. Acesso em: 29 Abr. 2012. Disponível em: <http://www.looktel.com/>. MARTIN, R. C. Clean Code - A Handbook of Agile Software Craftsmanship. [S.l.]: Prentice Hall, 2008. OMS. Consultation on Development of Standards for Characterization of Vision Loss and Visual Functioning. 2003. Acesso em: 07 Out. 2011. Disponível em: <http://whqlibdoc.who.int/hq/2003/WHO_PBL_03.91.pdf>. ORACLE. Java SE Overview - 6 Key Features. 2012. Acesso em: 25 Abr. 2012. Disponível em: <http://www.oracle.com/technetwork/java/javase/overview/features-jsp-140508.html>. RODRIGUES, G. C. d. V. P. Vídere - jogos para estimulação visual. 2005. Acesso em: 22 Ago. 2011. Disponível em: <http://pessoal.utfpr.edu.br/fabricio/ensino/orientacoes/monografiagrazielapascoal.pdf>. SCHELL, J. The Art of Game Design: A Book of Lenses. [S.l.]: Morgan Kaufman Publishers, 2008. ISBN 978-0-12-369496-6. Referências Bibliográficas 79 SILVA, L. F. da. Geometria e cegos - Um jogo computacional no processo de aprendizagem de trigonometria. 2009. Acesso em: 29 Abr. 2012. Disponível em: <http://intervox.nce.ufrj.br/dosvox/textos/monografia_lidiane.pdf>. SOARES, N. Alunos do IME criam aplicativo para deficientes visuais. 2012. Acesso em: 06 Junho 2012. Disponível em: <http://www.usp.br/agen/?p=100556>. VIKLUND, A. JFreeChart. 2012. Acesso em: 25 Abr. 2012. Disponível em: <http://www.jfree.org/jfreechart/>. 80 APÊNDICE A -- Proposta do Trabalho de Diplomação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ UTFPR CAMPUS CORNÉLIO PROCÓPIO DIRETORIA DE GRADUAÇÃO E EDUCAÇÃO PROFISSIONAL CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DIOGO HIDEKI MATSUMOTO DESENVOLVIMENTO DE JOGOS PARA A ESTIMULAÇÃO VISUAL CORNÉLIO PROCÓPIO NOVEMBRO - 2011 DIOGO HIDEKI MATSUMOTO DESENVOLVIMENTO DE JOGOS PARA A ESTIMULAÇÃO VISUAL Proposta de trabalho de conclusão de curso apresentada como requisito parcial a obtenção do grau de Tecnólogo em Desenvolvimento de Sistemas de Informação pela Universidade Tecnológica Federal do Paraná - Campus Cornélio Procópio Orientador: Fabrício Martins Lopes CORNÉLIO PROCÓPIO NOVEMBRO - 2011 Resumo Este trabalho propõe o desenvolvimento de uma nova versão do projeto Vídere. Os objetivos são a reestruturação do código, adição de módulo para acompanhamento evolutivo do usuário e inclusão de novos jogos ao pacote atual. O projeto seguirá o ciclo de vida do modelo espiral. Utilizará a diagramação da Unified Modeling Language - UML para a modelagem do sistema. O desenvolvimento será feito com a tecnologia Java para a programação do software e estima-se a conclusão do aplicativo em seis meses. Sumário Lista de Figuras Lista de Tabelas 1 Introdução p. 7 2 Objetivos p. 8 2.1 Reorganização da estrutura do sistema . . . . . . . . . . . . . . . . . . . . . p. 8 2.2 Acompanhamento evolutivo do usuário . . . . . . . . . . . . . . . . . . . . p. 9 2.3 Implementação de novos jogos . . . . . . . . . . . . . . . . . . . . . . . . . p. 9 3 Justificativa p. 10 4 Revisão Bibliográfica p. 12 4.1 Conceitos sobre Deficiência Visual . . . . . . . . . . . . . . . . . . . . . . . p. 12 4.2 Definições para Deficiência Visual . . . . . . . . . . . . . . . . . . . . . . . p. 12 4.3 Soluções para a Deficientes Visuais . . . . . . . . . . . . . . . . . . . . . . p. 13 5 Metodologia p. 14 5.1 Estudo das tecnologias usadas no projeto . . . . . . . . . . . . . . . . . . . . p. 14 5.2 Desenvolvimento de novos módulos . . . . . . . . . . . . . . . . . . . . . . p. 15 5.2.1 Concepção do Jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 15 5.2.2 Análise de Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 15 5.2.3 Desenvolvimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 15 5.2.4 Testes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 16 5.3 Redação do Trabalho de Diplomação . . . . . . . . . . . . . . . . . . . . . . p. 16 6 Cronograma p. 17 7 Recursos necessários p. 18 7.1 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 18 7.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 18 Referências Bibliográficas p. 19 Lista de Figuras 6.1 Cronograma planejado sobre a execução do trabalho . . . . . . . . . . . . . p. 17 6.2 Descrição dos ciclos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 17 Lista de Tabelas 3.1 Índice de população deficiente no Brasil . . . . . . . . . . . . . . . . . . . . p. 11 4.1 Classificação da Perda de Visão . . . . . . . . . . . . . . . . . . . . . . . . p. 13 7 1 Introdução O uso da tecnologia no dia a dia tornou-se uma atividade indispensável. Há vários recursos oferecidos aos usuários realizado com o apoio da informática utilizando-se um software para atender as necessidades de uma pessoa. Dentre as diversas áreas de aplicações, a área educacional foca o estímulo ao desenvolvimento de uma determinada habilidade humana, estes são chamados de softwares educacionais que oferecem ao usuário, muitas vezes, recursos da multimídia para tornar o aprendizado mais interativo e eficiente. Com ênfase na área de desenvolvimento de softwares educacionais será proposto a continuação de um projeto com as mesmas características de uma aplicação educacional focada na área de estímulo à visão para portadores de deficiência visual. 8 2 Objetivos Uma abordagem inicial para o estímulo visual para crianças com baixo índice de visão ou visão subnormal, desenvolvido por Graziela Cristina do Vale Pascoal Rodrigues em seu Trabalho de Diplomação do Curso de Tecnologia em Informática na UTFPR Campus Cornélio Procópio será considerada no desenvolvimento deste trabalho com objetivo de expandir o software. Esse software já possui nove diferentes jogos que “abordam meios de estimulação visual tais como, visão para detalhes em cores, visão de detalhes em imagens, percepção de contrastes, estímulos luminosos, interpretação de imagens e cenas, visualização de contornos e melhoria da memória visual.” (RODRIGUES, 2005). A nova versão do projeto irá possuir três módulos: 1. Reorganização da estrutura do sistema; 2. Acompanhamento evolutivo do usuário; 3. Implementação de novos jogos. 2.1 Reorganização da estrutura do sistema A reorganização da estrutura do sistema será feita para que possa garantir a estabilidade do sistema. Muitos sistemas sofrem contínuas mudanças. Uma pequena mudança em uma parte do sistema pode durar mais do que se esperava ou até mudar o comportamento de outra parte. Para reduzir a frequência com que esses riscos ocorram, manter um código limpo e organizado é uma opção para o desenvolvedor (MARTIN, 2008). Com a reorganização do sistema, utilizando recursos do paradigma orientado a objetos, novas funcionalidades serão adicionadas ao sistema sem afetar a rotina de um jogo, e a inclusão de novos jogos será feita de forma mais direta, sem ter que se preocupar como o sistema funciona como um todo, apenas sabendo o básico que uma classe para jogo deve implementar. 2.2 Acompanhamento evolutivo do usuário 9 Nesse módulo, parte do tempo será dedicado a revisão de aspectos gerais do jogo, como desempenho, que se trata de tempo de carregamento e processamento da aplicação em memória, e documentação do código. 2.2 Acompanhamento evolutivo do usuário Será implementado um módulo para acompanhamento evolutivo do usuário baseado em um histórico de dados de cada jogo que serão coletados durante o andamento do jogo. Os dados coletados podem variar de acordo com o jogo, e para cada jogo poderá ser produzido um relatório com índices de acertos e de erros. Em se tratando de softwares educacionais, é extremamente necessário que se obtenha resultados com o uso desse software. Esse módulo ficará responsável por exibir esses resultados que poderão ser trabalhados como o usuário desejar. 2.3 Implementação de novos jogos No trabalho de referência foram propostas novas ideias para o desenvolvimento de mais alguns jogos no pacote atual. Essa tarefa será realizada depois de completado as duas atividades anteriores. 10 3 Justificativa A deficiência muitas vezes é confundida como sendo o contrário de eficiente, porém à medida que se convive com uma pessoa com deficiência, nota-se que ela não é incapaz. Este tipo de indivíduo pode enfrentar dificuldades para realizar atividades consideradas “do cotidiano”, porém, em geral, possui grande habilidade em exercer outras funções, assim como todo ser humano (GIL, 2000). O conceito de deficiência visual abrange uma vasta área de possibilidades: desde a cegueira total até a visão subnormal, que pode ser chamado também de baixa visão. Enxergar não é uma habilidade humana inata, é necessário aprender a ver. Portanto, assim que aprendemos a ver desenvolvemos muitas habilidades baseadas na visão, uma delas é para orientar-se no espaço, que se baseia na habilidade de distinguir objetos visíveis. A perda parcial ou total da visão adquirida na infância pode trazer alguns prejuízos à criança, como dificuldades no relacionamento social, expressão emocional, desenvolvimento educacional, que caso não for solicitada ajuda para um tratamento adequado, pode se repercutir durante toda a vida (GIL, 2000). Por isso, observou-se a necessidade de desenvolver um software que servirá como ferramenta de auxílio para o tratamento do deficiente visual. Os recursos tecnológicos e de multimídia, encontrados em um computador, são ferramentas importantes para aprendizagem de forma mais segura e eficaz (NANES; SIMÕES, 2010). Utilizando-se o computador, pode ser criado um ambiente de aprendizado controlado, sem riscos de bloqueios cognitivos causados por problemas de relacionamento. A partir da análise do censo demográfico de 2000 realizado pelo IBGE, foi possível observar que dentro da população brasileira que possui algum tipo de deficiência, quase metade possui deficiência visual. A tabela a seguir mostra a quantidade, em milhões, de brasileiros com uma deficiência e a frequência relativa entre essa quantidade e o número total de pessoas com algum tipo de deficiência. 3 Justificativa 11 Tabela 3.1: Índice de população deficiente no Brasil Deficiência Visual Motora Auditiva Mental Física Quantidade (em milhões) Porcentagem 16,5 48,1 7,9 22,9 5,7 16,7 2,8 8,3 1,4 4,1 Fonte: adaptado de IBGE (IBGE, 2000) O software produzido servirá como um recurso a mais para auxiliar o processo de aprendizagem. É necessário que se tenha em mente que o produto não irá resolver os problemas de convivência entre um aluno e professor. Será necessário, também, o acompanhamento por parte dos pais e professores no incentivo à aprendizagem e desenvolvimento da criança. 12 4 Revisão Bibliográfica 4.1 Conceitos sobre Deficiência Visual É uma alteração ou diminuição da eficiência visual. As causas mais comuns para que essa alteração ocorra são: de forma inata, a pessoa já nasce com a deficiência, podendo até perder a visão totalmente com o tempo; e de forma adquirida, por sofrer acidentes que comprometam a visão (BRAGA; SEI, 1997). A deficiência visual pode estar dividida em dois grupos: cegueira e visão subnormal. A pessoa cega possui apenas a percepção da luz ou não tem nenhuma visão. Maior parte do conhecimento adquirido por essas pessoas é através de outros sentidos humanos, sendo mais utilizados o de tato e o de audição. A pessoa com visão subnormal consegue utilizar a visão sem que limite o próprio desempenho em exercer alguma atividade. 4.2 Definições para Deficiência Visual A perda de visão possui alguns graus de acordo com a escala optométrica de Snellen, que mensura a acuidade visual para longe. Para obter a escala de Snellen é necessário fazer a relação entre a qualidade da visão subnormal a certa distância (em metros ou pés) comparado à qualidade da visão normal. De acordo com essa escala, o primeiro grau é considerado visão normal, os graus 1 e 2 são considerados visão subnormal, enquanto os demais graus são considerados como cegueira (OMS, 2003). A tabela a seguir mostra a classificação da perda de visão de acordo com dados retirados de uma pesquisa feita pela Organização Mundial de Saúde - OMS que mostra o grau da perda de visão e a acuidade máxima para o grau. 4.3 Soluções para a Deficientes Visuais 13 Tabela 4.1: Classificação da Perda de Visão Grau de Perda de Visão Acuidade Máxima (Snellen) 0 1,0 1 0,3 2 0,1 3 0,05 4 0,02 5 0 Fonte: adaptado de OMS. 4.3 Soluções para a Deficientes Visuais Para a leitura, pode ser utilizando tanto o sistema de leitura através do tato, o Braille, ou através da audição, por meio de livros falados ou sintetizadores de voz. Na escrita, existe sistemas que escrevem em Braille e também impressoras Braille. Na locomoção, pessoas com cegueira podem usar bengalas ou cães-guia. Para algumas alterações visuais, como miopia, hipermetropia, astigmatismo, entre outras, pode ser feito o uso de lentes (óculos ou lentes de contato) ou cirurgias oculares. 14 5 Metodologia Este trabalho de diplomação será desenvolvido realizando as seguintes atividades: 1. Estudo das tecnologias usadas no projeto; 2. Desenvolvimento de novos módulos; 3. Redação do Trabalho de Diplomação. 5.1 Estudo das tecnologias usadas no projeto Essa atividade será realizada durante grande parte do trabalho de diplomação, em paralelo com a atividade de desenvolvimento. A aquisição de conhecimento sobre assuntos relacionados ao entendimento do projeto desenvolvido e também à implementação dos novos módulos serão realizados nessa atividade. O aplicativo de Graziela foi desenvolvido utilizando a linguagem de programação orientada a objetos Java e compilado no ambiente de desenvolvimento Netbeans. Para alcançar os objetivos do projeto (citados na seção 2), será necessária a aquisição do código fonte, produzido por Graziela Rodrigues, que será providenciado por Fabrício Lopes. Em seguida o código será estudado a fim de entender as relações entre as classes e objetos para que seja possível a remodelação do sistema sem haver modificações no fluxo atual do jogo e sem alterar a saída de dados nas interfaces gráficas. Os princípios de orientação a objetos SOLID introduzidos por Robert Martin são as referências para iniciar a remodelação do sistema. Os cinco princípios, sendo eles: Single Responsability, Open/Closed, Liskov substitution, Interface segregation e Dependency inversion, visam uma melhor organização e maior limpeza de código, tornado-o fácil de ser entendido e ser mantido não apenas pelo autor, mas também por outros colaboradores (MARTIN, 2008). Com isso, o módulo de acompanhamento evolutivo será introduzido no sistema e implementado para cada jogo. Esse módulo servirá para que o aluno e o professor possam ter es- 5.2 Desenvolvimento de novos módulos 15 tatísticas de resultados baseado em dados coletados durante o jogo, sendo eles: pontuações de acertos e pontuações de erros. Os dados serão gravados na máquina local e será possível criar mais de um perfil de usuário, usando como atributo diferencial o nome do aluno. A exibição das estatísticas será feito através de gráficos de linha que serão gerados e exibidos pelo próprio aplicativo. 5.2 Desenvolvimento de novos módulos O desenvolvimento dos novos módulos será realizado baseando-se no modelo de processo de ciclo de vida espiral. A escolha do modelo espiral se deu principalmente por ser um modelo que ajuda a estimar prazos de forma mais realista conforme for dado o andamento do projeto, podendo, assim, focar a execução de uma atividade sem prejudicar outra. As fases que serão seguidas no modelo serão: Concepção do Jogo, Análise de Projeto, Desenvolvimento e Testes. 5.2.1 Concepção do Jogo A fase de concepção do jogo é o ponto inicial da criação de um jogo. É feito um brain storm (chuva de ideias) para decidir como será o jogo, incluindo planejamento de regras de jogo, de jogabilidade e de abstração interfaces gráficas. 5.2.2 Análise de Projeto Nessa fase, a ideia abstrata da fase anterior é mais concretizada, gerando documentos para descrever o problema e como este será resolvido. A pesquisa por jogos que se assemelhem à ideia também pode ser feita, a fim de encontrar melhores soluções para o jogo. 5.2.3 Desenvolvimento Com o documento gerado na fase anterior, será dado início ao desenvolvimento do jogo. O principal foco nessa fase será a produção do jogo, incluindo a programação das interfaces e regras. O código produzido nessa fase não deve ser final, deve ser feito pensando que haverá possíveis reajustes na fase seguinte. 5.3 Redação do Trabalho de Diplomação 5.2.4 16 Testes O módulo gerado na fase anterior será revisado para verificar se os principais pontos do documento gerado na análise foram cumpridos. Não se limitando apenas à revisão, será realizado um teste a fim de encontrar possíveis defeitos nas rotinas do jogo para corrigi-los para a versão final; avaliar a qualidade, no que se refere à atmosfera do jogo (sensação de estar jogando e identificar-se no ambiente), feedbacks (exercer uma ação e receber um sinal que identifique que a ação realmente foi executada) e jogabilidade (usuário exercer uma ação sem ser atrapalhado pelo próprio jogo). Caso for detectada uma nova ideia que possa melhorar o jogo ela será avaliada e um novo ciclo poderá ser iniciado, começando da Concepção. 5.3 Redação do Trabalho de Diplomação A redação do trabalho de diplomação será feita com maior ênfase no final do cronograma planejado, estendendo até a um mês após a apresentação do trabalho. Será considerado na escrita da redação, bibliografias estudadas durante o desenvolvimento do projeto e conversas com o orientador. 17 6 Cronograma O trabalho será feito em seis meses, començando em Janeiro e terminando em Junho de 2012. Maior parte do tempo será focado na reorganização do projeto (módulo 1). É apresentado abaixo uma figura mostrando o cronograma planejado sobre a execução do trabalho e em seguida a descrição para as atividades em ciclo, definindo as cores e os módulos respectivos; Figura 6.1: Cronograma planejado sobre a execução do trabalho Figura 6.2: Descrição dos ciclos O cronograma foi dividido em dois tipos de tarefas: tarefas sequencias, que irá ser realizada em paralelo às tarefas do tipo em ciclos; tarefas em ciclos, que será feita em várias iterações, seguindo o ciclo de vida espiral. 18 7 Recursos necessários 7.1 Software • Sistema Operacional Linux; • Netbeans IDE; • JDK 7; • Kile; • Okular; 7.2 Hardware • Notebook Dell Inspiron 1520, Core 2 Duo 1.8GHz, 2GB de memória RAM, 130GB de disco rígido; 19 Referências Bibliográficas BRAGA, A. P.; SEI, M. Perfil da Deficiência em Crianças e Adolescentes. 1997. Acesso em: 07 Out. 2011. Disponível em: <http://www.icevi.org/publications/icevix/wshops/0348.html>. GIL, M. Deficiência visual. 2000. Acesso em: 27 Ago. 2011. Disponível em: <www.dominiopublico.gov.br/download/texto/me000344.pdf>. IBGE. Censo Demográfico 2000. 2000. Acesso em: 18 Set. 2011. Disponível em: <http://www.ibge.gov.br/home/presidencia/noticias/27062003censo.shtm>. MARTIN, R. C. Clean Code - A Handbook of Agile Software Craftsmanship. [S.l.]: Prentice Hall, 2008. NANES, M. T. R. T.; SIMÕES, N. R. do P. Acesso à Mídia Com Deficiência Visual E Com Deficiência Auditiva: Quem Se Preocupa Com Nós? 2010. Acesso em: 07 Out. 2011. Disponível em: <http://tinyurl.com/acesso-a-midia-com-deficiencia>. OMS. Consultation on Development of Standards for Characterization of Vision Loss and Visual Functioning. 2003. Acesso em: 07 Out. 2011. Disponível em: <http://whqlibdoc.who.int/hq/2003/WHO_PBL_03.91.pdf>. RODRIGUES, G. C. d. V. P. Vídere - jogos para estimulação visual. 2005. Acesso em: 22 Ago. 2011. Disponível em: <http://pessoal.utfpr.edu.br/fabricio/ensino/orientacoes/monografiagrazielapascoal.pdf>.