Skip to content

[Tutorial] Criando snake com love2D – parte 2

by em 10/11/2013

Bem vindo à mais um level!

Dificuldade: 2.5             Estrelas por completar: 3

Nessa segunda parte do tutorial vamos conhecer melhor o love e nos acostumar um pouco mais com Moonscript.

Considerações sobre Love2D e Moonscript

Se você já instalou tudo que precisava e já sabe usar as ferramentas descritas na parte 1 então pule para o próximo passo. Para que um programa em love seja executado é necessário fazer algumas coisas:

  • Criar um main.lua
  • Zipar todo o conteúdo do seu jogo em um arquivo “seujogo”.love onde o main.lua esteja na raiz
  • Executar o “seujogo”.love usando o app/exe instalado na sua máquina de nome Love

Dependendo da sua instalação, um clique duplo no “seujogo”.love deve ser suficiente, caso contrário tente arrastar o .love para cima do Love..app/Love.exe.

Ainda não funciona? Execute pela linha de comando, deve ser algo similar à:

$ love pathtogame/seujogo.love

Agora que já sabemos como executar o jogo vamos entender como transformar Moonscript para Lua, fazendo assim com que o love entenda o código.

Para compilar os arquivos .moon é necessário utilizar o moonc pela linha de comando, ao invés de ficar executando toda vez deixe-o  em modo watch (observação) e ele fará as compilações dos arquivos que forem salvos.

O comando a seguir executa o moonc no caminho “meudrive/meujogo/” e joga o resultado nessa mesma pasta:

$ moonc  -w meudrive/meujogo

Exemplo de caminhos: C:/dev/games/snake (win) OU ~/eu/dev/games/snake (mac) Ah e lembre-se de executar o comando novamente quando criar um novo arquivo, o moonc não detecta novos arquivos enquanto estiver rodando.

Lembrete: O $ é apenas um indicativo de que o comando que vem em seguida deve ser executado em um terminal.

O famoso Olá Mundo!

Dica: Se você se sente muito desconfortável programando em Moonscript pode usar Lua puro ou então parar este tutorial agora e brincar com a linguagem antes de continuar 

O love2d possui algumas funções que dizem respeito ao ciclo básico de jogo que serão muito úteis, vamos testar essas funções imprimindo o texto “Hello World” e em seguida carregando uma imagem e desenhando-a na tela.

Antes de tudo crie o arquivo principal de execução do jogo main.moon e execute o comando de watch do moonc no terminal para que toda vez que o arquivo for salvo o main.lua seja criado.

Rode $ moonc -w . no terminal para que o watcher compile o main.moon. Em seguida adicione nosso esperado print no método draw.

love.draw = ->
love.graphics.printf  "Olá Mundo", 400,300, 250, "center"

A sequência de parâmetros é composta por: texto, x, y, largura máxima, alinhamento. O método love.draw faz parte do Love2D e é responsável pelo ciclo de desenho do jogo. E por último o objeto graphics do love é responsável pela parte gráfica da engine. Monte seu build do Love e execute o arquivo, você deve ver nossa amigável frase sendo exibida.

Se tiver problemas veja a parte 1 do tutorial ou acesse a wiki do Love no Getting Started e se precisarem deixem perguntas.

Vamos ousar um pouco e colocar uma fonte bem gamística nessa frase. Baixe a fonte em .png da wiki do Love aqui. Ponha  a fonte no diretório, crie um novo método de load e configure o graphics para utilizar a fonte.

love.load = ->
font = love.graphics.newImageFont("font_imagem.png"," abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,!?-+/():;%&`'*#=[]\"")
love.graphics.setFont(font)

Assim como o draw faz parte do Love o método load também faz parte do ciclo de execução e é responsável por fornecer um ponto de carregamento antes que o jogo esteja visível ao jogador. Executamos o newImageFont do graphics para carregar a fonte da imagem e armazenamos na variável font, em seguida bastou registrar usando o setFont.

Crie outro build com a nova versão do main.lua compilada e execute seu *.love para ver o Olá Mundo:

OlaMundoComFonteImagem

Vale lembrar que é possível usar também fontes no formato .ttf, por exemplo.

Nossa primeira imagem

Tudo muito bonito, muito legal, mas essa tela preta parece meio vazia. Vamos adicionar um sprite na tela.

Vamos usar uma árvore direto do opengameart.org, baixe-a aqui. Coloque-a no seu diretório de projeto e adicione aos métodos  load e  draw do main.moon o código para desenhar a imagem na tela.

treeImage = ""
love.load = ->
treeImage = love.graphics.newImage "tree_cartoon_med.png"
love.draw = ->
love.graphics.draw treeImage,100,100

Love2DTree

O que temos aqui é uma variável que armazena a imagem carregada no load e a utilizamos para desenhar no método draw usando um método também de nome draw de dentro do graphics.

É isso aí galera, esse é o fim da parte 2, em seguida teremos teclado e movimentação.

Missão completa: Parte 2 finalizada!

From → Programação

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: