The tnotstar's Website

Apuntes de lecturas (readings)

Tutorial: «How to (make games with) LÖVE» ―How to LÖVE

Fuente: https://www.youtube.com/playlist?list=PLM5EvDHhpyTcThnWfeP1459KelemQOBdG.

Episode 1: Instalando LÖVE

Instalar LÖVE usando Scoop

Para instalar LÖVE usando Scoop, debemos ejecutar el siguente comando desde una ventana del Símbolo del sistema:

C:\> scoop install love

Finalmente, podremos ejecutar el programa desde la misma ventana del Símbolo del sistema:

C:\> love

Instalar LÖVE de manera manual

Por el contrario, para instalar LÖVE de manera manual, debemos seguir la siguente secuencia de pasos:

  1. Decidir qué versión de LÖVE podremos instalar en nuestro sistema (e.g. Windows 64bit), consultando la página del proyecto LÖVE.

  2. Descargar el fichero de inslación correspondiente (e.g. desde https://bitbucket.org/rude/love/downloads/love-11.2-win64.exe).

  3. Ejecutar el programa de inslación descargado.

  1. Crear un acceso directo conveniente (e.g. en el escritorio de Windows: ir a la carpeta de instalación, seleccionar el programa love.exe y escoger la opción “Enviar a” | “Escritorio (como acceso directo)” desde el menú de Windows).

Finalmente, podremos ejecutar el programa haciendo uso de dicho acceso directo.

Crear un juego de pruebas

Para crear un juego de pruebas en LÖVE debemos seguir la siguiente secuencia de pasos:

  1. Crear una carpeta con el nombre del juego (e.g. la carpeta ball en el escritorio de Windows).
C:\> mkdir ball
  1. Crear un fichero de texto (código fuente) vacío con el nombre main.lua.
C:\> touch ball\main.lua

Nota: El nombre main.lua es obligatorio.

  1. Rellenar el fichero main.lua con el siguiente código fuente:
function love.load()
    x = 0
    speed = 200
end

function love.update(dt)
    x = x + speed * dt
    if x > 800 then
        x = 800
        speed = -speed
    end
    if x < 0 then
        x = 0
        speed = -speed
    end
end

function love.draw()
    love.graphics.circle("fill", x, 200, 50, 50)
end
  1. Finalmente, podremos ejecutar nuestro juego de pruebas.

Para ejecutar el juego de pruebas debemos:

a. Ejecutar el siguiente comando, desde la ubicación base de nuestra carpeta del juego:

C:\> love ball

b. Arrastrar y soltar la carpeta del juego en el ícono del acceso directo al ejecutable de LÖVE.

Episode 2: Variables en LÖVE

Para habilitar la cónsola de texto de LÖVE, debemos crear el fichero conf.lua e incluir el siguiente código fuente:

funtion love.conf(t)
    t.console = true
end

A partir de ahora, podremos imprimir en la cónsola los valores asignados a las siguientes variables (e.g. fichero main.lua)

A = 23
B = 44 + 11
C = A + B
A = 1
print(C)

var_123 = 123

sheep = 10
SHEEP = 20

print(sheep)
print(SHEEP)

print("Hello, world!")

animal = "sheep"
name = "antonio"

print(animal, name)
print(name .. " is a " .. animal)

Para crear una variable en LÖVE simplemente tendremos que asignarle un valor. Las variables en LÖVE tienen un nombre que puede estar formado por letras, dígitos y/o guiones bajos. Dichos nombres no pueden comenzar con un dígito numérico (e.g. 1one no es un nombre válido). En el código anterior, todas las variables tienen nombres válidos:

Las variables pueden recibir valores numéricos (e.g. 23, 55, ó 1) o alfanuméricos (e.g. "sheep" o "antonio"). También se puede asignar a una variable, los resultados de una expresión numérica (e.g. 44 + 11) o alfanumérica (e.g. "Hello," .. " world!". Finalmente, los valores actuales de una variable pueden ser utilizados dentro de una expresión (e.g. A + B, o name .. " is a " .. animal).

En LÖVE (o en concreto en Lua) la concatenación de cadenas de caracteres es indicada mediante el operador ...

Episode 3: Funciones

Por su parte, las funciones conforman un mecanismo para la reutilización de código en Lua, y por tanto en LÖVE. La sintáxis básica para la construcción de funciones es la siguiente:

function addition(a, b)
    return a+b
end

Para utilizar el código anterior, debemos construir una llamada a la función addition, así:

result = addition(9, 5)
print(result)

Los parámetros de una función son locales a ésta, por lo que el siguiente código no mostrará ningún valor para a y/o b:

print(a, b)

Además, si asignáramos un valor a cualquier variable antes de la declaración de nuestra función, pero utilizamos su nombre dentro de la definición de los parámetros de ésta última, los valores originales de las variables se mantendrían intactos:

a = 1
b = 2
function addition(a, b)
    print("Inside addition:", a, b)
    return a+b
end

print("Before call:", a, b)
result = addition(9, 5)

print("After call:", a, b)
print(result)

Todo lo contrario pasa con las variables asignadas dentro del cuerpo de la función (el código reutilizado), pues en el siguiente ejemplo, el valor de la variable (global) c será modificado:

a = 1
b = 2
function addition(a, b)
    c = a + b
    print("Inside addition:", a, b, c)
    return c
end

print("Before call:", a, b, c)
result = addition(9, 5)

print("After call:", a, b, c)
print("Result:", result)

Por otra parte, las funciones también sirven para reutilizar porciones de código, por ejemplo, si definimos la siguiente función:

function introduction(name, age, country)
    print("Hi, my name is " .. name .. ". I'm " .. age .. " years old, and I live in " .. country .. ".")
end

Podremos emitir sendos mensajes para cada una de las siguientes llamadas a la función:

introduction("Daniel", "21", "the Netherlands")
introduction("Steve", "40", "Germany")

Finalmente, en estos casos, no es necesario devolver ningún valor de retorno en el cuerpo de la función, por lo que la función por omisión devolverá el valor nil de Lua.

Episode 4: Sublime Text

Nota: Este episodio nos lo saltamos porque no nos interesa Sublime Text. Para conocer dicho contenido podremos visitar: How to LÖVE - Episode 4 - Sublime Text.

Episode 5: What is LÖVE?

TODO