Mover al jugador
Parte de la sección Logic & Flow del Journey de Lua de Coddy — lección 29 de 54.
Desafío
FácilImplementa el sistema de movimiento que permite al jugador navegar entre habitaciones verificando su entrada con las salidas disponibles.
Se te proporcionan las variables startingRoom, gardenRoom y player del desafío anterior.
Modifica el bucle del juego para manejar los comandos de movimiento:
- Imprime la descripción de la habitación actual del jugador (
player.currentRoom.description) - Imprime el prompt
"> "(signo de mayor que seguido de un espacio) sin un salto de línea - Lee el comando del usuario usando
io.read() - Verifica si el comando coincide con una clave en la tabla
exitsde la habitación actual - Si coincide, actualiza
player.currentRooma la habitación almacenada en esa salida - Si el comando es
"quit", establecegameRunningafalsepara salir del bucle
El bucle debe continuar hasta que el usuario escriba "quit".
Nota: Debido a que io.write("> ") no añade un salto de línea, la siguiente línea de salida (la descripción de la habitación) aparece inmediatamente después del prompt en la misma línea en el flujo de salida sin procesar. Cada iteración del bucle produce: la descripción de la habitación en su propia línea, luego > sin salto de línea, por lo que la siguiente descripción continúa en esa misma línea.
Formato de Salida Esperado (entradas: east, luego quit):
You find yourself in a dusty library filled with ancient books and scrolls.
> A hidden garden with overgrown plants and a small fountain.
> Pruébalo tú mismo
-- Game rooms
local startingRoom = {
description = "You find yourself in a dusty library filled with ancient books and scrolls."
}
local gardenRoom = {
description = "You step into a beautiful garden with blooming flowers and a gentle breeze."
}
-- Player
local player = {
currentRoom = startingRoom
}
-- Game loop
local gameRunning = true
while gameRunning do
print(player.currentRoom.description)
io.write("> ")
local command = io.read()
print("You entered: " .. command)
if command == "quit" then
gameRunning = false
end
endTodas las lecciones de Logic & Flow
1Iteración avanzada de tablas
Iterar con pairs()Iterar con ipairs()pairs() vs. ipairs()Resumen - Ficha de personaje2Más funciones de la librería table
table.concat()Construcción de tablas y unpack()table.sort()Ordenamiento personalizado con funcionesRepaso - Tabla de puntuaciones altas5Proyecto: Motor de aventura de texto
Configuración del proyecto: La habitaciónConectar habitaciones