• Nenhum resultado encontrado

DESENVOLVIMENTO DE JOGOS MULTIPLATAFORMA NA LINGUAGEM LUA UTILIZANDO A FERRAMENTA CORONA SDK

N/A
N/A
Protected

Academic year: 2021

Share "DESENVOLVIMENTO DE JOGOS MULTIPLATAFORMA NA LINGUAGEM LUA UTILIZANDO A FERRAMENTA CORONA SDK"

Copied!
19
0
0

Texto

(1)

1

DESENVOLVIMENTO DE JOGOS MULTIPLATAFORMA NA LINGUAGEM LUA UTILIZANDO A FERRAMENTA CORONA SDK

José Wellison Silva de Souza

Bacharelando em Sistemas de Informação – Instituto Federal de Alagoas (IFAL) http://lattes.cnpq.br/3118373209560972

wellison.maceio@gmail.com Márcio Robério da Costa Ferro

Analista de Tecnologia da Informação - Instituto Federal de Alagoas (IFAL) http://lattes.cnpq.br/2480382178623363

mrcferro@gmail.com

RESUMO

A utilização da linguagem Lua tem crescido nos últimos anos por fornecer recursos de criação de scripts que podem ser compatíveis entre várias plataformas de dispositivos móveis. Este trabalho tem por objetivo apresentar a utilização dessa linguagem, além do Corona SDK, utilizado para desenvolver jogos multiplataformas de alta performance. Será abordada a criação de um jogo, com recursos disponíveis no Corona SDK, para ser executado em plataforma Android e IOS, possibilitando que desenvolvedores tenham um conhecimento do potencial dessas tecnologias

Palavras-chave: Desenvolvimento de Jogos; Lua, Corona SDK.

ABSTRACT

The use of Lua has grown in recent years by providing resources for creating scripts that can be compatible with various mobile device platforms. This paper present the use of this language, besides using the Corona SDK, used to develop high performance multiplatform games. The creation of a game will be addressed with available resources in Corona SDK to run on Android and iOS platform, enabling developers to have an understanding of the potential of these technologies.

(2)

2 1. Introdução

O desenvolvimento para plataformas móveis está em alta nos últimos anos. As marcas iOS e o Android praticamente dominam o mercado de smartphones. Segundo um estudo realizado pela IDC1 as duas marcas alcançaram 87,6% do mercado mobile de 2012. Portanto, é importante utilizar uma ferramenta que possam integrar as novas aplicações com diversas plataformas, reduzindo o tempo de produção.

No desenvolvimento de jogos o cenário não é diferente. Há a necessidade de criar softwares que atendam a um máximo de dispositivos possíveis, em suas diversas plataformas, surgindo a necessidade de escolher ferramentas quer permitam tornar o jogo compatível entre várias plataformas, como por exemplo, Android e IOS.

Muitos desenvolvedores adotam atualmente a linguagem Lua para desenvolvimento de aplicativos para dispositivos móveis, devido à sua eficiência, clareza e facilidade de aprendizado. Trata-se de uma linguagem criada pela PUC, em 1993, bem conhecida no cenário internacional de desenvolvimento de jogos. Com essa linguagem são criados scripts que são utilizados em conjunto com ferramentas de desenvolvimento, tornando possível a integração com diversas plataformas.

Lua é bastante utilizada no desenvolvimento de jogos. Fazendo a sua integração com ferramentas de desenvolvimento, tal como Corona SDK, é possível ter ganhos de produtividade de tornar o jogo compatível com várias plataformas. Corona SDK é definida como um kit de desenvolvimento de software que utiliza a linguagem de programação Lua para o desenvolvimento de jogos e aplicativos para dispositivos móveis (CORONA, 2014).

Diante desse cenário, pretende-se apresentar neste trabalho a utilização do kit Corona SDK, abordando conceitos e técnicas utilizadas com a linguagem Lua, para o desenvolvimento de jogos para dispositivos móveis, que está organizado da seguinte forma: na seção 2 são apresentadas algumas características de Lua, com informações extraídas da documentação oficial da linguagem (LUA, 2014); na seção 3 é apresentado o ambiente de desenvolvimento Corona SDK; na seção 4 são apresentadas algumas ferramentas; na seção 5 é apresentado um estudo de caso, correspondente a criação de um jogo.

2. Linguagem Lua

