Nota: Esta é uma republicação de um pequeno tutorial escrito para os camaradas do Dingoo Brasil. Uma vez que o site encontra-se fora do ar há algum tempo, resolvi disponibilizá-lo também neste blog.
Introdução
Ultimamente, tenho notado um grande interesse dos proprietários de Dingoo, principalmente dos membros do fórum dingoobr, em programar para o aparelho. Uma prova disso é o grande número de comentários e acessos ao nosso pequeno tutorial de como compilar aplicativos para o Dingux. Tal post foi escrito há algum tempo atrás, e, de lá pra cá, muita coisa mudou e surgiram algumas alternativas à programação hardcore C/C++. Dentre as novas opções podemos citar a biblioteca em Python Pygame, portada pelo brasileiro Eric Jardim, e o engine LÖVE, portado por SiENcE sob o nome de nLove.
Neste artigo tratarei apenas do LÖVE, pois é o que tenho mais conhecimento, tanto do motor quanto da linguagem utilizada (Lua). Eu o chamo de aperitivo porque minha intenção é de apenas demonstrar a facilidade do uso do motor e atiçar a vontade do leitor em usá-lo, cabendo a ele buscar por maiores detalhes na própria documentação do projeto, que, aliás, possui grande parte já traduzida para o nosso português.
Vejamos a seguir algumas vantagens e desvantagens da utilização do engine LÖVE em relação à programação em C/C++:
Vantagens
- Por se tratar de um engine de jogos, temos muitas facilidades para criação de seus componentes, como manipulação de imagens, sons, eventos, etc. Caso contrário, tudo teria que ser criado do zero;
- O motor utiliza a linguagem de script Lua, que possui uma curva de aprendizagem muito menor do que C/C++;
- Por se tratar de linguagem de script, não é necessário compilar o programa toda vez que você fizer mudanças em seu código, todas as alterações serão refletidas imediatamente;
- Você poderá programar em qualquer sistema operacional que possua um simples editor de texto;
- O código criado rodará sem nenhuma ou pequenas alterações (na maioria das vezes apenas controle) em qualquer sistema em que existir seu intérprete, dentre eles: Windows, Mac, Linux, Dingux, Caanoo, etc.
Desvantagens
- Linguagens interpretadas são, em sua maioria, mais lentas do que as compiladas. A Lua, apesar de ser uma das linguagens de script mais rápidas existentes, pode, em situações específicas, ser muito mais lenta do que um bom código escrito em C/C++. Porém, para programas mais simples isso acaba não sendo um problema relevante;
- Seu código-fonte ficará disponível junto com o programa. Se você não deseja compartilhar seu código isso será um problema, pois como veremos mais adiante, a distribuição dos pacotes se dá em forma de um simples arquivo zip, contendo todo o conteúdo do jogo, como arquivos de código, imagens e áudio;
- Por se tratar de um engine, você não terá tanta flexibilidade quanto em um código criado por si próprio, dessa forma você terá que seguir o modelo proposto.
* Note que as vantagens e desvantagens citadas acima foram apenas algumas que vieram de imediato em minha mente, você pode encontrar muitas outras ou até mesmo discordar de algumas.
Pré-requisitos
- Computador com LÖVE instalado (para facilitar os testes);
- Editor de textos de sua preferência, eu uso o notepad++ para Windows, pois é leve e tem suporte à Lua;
- nLove para Dingux;
- Conhecimento em alguma linguagem de programação é desejável. Como já dito, a linguagem Lua é bem simples e mesmo que você não a conheça não creio que terá grandes dificuldades em acompanhar o tutorial.
Mãos à Obra
Crie um diretório para armazenar os arquivos do nosso projeto, por exemplo “tutorial”. Dentro da pasta “tutorial”, crie um arquivo com nome “conf.lua”, nesse arquivo serão definidos algumas configurações globais do programa. Em nosso caso, apenas vamos definir seu título e tamanho da tela, que terá a dimensão do LCD do Dingoo, 320×240. Para tanto, o seu conteúdo deverá ser o seguinte:
function love.conf(t)
t.title = "Tutorial Dingoobr"
t.screen.width = 320
t.screen.height = 240
end
Agora vamos criar o ponto de entrada de nosso programa, dentro do mesmo diretório, obrigatoriamente deve se chamar “main.lua”. O nosso objetivo será apenas desenhar um círculo branco controlável pela tela, com uma mensagem de rodapé. O código deverá ser o seguinte:
function love.load()
love.mouse.setVisible(false)
circulo = {}
circulo.x = 10
circulo.y = 10
dx = 0
dy = 0
velocidade = 50
end
function love.update(dt)
circulo.x = circulo.x + dx * dt
circulo.y = circulo.y + dy * dt
end
function love.draw()
love.graphics.circle('fill', circulo.x, circulo.y, 10, 10)
love.graphics.print('Funcionou!', 0, 220)
end
function love.keypressed(key)
if key =="escape" then
love.event.push("q")
elseif love.keyboard.isDown("down") then
dy = velocidade
dx = 0
elseif love.keyboard.isDown("up") then
dy = -velocidade
dx = 0
elseif love.keyboard.isDown("left") then
dx = -velocidade
dy = 0
elseif love.keyboard.isDown("right") then
dx = velocidade
dy = 0
end
end
Uma breve explicação sobre cada função de callback usada no exemplo:
- love.load() – todo seu conteúdo é executado apenas no carregamento do jogo, ou seja, apenas uma vez
- love.update(dt) – é executada continuamente, onde todos cálculos são efetuados, dt significa delta time, que é o tempo decorrente entre os quadros
- love.draw() – também é executada continuamente e é responsável por todo o desenho na tela
- love.keypressed(key) – monitora o pressionamento de teclas. Perceba que a tecla “ESCAPE” é mapeada para o botão “SELECT” no Dingoo.
Executando o Programa
Para rodar o programa, basta executar o intérprete do LÖVE usando o diretório que criamos como parâmetro. Estando no mesmo nível do nosso diretório “tutorial”, basta digitar:
love tutorialna linha de comando. Se tudo correr bem, você verá uma janela semelhante a esta:
Você também pode passar como parâmetro um pacote com extensão “.love”. Pra criá-lo é muito simples, no nosso caso, basta zipar o conteúdo do diretório “tutorial”, apenas o conteúdo, e renomear o arquivo gerado “tutorial.zip” para “tutorial.love” e você poderá executá-lo da mesma forma citada anteriormente, apenas adicionando a nova extensão ao nome do arquivo:
love tutorial.lovePara rodar no Dingux, instale o nLove em seu cartão de memória, copie nosso arquivo “tutorial.love” para a mesma pasta do arquivo “nlove.dge”. Crie um arquivo chamado “tutorial.dge” com o conteúdo:
#!/bin/sh cd `dirname $0`./nlove.dge tutorial.love
Salve e execute o script dge em seu aparelho. Lembre-se que nosso sistema destino é o dingoo-linux, dessa forma, o script deve possuir quebra de linha no formato Unix para ser interpretado. No Notepad++, basta selecionarmos a opção “Editar->Conversão final de linha->Converter para formato UNIX”.
Considerações Finais
Apesar de bem simples, acredito que tenha sido possível ter uma noção geral do uso do LÖVE. Além da simplicidade da programação, temos toda a vantagem da portabilidade, não é nada difícil criar aplicativos compatíveis com Dingux e Caanoo, por exemplo, que compartilhem o mesmo código, sem nem mesmo a necessidade de recompilação para cada plataforma. Na documentação oficial você pode encontrar muitos outros exemplos e maior detalhamento de cada função, não deixe de consultá-la. Se você encontrou alguma dificuldade relativa à Lua, visite http://www.lua.org/portugues.html e aprenda mais sobre a linguagem brasileira.
Um grande abraço e boa programação!


0 comentários:
Postar um comentário