Comentários

0%

NÃO PODE FALTAR

UMA VISÃO DE GAME EM PROGRAMAÇÃO ORIENTADA A OBJETOS

Jesimar da Silva Arantes

A linguagem orientada a objetos na criação de jogos 2D

Com a ferramenta Greentoot, podemos criar jogos com diversos personagens controlados por inteligência artificial simples.

Fonte: Shutterstock.

Deseja ouvir este material?

Áudio disponível no material digital.

Praticar para Aprender

Prezado aluno, bem-vindo à terceira seção dos estudos sobre linguagem orientada a objetos. Você já se perguntou como eram feitos os jogos de videogame de 8 e 16 bits? Já quis aprender a desenvolver o seu próprio jogo de plataforma ou aventura no estilo 8 e 16 bits? Antigamente, a tarefa de desenvolver um jogo era complexa e levava vários meses – ou anos – para que uma equipe a executasse. Parte dessa dificuldade estava relacionada à inexistência de ferramentas que auxiliassem na programação. Atualmente, existem diversas ferramentas que auxiliam nesse processo, abstraindo a complexidade da implementação. 

Nesta seção estudaremos uma dessas ferramentas: o Greenfoot. Uma das vantagens do Greenfoot é que ele permite fazer a criação de jogos e animações bidimensionais de forma bastante simples rapidamente. O Greenfoot tem sido utilizado no ensino de programação em diversas universidades.

Você, durante seu estágio em uma startup, recebe de seu chefe diversos desafios. Recentemente, ele fechou um trabalho de desenvolvimento de um robô móvel inteligente com uma empresa de e-commerce. Nessa semana, seu chefe desafiou você a desenvolver um jogo/simulador 2D em que o robô R-ATM deve se deslocar em um cenário que simule uma sala/galpão contendo diversas caixas com mercadorias. Ele gostaria de mostrar esse jogo para a empresa de e-commerce como um produto derivado que demostra as funcionalidades do robô que a sua startup desenvolverá. As principais funcionalidades que o jogo/simulação deve contemplar são: 

Agora que o seu desafio foi apresentado, chegou o momento de estudar esta seção, pois ela será de grande ajuda para resolvê-lo. Você aprenderá a criar jogos e animações 2D, e para isso você verá como criar atores/personagens e definir cenários, além de compreender como posicionar os atores no cenário, definir comportamentos, adicionar recursos de áudio e interagir com um personagem. Vamos conhecer essa ferramenta para poder resolver esse desafio?

Bom estudo! 

CONCEITO-CHAVE

Introdução

A orientação a objetos (OO) facilita muito a criação de diversas aplicações, como animações e jogos. Na seção anterior, estudamos a ferramenta Alice, que usa uma linguagem de blocos construída sobre a linguagem Java, e focamos, em geral, a criação de animações tridimensionais. Nesta seção, focaremos o desenvolvimento de jogos bidimensionais. Dessa maneira, vamos imaginar que você queira criar um jogo e que nesse jogo existem diversos personagens controlados por alguma inteligência artificial simples (bots). Nesse jogo também há um personagem que você pode controlar, além dos objetos que compõem o cenário. Imagine, agora, que queremos desenvolver esse jogo não em uma linguagem de blocos, mas utilizando uma linguagem de programação tradicional, como o Java. Uma das formas de fazer isso é programando manualmente todas as telas gráficas do jogo 2D, utilizando alguma biblioteca gráfica do Java. Outra forma é utilizando alguma ferramenta que abstraia os detalhes de interface, e você se preocupa em desenvolver apenas as regras do jogo. Pois bem, é exatamente isso que o Greenfoot faz. Conheceremos agora essa ferramenta que auxilia de forma imensa no processo de criação de jogos e animações.

DICA

Neste vamos nos referir ao Greenfoot como uma ferramenta para criação de jogos e simulações. No entanto, em diversos lugares o Greenfoot é chamado de Ambiente de Desenvolvimento Integrado (IDE) para a linguagem Java. As duas formas de se referir ao Greenfoot estão corretas.

EXPLORANDO O GREENFOOT

O software Greenfoot é uma ferramenta que auxilia no desenvolvimento de jogos, simulações e outros programas gráficos. Por ser simples e apresentar um visual gráfico agradável, essa ferramenta permite que programadores novos criem jogos mesmo tendo poucos conhecimentos da linguagem. Dessa forma, convidamos você a se aprofundar no software Greenfoot: você logo perceberá o quanto ele é fantástico e ajuda na compreensão da OO. 

Nesta seção utilizaremos o software Greenfoot, versão Greenfoot 3.6.1. Você pode acessá-la em Greenfoot ([s.d.]a), baixar e efetuar sua instalação. O processo de instalação é bastante simples e por isso não será mostrado. Outro ponto a ser destacado é que, após a instalação do Greenfoot, pode ser necessária a instalação do Java Development Kit (JDK), caso você tenha o JDK instalado. O download do JDK pode ser feito no site da Oracle (2020). O Greenfoot é uma ferramenta gratuita e multiplataforma, ou seja, executa em sistemas operacionais Windows, Linux e MacOS X.

TELA DE DESENVOLVIMENTO

Ao abrir o software Greenfoot, a tela de trabalho principal será mostrada. Em seguida, crie um cenário: vá em Scenario, New Java Scenario e atribua um nome a ele. Assim, a sua tela deverá ser semelhante à Figura 1.18. Analise as descrições feitas na figura para conhecer os principais recursos presentes nessa janela. Alguns elementos principais disponíveis nesse ambiente são: a tela gráfica da cena montada, o botão para executar a animação, o botão para reiniciar a animação, a classe World e a classe Actor.

Figura 1.18 | Tela de trabalho principal do software Greenfoot
Fonte: captura de tela do software Greenfoot elaborada pelo autor.
Dica

Caso você deseje, o idioma pode ser alterado para diversas línguas, inclusive o Português. Para trocar o idioma vá em menu Tools, Preferences, Interface, Language selection e então selecione Português.

ESCREVENDO UM PROGRAMA NO GEENFOOT

Uma vez que foi dada uma visão geral do software, vamos agora montar um cenário em que possamos escrever o nosso primeiro programa com o Greenfoot. 

O primeiro passo é fazer a criação de um cenário de fundo, e então inserir um personagem sobre ele. A Figura 1.19 mostra alguns passos necessários para isso, analise-a. 

Figura 1.19 | Passos para criação/inserção de um cenário de fundo e um personagem
Fonte: capturas de telas do software Greenfoot elaboradas pelo autor.

Inicialmente, foi feita a criação do mundo, sendo definida uma imagem de fundo. Em seguida, criou-se um ator (personagem). Por fim, é necessário arrastar o ator até a posição do cenário em que queremos colocá-lo. Pronto: esses são os passos básicos para a criação de um cenário e para colocarmos um personagem sobre ele.

Alguns pontos aqui precisam ser esclarecidos. O mundo (World) é uma classe, o meu mundo (MyWorld) também é uma classe. 

Em específico, a classe MyWorld é filha de World, ou seja, MyWorld é subclasse de World.

Ainda nesse exemplo, ator (Actor) é uma classe, o Peixe também é uma classe. Neste caso, Peixe é subclasse de Actor

Por hora, vamos dizer que uma subclasse tem todas as características da classe mãe (sua superclasse). Mais detalhes sobre subclasses e superclasses serão discutidos quando falarmos de herança. Aqui, é importante destacar que os dois principais componentes utilizados pelo Greenfoot para fazer um jogo ou animação são o cenário de fundo e os atores.

Suponhamos que agora desejamos adicionar um comportamento ao peixe criado; você gostaria de fazer o peixe se mover simplesmente para frente. A Figura 1.20 ilustra a sequência de passos necessários para isso, analise-a. 

Figura 1.20 | Passos para criação de comportamento e execução da aplicação
Fonte: capturas de telas do software Greenfoot elaboradas pelo autor.

Convidamos você a executar os passos descritos em seu computador. O principal ponto a ser destacado aqui é a janela do editor de códigos: nela você passará grande parte do tempo para projetar um jogo. Agora que você já conhece todo o fluxo para criar uma ação/comportamento, os próximos exemplos destacarão mais os trechos de código criados dentro desse editor. Você poderá acessar e ver o resultado dessa simples implementação em Greenfoot (2020a).

Ainda com relação ao exemplo anterior, percebemos dentro da classe Peixe que ela herda (extends) as características de Actor. Dentro dessa classe existe um método que inicialmente estava vazio, chamado act()