Lua é uma linguagem de programação utilizada por vários desenvolvedores de aplicativos e jogos, por ser poderosa, rápida e leve (LUA, 2014). Trata-se de uma linguagem

(3)

3 criada pela Pontífica Universidade Católica (PUC) em 1993, advindo da necessidade de desenvolver softwares que fossem capazes de serem configurados em tempo de execução. Ela foi desenvolvida inicialmente para ser utilizada em um projeto da Petrobras, mas ganhou importância em diversos ramos da programação, principalmente na área de desenvolvimento de jogos. A linguagem assemelha-se com Python em sua sintaxe e semântica, além de possuir como característica a facilidade de aprendizagem. Sua disponibilização para o público ocorreu na versão 1.1 em 1994, já que a primeira versão foi utilizada para uso interno, e em 1998 foi lançada a versão 3.1, que implementava conceitos de orientação a objetos. Atualmente a linguagem está na versão 5.2.3.

Entre as características de Lua, podem ser destacadas: variáveis não tipadas, variáveis são globais por padrão, existência de oito tipos de valores de variáveis, funções são reconhecidas como variáveis, além possuir estruturas de decisão e repetição, assim como em outras linguagens de programação.

As variáveis não tem tipos associados a elas, dessa forma os tipos são associados aos valores armazenados na variável. Isso quer dizer que em uma mesma variável pode ser armazenado um valor de um tipo e posteriormente armazenar um valor de outro tipo. A figura 01 ilustra o uso de armazenamento de variáveis, além de apresentar também o uso de comentários, que é feito com a inserção dos caracteres “--”.

Figura 01 - Exemplo ilustrando a utilização de variáveis

Quanto ao escopo, as variáveis podem ser locais ou globais. No padrão de escopo da variável é global, a mesma pode ser acessada em qualquer parte do código, já no escopo local só pode ser acessado em determinada parte do código. Um exemplo de utilização de escopo de variável pode ser visto na figura 02, que apresenta na linha 1 a definição de uma variável chamada “variavel”, possuindo como valor o texto “variavel global”, e uma função chamada “testarEscorpo”:

Figura 02 - Exemplo de utilização de escopo de variáveis

Ao ser executada, a função “testarEscorpo” faz a impressão do texto “variavel global” e em seguida, na linha 4, cria uma variável local que possui o valor “variavel local”

(4)

4 armazenado. Com isso, posteriormente esse valor impresso logo na linha seguinte. A variável local criada na linha 4 é reconhecida apenas na função, enquanto a variável criada na linha 1 permanece inalterada, desde que seja utilizada fora da função “testarEscorpo”.

Caso a linha 1 da figura 02 fosse retirada, a execução do código resultaria na impressão de “nil”, correspondente à execução da linha 3, e em seguida “variavel local”, corresponde à execução da linha 4. O valor “nil” refere-se à impressão de uma informação nula, ou seja, a variável “variável” não existe.

As variáveis em Lua podem apresentar os seguintes tipos de dado:

● Nil - correspondente a nulo em outras linguagens, ou seja, a variável não existe ou não possui valor;

● Boolean - tipo lógico que pode possuir os valores false ou true;

● Number - representa números reais, de ponto flutuante de precisão dupla;

● String - armazena cadeias de caracteres, onde cada caractere pode possuir 8 bits. ● table - coleção de dados, ou seja, array;

● function - função escrita em Lua ou escrita em C e registrada em Lua; ● userdata - dado do host, representado por um ponteiro void*;

● thread - permite a execução de subprocessos em paralelo.

Com relação as funções, também existe o escopo local e global, visto que a função é uma variável. Porém, o retorno da função por padrão é o valor “nil”, podendo variar, dependendo do tipo de valor no qual a função retorna. Na figura 03, é apresentada uma função de escopo global que não retorna nenhum valor, ou seja, seu retorno é nil.

Figura 03 - Exemplo de função global

Já o código da figura 04 apresenta uma função de escopo local, que é acessível apenas no próprio arquivo de código, a qual recebe um parâmetro chamado “variavel”. Essa função retorna um valor na linha 2, sendo executada logo após, na linha 5. Dessa forma, o valor da variável “valor_dobrado” será 10, visto que é o resultado da multiplicação de 5, correspondente ao valor passado em parâmetro na linha 5, multiplicado por 2, multiplicação essa realizada na linha 2.

