Tutorial:Using Input (Português)

Capturar eventos de entrada de dados com LÖVE é bastante simples. Neste tutorial vamos apresentar uma forma de capturar eventos do teclado e do mouse, utilizando os métodos e callbacks de ambos objetos. Vamos começar nosso tutorial inserindo este pequeno trecho de código em um arquivo vazio:

local texto
 
function love.load()
   love.graphics.setNewFont(12)
   texto = "Nada ainda"
end
 
function love.update(dt)
 
end
 
function love.draw()
   love.graphics.print( texto, 330, 300 )
end

Capturando eventos do teclado

A maneira mais fácil de saber se o usuário está pressionando uma tecla é chamado o método love.keyboard.isDown, que possui a seguinte sintaxe:

love.keyboard.isDown( tecla )

O parâmetro "tecla" é uma string que representa a tecla desejamos saber se está sendo pressionada. Por exemplo:

if love.keyboard.isDown( " " ) then
   texto = "A tecla ESPAÇO foi pressionada!"
end

Você pode encontrar a relação completa de teclas aqui. O melhor local para realizar essa verificação é dentro do callback love.update, dessa forma, somos capazes de obter a entrada do usuário e atualizar nossas variáveis antes de tirar as nossas coisas da tela. Então, o nosso callback love.update modificado deve ficar assim:

function love.update(dt)
   if love.keyboard.isDown( " " ) then
      texto = "A tecla ESPAÇO foi pressionada!"
   end
end

Ainda que isso funcione perfeitamente, talvez nós apenas desejássemos saber quais teclas estão sendo pressionadas no momento e especificar diferentes comportamentos quando elas estão pressionadas ou forem soltas. Uma maneira elegante de fazer isso é usando os retornos de teclado love.keypressed e love.keyreleased. Eles trabalham de forma semelhante aos já conhecidos love.update e love.draw, executando o nosso código toda vez que o evento é acionado. Por exemplo:

function love.keypressed( tecla )
   if tecla == "return" then
      texto = "A tecla ENTER está sendo pressionada!"
   end
end
 
function love.keyreleased( tecla )
   if tecla == "return" then
      texto = "A tecla ENTER foi solta!"
   end
end

Como você pode ver, estes dois callbacks permitirão que você verifique se uma (ou mais) tecla está ou não sendo pressionada no momento. Até este ponto, o nosso código-fonte deve estar mais ou menos assim:

local texto
 
function love.load()
  love.graphics.setNewFont(12)
  texto = "Nada ainda"
end
 
function love.update(dt)
  if love.keyboard.isDown( " " ) then
    texto = "A tecla ESPAÇO foi pressionada!"
  end
end
 
function love.keypressed( tecla )
  if tecla == "return" then
    texto = "A tecla ENTER está sendo pressionada!"
  end
end
 
function love.keyreleased( tecla )
  if tecla == "return" then
    texto = "A tecla ENTER foi solta!"
  end
end
 
function love.draw()
  love.graphics.print( texto, 330, 300 )
end