É importante ter em mente que esse método é chamado uma vez quando se clica no botão Act (ou botão Executar uma Vez, no software em português).

Por sua vez, esse método é chamado vezes seguidas quando se clica no botão Run (ou botão Executar, no software em português). Para criarmos o comportamento de mover-se para frente foi feita uma chamada do método move, passando 1 como argumento. Esse método basicamente desloca o objeto peixe 1 pixel para frente. O método move recebe um número inteiro como argumento. Não são aceitos números em ponto flutuante, e para entender o porquê pense em termos de pixels.

Lembre-se

O site do Greenfoot dispõe de uma galeria utilizada na divulgação de jogos e animações. A fim de se inspirar na criação do seu próprio jogo, visualize as aplicações lá disponibilizadas (GREENFOOT, [s.d.]b). Você também pode baixar alguns dos jogos disponíveis e olhar o seu código-fonte para entender como alguns recursos são utilizados. A seguir estão listados alguns jogos interessantes desenvolvidos pela comunidade e que podem servir de inspiração.

Quadro 1.1 | Jogos desenvolvidos pela comunidade Greenfoot Fonte: elaborado pelo autor.

INCORPORANDO ELEMENTOS ATRAVÉS DE UMA CLASSE

Veremos agora como construir uma aplicação com diversos peixes (diversos objetos) movendo-se em círculos. No exemplo anterior, para criação/inserção do objeto tivemos que clicar sobre o ator e arrastá-lo até o cenário. Agora mostraremos como fazer isso incorporando-o diretamente na classe mundo. Analise a Figura 1.21 para entender como foi feito esse processo.

Figura 1.21 | Passos para inserção automática de atores no mundo e movimentação
A imagem mostra diagrama demonstrando os passos para inserção de atores no mundo e movimentação. Da esquerda para direita: Início World MyWorld Abrir editor Código  Actor Peixe Abrir editor Código Run Imagem de cena com fundo azul e bolhas e cinco peixes na cor verde. Imagem pontilhada no formato de círculos representando a movimentação do peixe em cena.
Fonte: capturas de telas do software Greenfoot elaboradas pelo autor.

Na classe meu mundo foi inserido um total de cinco peixes, utilizando uma chamada ao método addObject. Esse método recebe como parâmetros o objeto que será inserido (nesse caso, um novo peixe) e as coordenadas (x, y) do objeto. Assim, repare que cada um dos peixes foi colocado em uma posição diferente. Para dar um comportamento de nadar em círculos foram invocados dois métodos:

Recomendamos variar os valores desses parâmetros para melhor compreendê-los, testando inclusive valores negativos (mas devem ser números inteiros). Você poderá acessar e ver o resultado dessa simples implementação em Greenfoot (2020f).

O Greenfoot já apresenta algumas classes implementadas, e cada classe tem diversos métodos. É importantíssimo que o leitor tenha o hábito de ler a documentação das classes e métodos já disponíveis para compreender como utilizá-las. A documentação das bibliotecas do Greenfoot pode ser acessada em Greenfoot ([s.d.]b).

Assimile

A ferramenta Greenfoot utiliza um sistema de coordenadas semelhantes às coordenadas cartesianas para inserção dos objetos no cenário. Os cenários, em geral, apresentam 600 × 400 pixels, no entanto, essas dimensões podem ser alteradas. É importante ter em mente que a coordenada (0, 0) está na parte superior esquerda. O eixo x cresce no sentido esquerda para direita. O eixo y cresce no sentido de cima para baixo (inverso do sistema cartesiano tradicional). Analise a Figura 1.22.

Figura 1.22 | Sistema de coordenadas no software Greenfoot
Fonte: elaborada pelo autor.

Agora veremos como incorporar diferentes atores no nosso cenário, cada um com diferentes comportamentos. Mostraremos também como carregar imagens próprias para serem utilizadas pelos nossos personagens e cenário. Além disso, veremos como inserir áudio tanto no cenário quanto em um personagem. Assim, o primeiro passo para isso é salvar o projeto. Quando se salva um projeto utilizando o Greenfoot na pasta do projeto, são criadas automaticamente três pastas nomeadas de images, sounds e doc.

Dica