(5)

5

Figura 04 - Exemplo de função local

Lua possui 4 estruturas de controle: if, while, repeat e for. A estrutura de decisão if (se) testa uma condição e executa um comando caso a condição seja verdadeira. Caso a condição não seja verdadeira, pode ser utilizado o elseif (senão se), que corresponde a uma nova condição do if, por fim se nenhuma condição for aceita o comando passa a ser executado no else (senão). A sintaxe dessa estrutura pode ser vista no código da figura 05:

Figura 05 - Exemplo da estrutura de controle if

Já as estruturas while, repeat e for são estruturas de repetição. A estrutura while executa um bloco de comandos até que a condição seja verdadeira, ou seja, o código é executado por diversas vezes até que a condição não seja satisfatória. A sintaxe pode ser visualizada no código da figura 06:

Figura 06 - Exemplo da estrutura de repetição while

A estrutura repeat se assemelha à estrutura while, mas possui com diferença o fato do teste ser realizado após a execução do bloco de comandos. Como consequência, essa característica garante que o bloco de comandos será executado pelo menos uma vez. A estrutura utilizando o mesmo exemplo da figura 06 pode ser visto na figura 07:

Figura 07 - Exemplo de estrutura de repetição repeat

E por fim a estrutura de repetição for é utilizada para executar um bloco de comandos, enquanto uma variável de controle varia de acordo com uma progressão aritmética. O mesmo exemplo anterior pode ser visto na figura 08, utilizando a estrutura for.

(6)

6

Figura 08 - Exemplo de estrutura de repetição for

Atualmente, Lua possui uma comunidade ativa de programadores, com listas de discussão onde várias pessoas interagem em todo o mundo. No cenário internacional a linguagem é bem conhecida e utilizada na criação de scripts, interagindo com outras plataformas.

3. Ambiente de Desenvolvimento

Apresentada uma parte da sintaxe da linguagem Lua, necessária para o desenvolvimento, a próxima etapa é a apresentação das ferramentas utilizadas para desenvolver os aplicativos. O Corona SDK é uma plataforma comercial de programas usados na criação de software com Lua, desenvolvido e mantido pela Corona Labs. Os planos da licença de uso de Corona SDK podem ser gratuito, para fins de teste, ou pago, com planos que possuem valores a partir de US$ 19 mensais. Para este trabalho foi utilizado o plano gratuito, que possui poucos recursos, mas que são suficientes para demonstrar alguns recursos interessantes. Essa versão pode ser instalada em computadores com sistema Windows ou Macintosh, sendo que a versão Windows não permite exportar o aplicativo para dispositivos IOS. A versão Windows apresenta como característica ainda a possibilidade de o desenvolvedor poder visualizar o aplicativo em um simulador chamando Corona Simulator. A tabela 01 apresenta os requisitos de sistema operacional necessários para desenvolver e instalar os aplicativos utilizando Corona SDK.

Tabela 01 - Matriz de Hardware necessário Fonte: docs.coronalabs.com

Não é necessário nenhuma IDE ou Editor de Texto específico para desenvolver aplicativos utilizando Corona SDK. Entretanto, será utilizado neste trabalho o editor SublimeText2, de fácil instalação, que possui pacotes específicos para desenvolver em Lua e Corona SDK, além de conter pacotes snippets3 , que permitem a inserção de estruturas prontas de código.

2 Editor de texto que possui versão gratuita disponível em: http://www.sublimetext.com/ 3 Snippets são blocos de códigos utilizados para agilizar o desenvolvimento.

(7)

7 3.1. Configuração do ambiente

A instalação do Corona SDK inicia-se com a criação de uma conta no portal do desenvolvedor do Corona SDK4, sendo necessário escolher o tipo de sistema operacional para efetuar o download do software. Após concluído o download, a instalação pode ser iniciada, de forma simples e intuitiva. Após concluída a instalação é necessário autenticar o ambiente logo em sua primeira execução, inserindo os dados da conta que foram cadastrados antes do download.

Figura 09 - Ilustração da tela principal do Corona Simulator

A figura 09 apresenta a tela inicial do Corona SDK, na versão 2014.3.6, que possui como requisito a instalação do pacote Java JDK.

O editor Sublime Text também precisa ser configurado, para que ele reconheça os pacotes snippets, sendo necessário efetuar as seguintes instruções:

