Отображение выходов
Часть раздела Logic & Flow путешествия по Lua на Coddy — урок 31 из 54.
Задание
ЛегкоУлучшите игровой опыт, отображая игроку все доступные выходы после вывода описания комнаты.
Вам предоставлены переменные startingRoom, gardenRoom и player из предыдущего испытания.
Измените игровой цикл для отображения доступных выходов:
- Выведите описание текущей комнаты игрока
- Выведите
"Exits:"на новой строке - Используйте
pairs()для итерации по таблицеexitsтекущей комнаты - Для каждого выхода выведите
" - "(два пробела, тире и пробел), за которым следует название направления - Выведите приглашение к вводу
"> "(знак «больше», за которым следует пробел) без перехода на новую строку - Прочитайте команду пользователя с помощью
io.read() - Проверьте, совпадает ли команда с ключом в таблице
exitsтекущей комнаты - Если совпадает, обновите
player.currentRoom, установив комнату, хранящуюся в этом выходе - Если команда не совпадает ни с одним выходом и не является
"quit", выведите"You can't go that way." - Если команда —
"quit", установитеgameRunningв значениеfalse, чтобы выйти из цикла
Цикл должен продолжаться до тех пор, пока пользователь не введет "quit".
Ожидаемый формат вывода:
You find yourself in a dusty library filled with ancient books and scrolls.
Exits:
- east
>
A hidden garden with overgrown plants and a small fountain.
Exits:
- west
>
You can't go that way.
A hidden garden with overgrown plants and a small fountain.
Exits:
- west
>
You find yourself in a dusty library filled with ancient books and scrolls.
Exits:
- east
> Попробуйте сами
-- Room definitions
local startingRoom = {
description = "You find yourself in a dusty library filled with ancient books and scrolls.",
exits = {}
}
local gardenRoom = {
description = "A hidden garden with overgrown plants and a small fountain.",
exits = {}
}
-- Connect rooms
startingRoom.exits["north"] = gardenRoom
gardenRoom.exits["south"] = startingRoom
-- Player
local player = {
currentRoom = startingRoom
}
-- Game loop
local gameRunning = true
while gameRunning do
print(player.currentRoom.description)
io.write("> ")
local command = io.read()
if command == "quit" then
gameRunning = false
elseif player.currentRoom.exits[command] then
player.currentRoom = player.currentRoom.exits[command]
else
print("You can't go that way.")
end
endВсе уроки раздела Logic & Flow
1Продвинутая итерация таблиц
Итерация с помощью pairs()Итерация с помощью ipairs()pairs() против ipairs()Повторение — Лист персонажа2Дополнительные функции библиотеки table
table.concat()Создание таблиц и unpack()table.sort()Пользовательская сортировка с помощью функцийИтоги — Таблица рекордов5Проект: Движок текстового квеста
Настройка проекта: КомнатаСоединение комнат