Para que seu jogo ou animação fique com o aspecto bem legal, você pode querer utilizar alguma imagem ou áudio criado por alguém da comunidade. É sempre bom ter certeza que as imagens e áudios que você utiliza estejam com uma licença livre, para não ter problemas com questões de direitos autorais. Os sites OpenGameArt ([s.d.]) e Freesound (2020) dispõem de muitas imagens e áudios que podem ser utilizados livremente. Mesmo assim, é bom dar os devidos créditos ao autor da imagem ou áudio.

Continuando o exemplo anterior, analise a Figura 1.23.

Figura 1.23 | Criação de diferentes atores, objetos e inserção de áudio
Fonte: capturas de telas do software Greenfoot elaboradas pelo autor.

Perceba que criamos um cenário chamado Mar, além de alguns atores chamados Ancora, CavaloMarinho, PeixeDourado, PeixeListrado e PeixeVerde.

Por fim, a classe Mar representa o cenário de fundo e nela inserimos todos os objetos utilizando o método addObject já explicado. 

Outro método também foi utilizado, o showText. Este método mostra uma mensagem de texto na tela nas coordenadas passadas como argumento. Ainda na classe Mar temos dois métodos, o started() e o stopped(). 

Você poderá acessar essa implementação em Greenfoot (2020g).

Reflita

No código mostrado na Figura 1.23, vemos que especificamente a classe PeixeListrado apresenta uma variável lógica usada para controle, chamada isMovingToRight. Reflita sobre o que acontece quando o seu valor lógico é verdadeiro e o que ocorre quando seu valor é falso. Ainda nessa classe existe um método que pega a posição do peixe na coordenada x, chamado getX(). Tente entender o porquê das comparações entre a posição x do peixe com o valor 540 e com o valor 60. Reflita também sobre qual a ação executada pelo método mirrorHorizontally() chamado a partir de getImage().

IMPLEMENTANDO UM MECANISMO DE INTERAÇÃO

Você deve ter reparado que até aqui falamos da criação de jogos, mas foi feita apenas uma pequena animação. Para termos um jogo propriamente dito, precisamos de alguma interação. A seguir aprenderemos a implementar um mecanismo de interação entre o jogador e o personagem.

Exemplificando

Considere o seguinte trecho de código, mostrado na Figura 1.24, que efetua o controle das ações de deslocamento do ator/personagem PeixeDourado. Diferentes ações de movimentação foram inseridas de forma a responder as teclas esquerda, direita, baixo e cima. Ao inserir esses comandos no nosso personagem ele fica mais dinâmico, melhorando a jogabilidade. 

Figura 1.24 | Especificação das ações executadas pelo personagem
Fonte: captura de tela do software Greenfoot elaborada pelo autor.

A classe PeixeDourado tem alguns atributos que auxiliam no controle do nosso personagem. Esses atributos são a posição (x, y) e a orientação do personagem. De forma geral, o que esse código faz é deslocar o personagem para a esquerda ao pressionar do teclado a seta para esquerda. O código garante que a imagem do peixe esteja na mesma orientação que foi pressionada a tecla. Por sua vez, ao pressionar a tecla para a direita, a imagem é espelhada horizontalmente e o peixe se movimentará para a direita, desde que não esteja próximo à borda do cenário. Os códigos de movimentação para baixo e para cima foram omitidos, mas são semelhantes aos anteriores. Você poderá acessar essa implementação em Greenfoot (2020h).

Nesta seção você conheceu um pouco da ferramenta Greenfoot, que auxilia no desenvolvimento de jogos e animações 2D. Vimos como inserir objetos, definir comportamentos e executar comandos dados pelo jogador. Com essa pequena base você já terá capacidade de criar um jogo do zero. Alguns comandos e sintaxes aqui utilizados ficarão mais claros ao longo deste livro, assim, não se preocupe caso você não os tenha compreendido totalmente. Lembre-se: todos os projetos aqui desenvolvidos estão disponíveis no GitHub e podem ser acessados (ARANTES, 2020). Agora que você já tem uma visão geral do que pode ser desenvolvido com a linguagem Java, falaremos mais da sua sintaxe.

Pesquise mais