● Acessar o item de menu Preferences > Package Controll…; ● Acessar o item Install Package;

● Digitar o nome Corona Editor; ● Confirmar a instalação;

● Reiniciar o Sublime Text;

4. Ferramentas do SDK

Serão abordadas nessa seção algumas ferramentas básicas que podem ser utilizadas no desenvolvimento de aplicações.

4.1. Imagens

(8)

8 Para trabalhar com imagens é necessário utilizar a biblioteca de exibição display. Essa biblioteca permite exibir as imagens na tela, utilizando o atributo display.newImage(), e definir propriedades como tamanho, alpha e posicionamento. A sintaxe para exibir uma imagem na tela é:

local imagem = display.newImage( filename [,baseDirectory] [, left, top ] );

Onde o primeiro parâmetro é o endereço do arquivo, sendo esse obrigatório, e os demais estão relacionados ao posicionamento da imagem com relação ao seu ponto central. Por padrão o ponto central é o canto superior esquerdo da tela. Através da biblioteca display também é possível pegar informações da tela do dispositivo, informações como altura e largura da tela e as coordenadas de posicionamento como topo, centro e base. Um exemplo de como trabalhar com esta biblioteca está na figura x, nela é possível visualizar a utilização de uma imagem com propriedades diferentes.

Figura 10 - Exemplo de utilização de imagens utilizando Corona SDK

No exemplo da esquerda foi utilizada a imagem de tamanho real, e seu posicionamento foi centralizado de acordo com as coordenadas x e y do dispositivo, já no segundo exemplo a imagem continua sendo a mesma, porem foi utilizada uma propriedade para aumentar a escala do seu tamanho, que nesse exemplo a escala foi de 2x do tamanho real.

4.2. Textos e Botões

Para trabalhar com textos também é utilizada a biblioteca display, que possui a função display.newText() para mostrar o texto na tela e definir algumas características, tais como: tipo de fonte, tamanho da fonte, cor do texto e seu posicionamento na tela. A sintaxe para exibir um texto na tela é a seguinte:

local texto = display.newText( text, x, y, [width, height,] font, fontSize );

O primeiro parâmetro deve possuir o texto que será exibido na tela, enquanto os demais estão relacionados às propriedades do texto, onde inclui o posicionamento na tela, o

(9)

9 tamanho que irá ocupar, o tipo de letra que deseja usar e qual o tamanho do texto será exibido. A figura 11 demonstra a utilização de textos com diferentes propriedades.

Figura 11 - Exemplo da utilização de textos utilizando Corona SDK

No exemplo da figura 11 podem ser observados três textos contendo o mesmo conteúdo, porem com propriedades diferentes. No primeiro foi utilizado a fonte nativa do dispositivo com um tamanho de 22px; no segundo texto foi utilizada uma fonte externa com o tamanho de 40px; já no terceiro foi utilizada uma fonte de 50px juntamente com o método setFillColor que serve para apontar a cor do texto, esse método recebe três parâmetros: o primeiro é o valor de intensidade da cor vermelha, o segundo o valor de intensidade da cor verde e o terceiro o valor de intensidade da cor azul.

Para utilizar botões, é necessário utilizar a biblioteca widget, que não é pré-carregada pela aplicação como a biblioteca display. Isso conduz a necessidade de importá-la para uma variável utilizando o comando require (“widget”). O atributo responsável pela exibição do botão na tela é widget.newButton(), o qual permite a utilização de botões nativos do sistema operacional, bem como a sua personalização através das suas propriedades como: utilização de imagens como background e a chamada de função ao evento de toque. Um exemplo da utilização de botões pode ser visto na figura 12.

(10)

10

Figura 12 - Exemplo da utilização de Widget utilizando Corona SDK

Neste exemplo, foi importada a biblioteca widget para criar um botão com imagem de fundo, utilizando uma propriedade que permite a troca da imagem de fundo quando ocorre o evento de toque, ou seja, quando o botão está no seu estado natural o seu background é o “botao_default.png”, sendo alterado para “botao_over.png” quando o botão é pressionado. Quando o botão é tocado é disparado um evento para a função “handleButtonEvent”, local esse que será inserida a lógica para executar os comandos posteriores ao toque.

4.3. Áudio

