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:
-
Decidir qué versión de LÖVE podremos instalar en nuestro sistema (e.g. Windows 64bit), consultando la página del proyecto LÖVE.
-
Descargar el fichero de inslación correspondiente (e.g. desde https://bitbucket.org/rude/love/downloads/love-11.2-win64.exe).
-
Ejecutar el programa de inslación descargado.
- 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:
- Crear una carpeta con el nombre del juego (e.g. la carpeta
ball
en el escritorio de Windows).
C:\> mkdir ball
- 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.
- 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
- 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:
A
,B
yC
.var_123
,sheep
ySHEEP
.animal
yname
.
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