Existem diversas videoaulas na internet que ensinam a construir aplicações utilizando a ferramenta Greenfoot. Existe um canal no YouTube, chamado Channel Greenfoot, que apresenta dezenas de vídeos explicando como criar aplicações utilizando o software. Esses vídeos dão uma ótima visão sobre a construção de jogos utilizando a ferramenta. 

CHANNEL GREENFOOT. Página inicial. Youtube, [s.d.]. Disponível em: https://www.youtube.com/user/18km.  Acesso em: 9 maio 2020.

Referências

ARANTES, J. S. Livro: Linguagem Orientada a Objetos. Github, 2020. Disponível em: https://bit.ly/3eiUMcF . Acesso em: 9 maio 2020.

CHANNEL GREENFOOT. Página inicial. Youtube, [s.d.]. Disponível em: https://bit.ly/2Ov8E9f . Acesso em: 9 maio 2020.

FREESOUND. Página inicial. Freesound, 2020. Disponível em: https://bit.ly/308vOrD . Acesso em: 8 maio 2020.

GREENFOOT. 33 Seconds. Greenfoot scenarios, 26 jun. 2019. Disponível em: https://bit.ly/30cV7Zp . Acesso em: 10 maio 2020.

GREENFOOT. Account. Greenfoot, [s.d.]c. Disponível em: https://bit.ly/38To6Wk . Acesso em: 10 maio 2020.

GREENFOOT. Animação Simples – Peixe. Greenfoot scenarios, 10 maio 2020a. Disponível em: https://bit.ly/38TXgx8 . Acesso em: 10 maio 2020.

GREENFOOT. Animação Simples – Peixes. Greenfoot scenarios, 10 maio 2020f. Disponível em: https://bit.ly/32oae5j . Acesso em: 10 maio 2020.

GREENFOOT. Basic 3x3 Cube. Greenfoot scenarios, 16 mar. 2020b. Disponível em: https://bit.ly/2Czs36m . Acesso em: 10 maio 2020.

GREENFOOT. ChessWorld. Greenfoot scenarios, 7 maio 2011. Disponível em: https://bit.ly/3j0fUIl . Acesso em: 10 maio 2020.

GREENFOOT. Dawn of War 2. Greenfoot scenarios, 10 maio 2020e. Disponível em: https://bit.ly/2ZrXkRz . Acesso em: 10 maio 2020.

GREENFOOT. Memory Tester. Greenfoot scenarios, 15 fev. 2014. Disponível em: https://bit.ly/2CBhlMA . Acesso em: 10 maio 2020.

GREENFOOT. Mundo Subaquático – v1. Greenfoot scenarios, 14 maio 2020g. Disponível em: https://bit.ly/2OrbVXq . Acesso em: 14 maio 2020. 

GREENFOOT. Mundo Subaquático – v2. Greenfoot scenarios, 14 maio 2020h. Disponível em: https://bit.ly/2ZvsvvD . Acesso em: 14 maio 2020. 

GREENFOOT. Package greenfoot. Greenfoot Javadoc, [s.d.]b. Disponível em: https://bit.ly/2OoVBX5 . Acesso em: 10 maio 2020.

GREENFOOT. Página inicial. [S.d.]a. Disponível em: https://bit.ly/2OlAx3E . Acesso em: 7 maio 2020.

REENFOOT. Roadkill. Greenfoot scenarios, 27 fev. 2020c. Disponível em: https://bit.ly/2ZqWCnK . Acesso em: 10 maio 2020.

GREENFOOT. Scenarios. Greenfoot, [s.d.]b. Disponível em: https://bit.ly/38TucWL . Acesso em: 10 maio 2020.

GREENFOOT. Simulação RATM. Greenfoot scenarios, 14 maio 2020i. Disponível em: https://bit.ly/305su0m . Acesso em: 14 maio 2020.

GREENFOOT. World War 3. Greenfoot scenarios, 21 jan. 2020d. Disponível em: https://bit.ly/3fGO6XH . Acesso em: 10 maio 2020.

OPENGAMEART. Página inicial. [S.d.]. Disponível em: https://bit.ly/2Wfz0R2 . Acesso em: 8 maio 2020.

ORACLE. Java SE Downloads. Oracle, 2020. Disponível em: https://bit.ly/3iKLytv . Acesso em: 5 maio 2020.

Bons estudos!

AVALIE ESTE MATERIAL

OBRIGADO PELO SEU FEEDBACK!