Os efeitos sonoros e as respostas de áudio são fundamentais em um jogo, pois podem proporcionar maior harmonia do ambiente para o jogador. O Corona possui a biblioteca audio, que contem todas as funções necessárias para a emissão de som, porém existem algumas restrições com relação ao tipo do arquivo de áudio, como pode ser visto na figura 13.

Figura 13 - Tipo de áudio suportado por plataforma

Para carregar sons para a aplicação é necessário usar o comando audio.loadSound(filename), que carrega os pré-processos de todo o arquivo de som na memória. Consequentemente, o arquivo de som pode ser reproduzido por meio de audio.play(). Um exemplo da utilização da biblioteca audio pode ser visto no código abaixo.

Figura 14 - Exemplo de utilização de audio no Corona SDK

No exemplo da figura 14 foi utilizado dois sons para serem executados. As linhas 6 e 9 fazem a referência ao arquivo de áudio que será reproduzido, enquanto as linhas 7 e 10

(11)

11 executam a reprodução. A execução da variável som2 é feita de forma contínua, característica definida com o parâmetro loops, que por padrão o valor é 0 mas no exemplo acima o seu valor foi definido como -1, o que corresponde a um loop infinito.

4.5. Animações

Muito importante para tornar um jogo mais atrativo são as suas animações. As animações em Corona SDK são criadas com a biblioteca transition, que permite mover, escalar, rotacionar e manipualr a visibilidade de objetos.

Figura 15 - Exemplo de utilização de animações em Corona SDK

No exemplo da figura 15 foram realizadas animações sobre uma imagem. Inicialmente a imagem “logo_sbti.png” é movida, usando a função transition.to(), da sua posição inicial até o centro da tela. Após o fim dessa animação, a função funcAnimacaoCompleta() é acionada recebendo como parâmetro o próprio objeto que foi animado, nessa função outra animação é executada, dessa vez foi utilizada a função transition.scaleTo() que irá redimensionar a imagem para 2x do seu tamanho real, essa escala é feita com uma duração de 1,5 segundos.

(12)

12 4.6. Biblioteca Física

Existe a possibilidade de utilizar uma biblioteca para simular colisão e efeitos da gravidade sobre objetos. Trata-se da biblioteca física, a qual pode ser carregada para incorporar tais efeitos na aplicação.

Figura 16 - Como utilizar a biblioteca de física no Corona SDK

Para que um objeto possa ser afetado pela física é necessário adicionar um corpo a ele. Um corpo é qualquer objeto que tenha sido alterado para simular um objeto físico. Para adicionar um corpo é necessário utilizar a função physics.addBody(). A partir do momento em que o objeto recebe um corpo ela passa a ser afetado pela gravidade. A sintaxe para adicionar um corpo ao objeto é mostrada no código abaixo:

physics.addBody (objeto, [BodyType,] {options})

Onde o primeiro parâmetro é o próprio objeto, como por exemplo uma bola; o segundo parâmetro é o tipo de corpo deste objeto que pode ser dinâmico (dynamic), estático (static) ou cinemático (kinematic); o terceiro parâmetro é um conjunto de opcões como densidade (density), fricção (friction) e salto (bounce). Os tipos e as propriedades do corpo podem ser:

● Tipos de corpo:

○ Corpos dinâmicos são totalmente simulado. Eles podem ser movidos manualmente no código, mas normalmente eles se movem de acordo com forças como gravidade ou forças de colisão. Este é o tipo de corpo padrão para objetos físicos em Box2D. Corpos dinâmicos podem colidir com todos os tipos de corpo.

○ Corpos estáticos não se move em simulação e se comportam como se tivessem massa infinita. Corpos estáticos podem ser movidos manualmente pelo usuário, mas não aceita a aplicação de velocidade. Corpos estáticos colidem apenas com corpos dinâmicos, não estáticos com outros órgãos ou entidades cinemáticas.

○ Corpos cinemáticos movem em simulação apenas de acordo com sua velocidade. Corpos cinemáticos não vai responder às forças, como a gravidade. Eles podem ser movidos manualmente pelo usuário, mas normalmente eles são movidos, definindo as respectivas velocidades. Corpos

(13)

13 cinemáticos colidem apenas com corpos dinâmicos, e não com outros órgãos ou entidades cinemáticas estáticas.

● Propriedades dos corpos:

