Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação para jogos 2D Unidade 1 - Orientação a objetos Autor: Vanessa Pereira do Nascimento Revisor técnico: Renato Medeiros Iniciar Introdução Como programar um jogo 2D e qual linguagem de programação escolher? Qual software pode ser utilizado para desenvolver essa habilidade e poder aplicá-la no mercado de trabalho? Como aprender programação de jogos sem deixar de lado a importância do jogo 2D como peça interativa multimídia? Essas perguntas serão respondidas durante seus estudos, nesta disciplina. A programação para jogos 2D aborda o desenvolvimento de jogos em ambientes compostos por duas dimensões, incluindo o trabalho com algoritmos e sua relação com os elementos audiovisuais que compõem um jogo. Durante as aulas, você entrará em contato com as possibilidades de movimentação de personagens, simulação física, inteligência arti�cial e de interatividade nos games . Para o desenvolvimento de suas habilidades em programação, utilizaremos este software popular e pro�ssional: a Unity . Gratuito para aprendizagem e para desenvolvedores independentes, esse programa é uma game engine , isto é, o chamado motor de jogo, software que oferece diversas funcionalidades, com o objetivo de guiar o desenvolvimento de jogos digitais. Através de exercícios práticos, que incluem a criação de três projetos de jogos, durante esta disciplina, você poderá exercitar sua criatividade, enquanto aprende sobre os conceitos de programação e as especi�cidades de se programar um jogo 2D. Além da apresentação da ferramenta computacional descrita anteriormente, nesta primeira unidade, serão abordados os conceitos e a de�nição da Programação Orientada a Objetos. Esse paradigma de programação será exempli�cado, enquanto seus principais conceitos (classe, objeto, herança, encapsulamento e polimor�smo) são apresentados. Prepare-se para dar forma a suas ideias de jogos 2D. Vamos partir de interações básicas, para que ao �nal da disciplina você tenha desenvolvido a capacidade de programar novos ambientes interativos. Bons estudos! Além da apresentação da ferramenta computacional descrita anteriormente, nesta primeira unidade, serão abordados os conceitos e a de�nição da Programação Orientada a Objetos. Esse paradigma de programação será exempli�cado, enquanto seus principais conceitos (classe, objeto, herança, encapsulamento e polimor�smo) são apresentados. Prepare-se para dar forma a suas ideias de jogos 2D. Vamos partir de interações básicas, para que ao �nal da disciplina você tenha desenvolvido a capacidade de programar novos ambientes interativos. Bons estudos! 1. Orientação a objetos A Programação Orientada a Objetos (POO), também chamada de Orientação a Objetos (OO), é um dos paradigmas de programação existentes, isto é, é um dos modos de se programar. Por paradigma, consideramos uma padronização, e a OO é uma das mais utilizadas no mercado. Desenvolvido durante a década de 1960, esse estilo de programação tem como foco principal a aproximação entre a linguagem utilizada, em um programa computacional, com aquela que utilizamos para descrever as coisas no mundo físico. É por esse motivo que a palavra objeto nomeia esse paradigma, já que um objeto representa aqui qualquer coisa que apresente características e comportamentos. Em uma POO os dados, no caso os objetos, direcionam a programação, ao invés das ações. Para exempli�car, imagine um sistema de e-commerce, o comércio eletrônico. Para programar o sistema de uma determinada loja on-line podemos de�nir as seguintes ações: exibir produto, adicionar ao carrinho de compras, cadastrar usuário, cadastrar endereço de entrega, fazer check-out , dentre outras. Ao optar por uma linguagem de programação que possibilita a OO, podemos programar o mesmo sistema com foco nos dados, em seus objetos, que seriam: o produto, o usuário (e uma de suas características seria seu endereço), o pedido.É devido a essa organização, focada em objetos que interagem entre si, que a OO é um paradigma muito utilizado para a programação de jogos. A interação entre diferentes objetos é parte essencial de um jogo. A possibilidade de programar um jogo com esse foco, facilita não somente a organização do projeto, mas também a criação do código. Além disso, muitos softwares de desenvolvimento de jogos apresentam scripts , o código, com suporte a POO. Durante esta unidade, serão apresentados os principais conceitos da Orientação a Objetos, que são: classe, objeto, herança, encapsulamento e polimor�smo. Após o entendimento desses conceitos, por meio de exempli�cações nos universos dos games, iniciaremos os exercícios práticos no software Unity, que será apresentado a seguir. 1.1 Unity Game engine (em português, motor de jogo) é um software voltado ao desenvolvimento de jogos digitais, também chamados apenas de games . Esse tipo de programa computacional reúne diversas funcionalidades presentes em jogos 2D ou 3D, sendo as principais: Simulação física; Suporte a conteúdos multimídia; Renderização de grá�cos; Implementação de inteligência arti�cial; Gerenciamento de arquivos; Linguagem de programação que suporta scripts (o que automatiza a execução de tarefas). Lançado em 2005, pela empresa Unity Technologies, a Unity é uma das engines mais utilizadas, atualmente, na indústria de games . Títulos de destaque, como Pokémon GO, Hearthstone : Heroes of Warcraft, Monument Valley e Cuphead , por exemplo, foram desenvolvidos nessa game engine . A versão gratuita da Unity pode ser utilizada por desenvolvedores, instituições educacionais e estúdios independentes que faturam até um determinado valor. Para empresas com maiores lucros, é necessário adquirir uma das licenças pagas da Unity . Essas informações podem ser acessadas na loja do site o�cial, no endereço: < store.unity.com >. Com ambiente para desenvolvimento de jogos em 2D ou 3D, a Unity apresenta ainda outras funcionalidades de destaque como: software multiplataforma; extensa documentação o�cial; comunidade ativa de desenvolvedores; repositórios de conteúdo livre e fechamento de arquivos para diversas plataformas. Com essas características, a Unity torna-se uma ferramenta acessível também para estudantes, Você sabia Informações sobre a produção dos games desenvolvidos, na Unity , podem ser conferidas no mostruário o�cial, disponível em: < unity.com/madewith >. http://store.unity.com/ http://unity.com/madewith podendo ser instalada em diferentes sistemas operacionais e suas produções �nalizadas para consoles, computadores, dispositivos móveis e/ou internet. A linguagem de programação nativa da Unity é a C# (lê-se: C sharp ). Similar às linguagens Java e C++ (lê-se: C mais mais), a C# é multiparadigma, incluindo dentre eles, a Orientação a Objetos. Na Unity , o controle dos objetos de um jogo pode ser feito por meio de scripts , isto é, trechos de código que permitem a modi�cação de comportamentos, a manipulação de eventos e as interações do jogador. Um script também pode criar efeitos grá�cos, controlar a simulação física e a inteligência arti�cial, presente no game. A utilização de scripts, em exemplos práticos, será abordada mais adiante, ainda nesta unidade. 1.1.1 Instalação Antes de utilizar a Unity , é fundamental entender como se dá seu processo de instalação. Ao contrário de muitos programas, para baixar esse software , é necessário primeiro instalar o Unity Hub , que é um gerenciador das versões, licenças, módulos, contas de usuário e projetos criados. Esse programa pode ser baixado pelo link: < store.unity.com/download >. Após a instalação do Hub, você poderá escolher quais versões da Unity deseja instalar, além da última versão instável. Isso acontece porque essa é uma engine que, constantemente, é atualizada, o que garante uma melhor experiência para o desenvolvedor. Devido a essas atualizações, um projeto precisa ser editado na mesma versão em que foi criado, ainda que seja uma versão anterior do programa. Portanto, é comum umamáquina manter instaladas várias versões do software . Ainda no ambiente do Hub , você poderá criar uma Unity ID , que é uma identi�cação de usuário que permite compartilhar projetos, acessar a comunidade de desenvolvedores e acessar os cursos da plataforma. Parte dos tutoriais o�ciais podem ser acessados diretamente no editor, como é chamado o ambiente dessa engine . Para acessá-los, siga as orientações do próximo tópico. 1.1.2 Interface http://store.unity.com/download Através do Hub da Unity , temos acesso a área de aprendizagem (também disponível no site o�cial). Ao clicar na opção “ Learn ”, podemos seguir os tutoriais embutidos em templates , que são modelos de projetos que podem ser modi�cados. Nas opções de microgames , que são projetos menores, temos um template 2D do tipo jogo de plataforma. Para acessar esse tutorial de apresentação do software , clique em “ Platformer Microgame ” e faça o download desse projeto. Pode ser que, para abri-lo, você precise baixar outra versão do editor, isso poderá ser feito na opção “ Installs” do Hub . A primeira vez que a Unity é aberta são carregados mais arquivos de sistema, por esse motivo o processo é mais demorado. No tutorial embutido no projeto “ Platformer Microgame ”, temos acesso a um guia rápido que abrange da modi�cação de um objeto ao compartilhamento do jogo �nalizado. Figura 1 - Interface da Unity. Fonte: Elaborado pela autora. 2020 Independentemente de você seguir esse tutorial, no momento apenas observe as janelas, ou painéis, do software . Como em diversos programas, podemos ver uma barra de menu, contendo opções comuns como Arquivo ( File ), Janela ( Window ) e Ajuda ( Help ), além de outras opções especí�cas dessa engine . Logo abaixo, aparece a barra de ferramentas, a Toolbar . Nessa barra, �cam disponíveis ferramentas para manipular os objetos e navegar pela cena, como é chamada a área para inserção dos elementos do jogo. A Toolbar também exibe controles para teste de jogabilidade, como play e pause , além de outras opções. Abaixo da barra de ferramentas, está localizada a janela Hierarquia ( Hierarchy ), que exibe a árvore do projeto, elencando todos os objetos da cena. Ao lado dessa janela, aparece a Cena ( Scene ), o ambiente para edição do projeto. A janela Game aparece oculta, podendo ser acessada ao clicar na aba de mesmo nome, ao lado da aba Scene . Nessa janela, podemos ver como o jogo �cará após �nalizado. O inspetor de propriedades ( Inspector ) é disposto em uma janela ao lado da Scene e oferece um menu contextual, isto é, seu conteúdo se modi�ca de acordo com o objeto selecionado na cena. O último painel mais utilizado no software , e localizado na base da tela, é o de projeto ( Project ). Nessa janela, temos acesso a biblioteca de assets , que são os itens disponíveis para utilização no projeto. Por �m, vemos a janela Tutorials, localizada à direita da tela. Para seguir os tutoriais disponíveis para o projeto aberto, o “ Platformer Microgame ”, basta clicar em uma das opções desse painel. É importante ressaltar que a interface da Unity pode ser customizada, de acordo com o projeto, além de oferecer diversos outros painéis que facilitam o trabalho do desenvolvedor. 2. Classes e objetos Para que uma programação seja otimizada, é necessário que seja escrita de acordo com os conceitos da linguagem escolhida. Isso signi�ca que, não basta utilizar uma linguagem de programação que suporte Orientação a Objetos, o código precisa ser escrito de acordo com a POO. Como muitas linguagens são multiparadigmas, isto é, podem ser codi�cadas de diferentes maneiras, pode haver confusão entre qual paradigma de programação está sendo seguido. Os dois paradigmas mais utilizados na programação de jogos são: Orientação a Objetos e Programação Estruturada. A Programação Estruturada utiliza comandos em uma determinada sequência. Nesse modelo, existe um �uxo único do programa que relaciona diferentes condições e repetições de código. Lembre-se do exemplo dado na primeira aula desta unidade: um e-commerce. Naquele exemplo, a programação que enfatiza as ações do sistema é a Programação Estruturada. Como vimos, a Programação Orientada a Objetos pode ser mais facilmente aplicada ao desenvolvimento de games , por isso foi escolhida para esta disciplina. Para programar de acordo com a Orientação a Objetos é necessário, portanto, conhecer seus conceitos. Como base deste paradigma, existem dois conceitos que se relacionam a todos os demais: classes e objetos. Uma classe é de�nida como um conjunto de objetos, essa unidade se dá por características e comportamentos em comum. Como em OO um objeto é uma representação de qualquer coisa, o escopo do que é uma classe varia de acordo com outro conceito relacionado: a abstração. A partir da abstração, podemos criar representações de elementos do mundo físico, observando determinadas características e comportamentos. Para facilitar o entendimento, vamos imaginar um jogo do tipo plataforma. No projeto de jogo que abrimos, no início desta disciplina, por exemplo, há inimigos, um jogador e peças coletáveis. Nesse ambiente, podemos indicar que essas três categorias observadas representam três classes distintas de objetos. Isso signi�ca que a classe de inimigos, reúne objetos (nesse caso cada indivíduo), com características e comportamentos em comum, assim como a classe de peças coletáveis. Veja, é possível que tais objetos se diferenciem entre eles, mas sua base, seu molde, permanece o mesmo. Ainda que a classe jogador tenha somente um objeto, ela continua existindo, pois caso contrário não seria possível a construção de um objeto do tipo jogador. A classe, portanto, não tem um “corpo”, apenas se materializa por meio da criação de objetos. As características de uma classe são chamadas de atributos e os comportamentos são os métodos. Os atributos estão associados ao exercício de abstração, feito durante a criação da classe, isto é, podem ser mais ou menos especí�cos, criados em maior ou menor quantidade. Voltando ao exemplo do jogo de plataforma, a classe “inimigos” pode apresentar os seguintes atributos: cor, tamanho e velocidade. Nesse caso, cada objeto inimigo, inserido na cena, pode apresentar diferentes possibilidades dessas três características. Cada um dos valores desses atributos são chamados de estados. A mesma classe “inimigos” poderia, por exemplo, apresentar atributos para força de ataque e barra de energia. Dessa maneira, teríamos duas características a mais nos objetos dessa classe. Os comportamentos de uma classe, os métodos, se referem às ações de�nidas durante o exercício de abstração. Os objetos inimigos possuem o atributo velocidade, portanto, poderiam apresentar o comportamento atacar e/ou andar. Outros comportamentos possíveis seriam morrer, tocar um som e o que mais for necessário de ações no jogo. No próximo tópico, você poderá exercitar esses conceitos durante a escrita do nosso primeiro código em C#. 2.1 Scripts na Unity Para aplicar os conceitos apresentados até aqui, vamos iniciar um novo projeto na Unity . Antes de abrir o programa, é importante ressaltar que a escrita de scripts nessa engine é feita em um editor externo, em uma IDE, do inglês, integrated development environment, um ambiente integrado de desenvolvimento. Por padrão nos sistemas operacionais macOS e Windows , a Unity �ca integrada com a IDE Visual Studio . Esse programa é gratuito para uso pessoal, sendo necessário assinar no caso de empresas, independentemente, de seu porte. Caso não tenha instalado, o Visual Studio na sua versão gratuita ( Community ) pode ser baixado no link: < visualstudio.microsoft.com >. Para iniciarmos abra o Unity Hub e escolha a opção projetos ( Projects ). Clique no botão novo ( New ) e escolha um template 2D. Renomeie o arquivo e escolha o diretório para salvá-lo nas opções que aparecem à direita. Ao clicar em criar ( Create ) a Unity abrirá o novo projeto, como mencionado anteriormente,nessa primeira vez que o projeto é aberto, o processo é mais demorado. Você pode observar que a interface está muito parecida com a que acessamos no início da disciplina. Veja que a janela da cena está maior e a janela de tutoriais não está aberta. Essa organização de painéis é a padrão para o template que foi escolhido, mas pode ser customizada. Assim como muitas game engines , a Unity trabalha com assets , isto é, elementos que podem ser inseridos no projeto. Assets são quaisquer itens que podem ser adicionados ao jogo, como por exemplo, imagens, áudios, scripts , dentre outros. http://visualstudio.microsoft.com/ Para que um script seja lido ele precisa estar associado a algum objeto inserido na cena. Para começar, vamos adicionar um novo asset do tipo sprite , que é um grá�co 2D. Clique na opção do menu Assets > Create > Sprites > Square . Observe que um novo asset foi adicionado ao painel de projeto. Renomeie o item para “Jogador”. Nesse momento, Jogador é um elemento que pode ser utilizado no projeto, mas ainda não é um objeto inserido na cena. Para que isso aconteça, clique e arraste esse asset para a cena. Observe que no painel de hierarquia, onde aparecia apenas o objeto câmera ( Main Camera ), exibe agora o objeto Jogador. 2.1.1 Estrutura básica do script Agora que há um objeto em cena, temos a possibilidade de criar seus comportamentos, os métodos, por meio de scripts . Clique na opção do menu Assets > Create > C# Script . Renomeie esse script para “Jogador”. Ao clicar uma vez no script você poderá ver suas propriedades na janela inspetor. No topo desse painel há a opção para abri-lo ( Open ). Por padrão, a Unity deve abrir esse novo script no software Visual Studio . Caso isso não aconteça, con�gure as preferências do programa no menu: Edit > Preferences > External Tools > External Script Editor . Nesse campo, você deverá escolher a opção Visual Studio . Figura 2 - Os assets do projeto. Fonte: Elaborado pela autora. 2020 Conforme pode ser observado na �gura 3, um novo script já apresenta uma estrutura básica. Nas linhas 1, 2 e 3 do código vemos as especi�cações do C# para a utilização na Unity . Na linha 5, aparece a de�nição da classe desse script , observe que o nome da classe é o mesmo do script . Antes da palavra class (classe) temos a de�nição public (pública), indicando como essa classe poderá ser acessada no projeto. Esse detalhe será abordado mais adiante ainda nesta unidade. A palavra MonoBehaviour aparece ao �nal da linha, indicando que esta é a classe base dos scripts da Unity . Isso signi�ca que cada classe criada na Unity poderá acessar determinados métodos. As linhas 7 e 13 iniciam com duas barras (//), o que indica que são comentários, textos inseridos que não interferem na leitura do código. Esses comentários estão informando a funcionalidade dos dois métodos apresentados nessa estrutura básica: Start e Update . Nesse modelo, o método Start �naliza na linha 11. Ele é responsável por indicar as ações que serão executadas no momento que o objeto for criado, durante a execução do código. Em um método, as ações são inseridas entre as chaves, e seus parâmetros, caso existam, devem �car entre os parênteses. Já o método Update abrange as ações que são executadas a todo momento que o código estiver rodando, na mesma velocidade dos quadros por segundo que a performance do jogo permitir. Isso signi�ca que se o jogo estiver rodando a 60 quadros por segundo (60 fps, do inglês frames per second ) por exemplo, as ações descritas dentro do método Update acontecerão 60 vezes a cada segundo. A palavra void , presente antes de cada um dos métodos apresentados, indica que ambos não retornam nenhum valor. Durante esta disciplina, você entrará em contato com métodos que retornam determinados valores. 2.1.2 Olá, mundo! Por enquanto, vamos adicionar apenas uma linha de código para vê-lo, sendo executado quando iniciarmos nosso jogo. Esse exercício é muito comum ao aprendermos uma linguagem de programação: o “Olá, mundo!”. Entre as duas chaves do método Start , escreva o mesmo código que aparece na �gura 3, localizado na linha 10. Figura 3 - Estrutura básica de um script. Fonte: elaborado pela autora. 2020 A classe Debug facilita a depuração do código, isto é, a identi�cação de erros. Através do seu método Log, podemos exibir alguma mensagem no painel Console da Unity . Ele �ca localizado na mesma área da janela Project , mas na aba de mesmo nome. Veja que a classe Debug não foi criada em nosso código. Ela já é uma classe da engine, o que �zemos foi apenas criar um objeto dessa classe, que apresenta o comportamento de exibir uma mensagem (o método Log ) com um argumento (o texto “ Hello World ”). O ponto e vírgula, no �nal da linha, indica que essa a�rmação já foi concluída e deve ser colocado. Salve o código em Arquivo > Salvar e volte para o ambiente da Unity . No momento nosso código não será lido, pois não foi associado a nenhum objeto em cena. Clique e arraste o script da área de assets para cima do objeto no painel hierarquia. Agora, clique no objeto jogador, localizado na cena, e veri�que que dentre seus componentes na janela inspetor, aparece o script criado. Abra a janela Console , clicando na aba de mesmo nome, e na barra de ferramentas, clique em Play . Você deve ter visualizado o texto “Olá, mundo!”. Observe que ele só aparece uma vez, pois foi colocado dentro do método Start . Se tivesse sido colocado dentro do método Update apareceria diversas vezes por segundo. Figura 4 - Script sendo executado. Fonte: Elaborado pela autora. 2020 Por enquanto, nosso objeto colocado em cena não pode ser controlado. Ele apresenta apenas a função de exibir “Olá, mundo!”, para o desenvolvedor, quando o jogo é iniciado. Antes de continuar o desenvolvimento do projeto, no próximo tópico você entrará em contato com mais conceitos fundamentais de POO. Você quer ver A Unity oferece gratuitamente um ambiente de aprendizagem em seu site o�cial. Para acessar mais conteúdos, é possível ainda assinar o serviço premium . Os tutoriais, projetos de exemplo e cursos podem ser feitos e seu progresso salvo em sua Unity ID . Acesse as videoaulas, no endereço: < learn.unity.com >. http://learn.unity.com/ 3. Construtores e herança Um objeto pode apresentar variações nos atributos e métodos de sua classe, mas �ca limitado ao que a classe oferece de possibilidades. Dessa maneira, as características e comportamentos de um objeto �cam limitados à classe, a qual ele pertence. Caso a abstração do programa relacione um mesmo objeto a diferentes classes, deve ser criada uma subclasse, que apresenta atributos e métodos de ambas as classes de que é derivada. Em uma classe inimigo, por exemplo, podemos criar uma subdivisão, ou subclasse, chamada boss (chefe). A classe boss herdará, assim, os atributos e métodos da classe inimigo, mas ela poderá acrescentar mais possibilidades, como é comum em diversos games que diferenciam os inimigos de uma fase daquele que será enfrentado ao �nal do percurso. Nesse exemplo, a classe inimigo é “mãe” da classe boss , respectivamente, identi�cada como sua “�lha”. Essa relação, entre as classes, é chamada de herança. Outro importante conceito da POO. Uma herança simples acontece quando uma classe herda de outra e uma herança múltipla, quando uma classe herda de outras duas, somando seus atributos e métodos. É importante ressaltar que apesar de esse ser um conceito da OO, a linguagem C# apenas permite a criação de herança simples. Caso o projeto necessite de uma abstração semelhante àquela que a herança múltipla oferece, é possível trabalhar com uma interface . Esse conceito será abordado mais adiante, durante os estudos desta disciplina. Ao criar um objeto da classe boss , podemos indicar quais valores de atributos e métodos ele vai apresentar no momento de sua criação. A determinação de valores por padrão, logo na criação de um objeto é possibilitada pela utilização de um construtor,outro importante conceito da POO. Construtores são métodos que podem ou não ser criados em uma classe, mas se existirem, apenas um deles pode ser chamado, durante a inicialização do objeto. Esse método, ainda que não obrigatório, é importante para a de�nição de uma classe quando é necessário iniciar um valor ou ativar um outro método antes da construção do objeto. Um construtor tem, necessariamente, o mesmo nome de sua classe, e uma classe pode apresentar diversos construtores. Em nosso exemplo, a classe inimigo pode, por exemplo, apresentar um construtor que de�ne uma velocidade padrão para seus objetos e um outro construtor que de�ne uma velocidade especial, que poderá ser chamada pela nossa classe boss , no momento de criação de uma instância, isto é, na criação de seu objeto. 4. Encapsulamento e polimorfismo Outro importante conceito da POO é o Encapsulamento. Em OO, dados podem ser manipulados, de acordo com seu encapsulamento, que correspondem a seus modi�cadores de acesso. Os dados que podem ser encapsulados são os atributos e métodos de uma classe. Os três tipos de encapsulamento são: público, privado e protegido. O tipo público permite que os dados, ali inseridos, sejam acessados no painel inspetor de propriedades tanto pela classe base, a classe mãe, como pelas suas derivadas, as �lhas. Um encapsulamento desse tipo pode ser utilizado, por exemplo, para um atributo velocidade. Dessa maneira será possível alterar o valor da velocidade na própria interface da Unity , sem a necessidade de editá-lo diretamente no código. Será possível também con�gurar diferentes velocidades para cada instância dessa classe, ou seja, para cada um de seus objetos. Dados públicos podem ser acessados por quaisquer classes do projeto, sejam classes base ou derivadas. Caso esse acesso não deva estar disponível, para evitar erros de desenvolvimento ou porque não será utilizado fora do script original, o encapsulamento desse mesmo atributo poderá ser con�gurado como do tipo privado. O modi�cador de acesso privado é o tipo padrão da Unity . Quando um dado é do tipo privado ele não pode ser acessado no inspetor de propriedades e só existe na classe em que foi criado, não podendo ser modi�cado pelas classes derivadas. O terceiro tipo de encapsulamento é o protegido. Nesse tipo de modi�cador de acesso, os dados somente podem ser acessados pela classe base e suas descendentes, sendo compartilhado por toda sua hierarquia. A de�nição do encapsulamento, para atributos e métodos de uma classe, serve para proteger todos os dados que não precisam ser públicos em seu código. O último conceito a ser abordado, nesta unidade, é o Polimor�smo, que diz respeito às diferentes maneiras que uma tarefa pode ser realizada. Isso possibilita que um mesmo método da classe base seja implementado em objetos de classes derivadas e diferentes. Continuando nosso exemplo do tópico anterior, a classe inimigo poderá apresentar um método para tocar um efeito sonoro especí�co. A subclasse boss poderá, graças ao polimor�smo, utilizar o mesmo método para tocar um efeito sonoro diferente. Isso acontece porque o polimor�smo permite substituir as ações do método original. A utilização desse conceito na prática possibilita o reaproveitamento de código, já que não é preciso criar vários métodos, e eles podem ser alterados diretamente na classe. Veja que, em nosso exemplo, a classe boss aproveita o método da classe inimigo, ainda que o implemente de maneira diferente. Os conceitos de encapsulamento e polimor�smo poderão ser melhor �xados após sua utilização em um projeto de jogo. A partir da próxima unidade, iniciaremos um projeto de jogo que aplicará todos os conceitos estudados até aqui. Você quer ler O livro Lógica de Programação, do autor Gley Fabiano Cardoso Xavier, é indicado para relembrar ou aprender conceitos de programação úteis ao seu desenvolvimento nesta disciplina. Síntese A Orientação a Objetos é muito utilizada para a programação de jogos 2D. Ao contrário da Programação Estruturada, a OO permite que o código seja escrito com foco nos objetos que interagem em uma game . Dentro da game engine Unity , vimos que é possível utilizar a linguagem de programação C# para a criação de scripts , adicionando assim comportamentos a seus objetos. A vantagem de aprender a programar jogos 2D, diretamente em uma engine , como a Unity , é a possibilidade de exercitar os conceitos abordados, facilitando a �xação do conteúdo enquanto atualiza seus conhecimentos voltados ao mercado de trabalho. Apesar de termos explorado o software apenas para conhecer a estrutura de seus scripts , esse conhecimento será essencial para o acompanhamento das demais aulas desta disciplina. A partir da próxima aula, iniciaremos ao menos um projeto de jogo por unidade, o que permitirá a aplicação de cada um dos conceitos que foram abordados até aqui. Durante esta unidade, você entrou em contato com os seguintes tópicos: • Comparação dos paradigmas de Programação Estruturada e OO; • Conceitos da Programação Orientada a Objetos; Classes; Objetos; Construtor; Herança; Encapsulamento; Polimor�smo. • Instalação, interface e características da game engine Unity ; • Estrutura básica e criação de um script em C#. Download do PDF da unidade Bibliografia XAVIER, Gley Fabiano Cardoso. Lógica de Programação . São Paulo: Editora Senac São Paulo, 2011. (Documentação da Unity). Disponível em: https://docs.unity3d.com . Acesso em 25/03/2020. Referências Imagéticas: Figura 1 a 4: Cópias de tela produzidas pela própria redatora. https://docs.unity3d.com/
Compartilhar