Tutorial:Hamster Ball (Español)


Captura de pantalla de la bola de hámster.
Imagen de la bola de hámster (Nota: En el tutorial se nombra la imagen como hamster.png)


Este tutorial es un ejemplo muy simple de cómo agregar un recurso (en este caso una simple imagen) al motor y luego moverlo con las flechas del teclado. Aquí está todo el código fuente:

-- Tutorial 1: Bola de Hámster
-- Se añade una imagen y se mueve utilizando las flechas del teclado.
-- Compatible con löve 0.6.0 y posteriores.

function love.load()
   hamster = love.graphics.newImage("hamster.png")
   x = 50
   y = 50
   velocidad = 100
end

function love.update(dt)
   if love.keyboard.isDown("right") then
      x = x + (velocidad * dt)
   elseif love.keyboard.isDown("left") then
      x = x - (velocidad * dt)
   end

   if love.keyboard.isDown("down") then
      y = y + (velocidad * dt)
   elseif love.keyboard.isDown("up") then
      y = y - (velocidad * dt)
   end
end

function love.draw()
   love.graphics.draw(hamster, x, y)
end

No es el programa más complicado del mundo, pero por alguna parte había que empezar. Ten en cuenta que todo lo que hay después de los caracteres -- es un comentario y es ignorado por el programa.

-- ¡Puedes escribir lo que quieras aquí!

Muy bien, lo siguiente que necesitas saber es que para que las cosas funcionen es necesario tener una función llamada load. Aquí es donde el juego se inicia y donde comienza todo. Aunque no son estrictamente necesarias, lo mejor es incluir también love.update () y love.draw () por ahora. El significado de estas funciones se describirá a continuación.

-- Este es un programa vacío.

function love.load()
end

function love.update(dt)
end

function love.draw()
end

Vayamos a ver ahora tozo a trozo que es lo que hace el código de este juego.

La función load es la siguiente:

function love.load()
   hamster = love.graphics.newImage("hamster.png")
   x = 50
   y = 50
   velocidad = 100
end

Lo que estamos haciendo aquí es agregar el archivo hamster.png a nuestro juego y asignarle a una variable llamada hamster. También estamos declarando tres variables: x, y y velocidad. Todas ellas jugaran un papel en el programa más adelante.

La función update es la siguiente:

function love.update(dt)
   if love.keyboard.isDown("right") then
      x = x + (velocidad * dt)
   elseif love.keyboard.isDown("left") then
      x = x - (velocidad * dt)
   end

   if love.keyboard.isDown("down") then
      y = y + (velocidad * dt)
   elseif love.keyboard.isDown("up") then
      y = y - (velocidad * dt)
   end
end

En primer lugar, verás que esta función acepta un parámetro llamado dt (una abreviatura de "delta-time"), que representa la cantidad de tiempo que ha pasado desde que esta función se llamó por última vez. Es en cuestión de segundos, pero debido a la velocidad de los procesadores de hoy en día suele ser menor que 1 (valores como 0,01 son comunes). Estamos utilizando este valor para mover la bola de hámster a la misma velocidad, no importa lo rápido que sea el ordenador del jugador.

En la función comprobamos si las teclas derecha, izquierda, arriba o abajo son pulsadas llamando a la función love.keyboard.isDown (tecla) con los parámetros adecuados (la lista completa de las teclas del teclado se puede encontrar aquí). Si, por ejemplo, pulsamos la tecla de la derecha el valor x se incrementaría en la cantidad apropiada (en este caso velocidad y dt se encargarán de que la pelota se mueva a una velocidad de 100 píxeles por segundo, trata de cambiar el valor de velocidad en la función load para ver qué pasa).

La función draw es la siguiente:

function love.draw()
   love.graphics.draw(hamster, x, y)
end

No hay mucho que comentar, pero aquí es donde se produce la magia. La imagen que contiene la variable hámster se dibuja en las coordenadas x e y.

Ya está todo terminado. Trata de jugar un poco con las variables de love.load para ver qué efectos tienen.

Recuerde que los archivos .love se pueden abrir con cualquier software estándar de archivos, como WinZip o 7zip. ¡En realidad, son simplemente archivos .zip cambiados de nombre!

Otros Idiomas