○ Densidade é multiplicado pela área da forma do corpo para determinar a sua massa. Este parâmetro é baseada em um valor padrão de 1,0 para a água, de modo que os materiais que são mais leves do que a água (tal como a madeira) tem uma densidade inferior a 1,0 , e os materiais mais pesados (tais como pedra) tem uma densidade maior do que 1,0.

○ Fricção pode ser qualquer valor não negativo. Um valor de 0 significa que não há atrito e 1,0 significa bastante forte atrito. O valor padrão é 0,3.

○ Salto determina quanto de velocidade de um objeto é retornado após uma colisão. Valores superiores a 0,3 são bastante "saltitante", e um objeto com um valor de retorno de 1.0 vai se recuperar para sempre. O valor padrão é 0,2 , que é um pouco saltitante.

Utilizando o motor de física do Corona, o exemplo apresentado na figura x demonstra como criar uma interface, nesse caso um background com imagem de um muro e uma bola de basquete, e utilizar a biblioteca physics para trabalhar com gravidade e colisões.

(14)

14 Neste exemplo, a função criarBola() adiciona uma bola de basquete no centro da tela e a transforma em um “corpo” utilizando a função physics.addBody(), com isso ao ser criada a bola tende a descer por conta da gravidade. Nesta mesma função também é adicionando um evento de toque para essa bola, então quando a mesma for tocada a função moveBola() é acionada e nela uma força de impulso linear é aplicada na bola, jogando a a mesma para cima.

5. Estudo de Caso

Para demonstração prática do conteúdo abordado neste texto, foi criado um jogo que utiliza as bibliotecas display, physics e transition do Corona SDK. Além disso, pretende-se também com esse jogo apresentar o conceito prático da biblioteca storyboard, que funciona semelhante ao papel de um diretor, organizando as cenas do jogo.

5.1. Criação de Telas

Basicamente o jogo é composto por três telas, ou cenas como são chamadas no corona. Na tela inicial o usuário irá interagir apenas com o botão play, que o leva para a cena de execução do jogo. A figura 18 ilustra como ficou o design da tela inicial.

Figura 18 - Tela inicial do jogo

Na cena de execução do jogo o usuário terá três botões, com as cores vermelho, amarelo e verde. No canto superior da tela será apresentada uma palavra, que possuirá como texto “vermelho”, “amarelo” ou “verde”, escolhidos de forma aleatória, com cores de fontes também definidas aleatoriamente pelo jogo. O jogador deverá então fazer a leitura dessa palavra e clicar no botão corresponde ao conteúdo do texto exibido. Obviamente, o jogo tentará confundir o jogador, alterando as cores das fontes dessas palavras. A interface que desta cena pode ser vista na figura 19.

(15)

15

Figura 19 - Tela de execução do jogo

O jogo prossegue exibindo as palavras, dando um tempo para que o usuário clique no botão corresponde, encerrando-se quando é clicado em um botão errado ou, quando o jogador deixa de clicar no botão correspondente. Então, o jogo carregada a cena game over, que apresenta a pontuação atingida além de dar a opção de jogar novamente. A figura 20 ilustra a tela de game over.

Figura 20 - Tela game over

Para a transação entre as cenas foi utilizada a biblioteca storyboard, essa biblioteca permite trabalhar com os eventos da cena, os principais eventos trabalhados foram ao criar a cena, ao entrar na

(16)

16 cena, ao sair da cena e ao destruí-la. A figura 21 ilustra a estrutura de eventos que são disparados quando utiliza storyboard.

Figura 21 - Exemplo de como utilizar o storyboard

A lógica do jogo consiste num loop que cria um boneco para correr em cima de uma plataforma, essa “corrida” é feita utilizando uma imagem de Sprite com quatro frames. Essa imagem é combinada com uma animação do tipo transition que percorre a plataforma do canto esquerdo ao canto direito. A cada iteração do loop o tempo para percorrer a plataforma diminui, o que acarreta uma maior velocidade na animação, e consequentemente o efeito de que o boneco está correndo mais rápido. Para conseguir continuar no jogo, a cada iteração o jogador deve tocar no botão colorido que corresponde ao valor do texto que aparece no centro da tela, foi utilizada uma técnica para embaralhar a mente através da randomização do valor do texto e da cor do mesmo. Cada acerto é incrementado um valor na variavél pontos, o total de pontos da rodada é apresentado quando o jogador não consegue mais dar continuidade ao jogo, bem como também é apresentada a pontuação máxima registrada no dispositivo. A figura 22 apresenta parte da estrutura lógica do jogo.

(17)

17

Figura 22 - Parte da estrutura lógica do jogo

A função criarRunner() é chamada a cada iteração no loop. Essa função cria um boneco do tipo Sprite e executa o comando para que a imagem do boneco sofra a alteração de frames, o que acarreta o efeito de correr. Após a inicialização do Sprite um evento para detectar a colisão é adicionado, servindo para identificar quando o boneco chega ao final da tela. Por fim, a animação de movimentação é adicionada ao boneco. Quando o boneco colide com o final da tela, ou seja, quando ele chega ao seu ponto x final, a função onCollision é executada para verificar se nessa iteração o jogador conseguiu acertar o botão correto; caso ele tenha acertado o loop continua e o tempo e a duração para tocar no botão é decrementado; caso contrário, a tela de game over é apresentada.

5.3. Exportação para Android e IOS

A exportação do jogo é a ultima etapa para sua execução em dispositivos móveis. O procedimento de exportar a aplicação para Android é realizado com a opção Build for Android, encontrada no menu File do Corona Simulator. Essa opção apresenta uma janela para o preenchimento dos dados do aplicativo. A figura 21 ilustra a tela de exportação para Android.

(18)

18

Figura 23 - Janela para exportar aplicativo para Android

Para expotar o jogo para IOS é necessário uma conta de desenvolvedor Apple5, além de estar em uma máquina com sistema operacional OS X e possuir o certificado de desenvolvedor instalado6. Feito isso, é necessário selecionar a opção Build for Iphone/Ipad no menu file do Corona Simulator SDK, que apresentará a janela para o preenchimento dos dados do aplicativo. A figura 22 demonstra a tela de exportação para IOS.

Figura 24 - Janela para exportar aplicativo para IOS

Após os passos de exportação mostrados acima, o jogo pode ser disponibilizado nas lojas de aplicativos como PlayStore e AppStore.

5

A conta de desenvolver pode ser adquirida no site https://developer.apple.com/

6 Para acessar o passo a passo da exportação para IOS acesse:

(19)

19 6. Considerações Finais

Devido a grande quantidade de plataformas de dispositivos móveis, os desenvolvedores de software estão procurando cada vez mais utilizar ferramentas que permitam a publicação de seus aplicativos para uma grande quantidade plataformas. A ferramenta Corona SDK, por atender a esse requisito, vem sendo amplamente utilizada, seja pelo uso da linguagem Lua, seja pela sua grande quantidade de recursos que pode ser utilizadas para a criação da jogos.

O trabalho aqui apresentado buscou apresentar uma parte desses recursos, mostrando algumas etapas referentes a criação de um jogo, desde a elaboração das telas até a sua publicação nas lojas de aplicativos PlayStore e AppStore.

7. Referências

PEREIRA, R. R. Corona SDK. Disponível em:

<http://www.ulbra.inf.br/joomla/images/documentos/TCCs/2011_01/TCCI_SI_Ricardo Rauber.pdf> Acesso em: 24 jul. 2014.

CORONA. Corona SDK. Disponível em:

<http://coronalabs.com/products/corona-sdk> Acesso em: 22 jul. 2014. LUA. A Linguagem de Programação. Disponível em:

Referências

Documentos relacionados

Instituto de Ensino Superior e Pesquisa Campus da UEMG – Universidade do Estado de Minas Gerais , no município de Divinópolis; objetivando identificar o perfil

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

Neste estudo foram estipulados os seguintes objec- tivos: (a) identifi car as dimensões do desenvolvimento vocacional (convicção vocacional, cooperação vocacio- nal,

Entre as atividades, parte dos alunos é também conduzida a concertos entoados pela Orquestra Sinfônica de Santo André e OSESP (Orquestra Sinfônica do Estado de São

O score de Framingham que estima o risco absoluto de um indivíduo desenvolver em dez anos DAC primária, clinicamente manifesta, utiliza variáveis clínicas e laboratoriais

Desde logo, a nossa compreensão e interpretação da importância funcional e ritual das lamentações públicas das carpideiras e dos carpideiros egípcios é sublinhada pelo

A pesquisa pode ser caracterizada como exploratória e experimental em uma primeira etapa (estudo piloto), na qual foram geradas hipóteses e um conjunto de observáveis, variáveis