Перемещение игрока
Часть раздела Логика и управление потоком путешествия по Lua на Coddy. Урок 29 из 54.
Задание
ЛегкоРеализуйте систему перемещения, которая позволяет игроку перемещаться между комнатами, проверяя введенные им данные на соответствие доступным выходам.
Вам предоставлены переменные startingRoom, gardenRoom и player из предыдущего испытания.
Измените игровой цикл для обработки команд перемещения:
- Выведите описание текущей комнаты игрока
- Выведите приглашение
"> "(знак «больше», за которым следует пробел) без перехода на новую строку - Прочитайте команду пользователя с помощью
io.read() - Проверьте, совпадает ли команда с ключом в таблице
exitsтекущей комнаты - Если совпадает, обновите
player.currentRoom, установив значение комнаты, хранящейся в этом выходе - Если команда —
"quit", установитеgameRunningв значениеfalse, чтобы выйти из цикла
Цикл должен продолжаться до тех пор, пока пользователь не введет "quit".
Примечание: Поскольку io.write("> ") не добавляет символ новой строки, следующая строка вывода (описание комнаты) появляется сразу после приглашения в той же строке необработанного потока вывода. Каждая итерация цикла производит: описание комнаты на отдельной строке, затем > без новой строки, поэтому следующее описание продолжается на той же строке.
Ожидаемый формат вывода (ввод: east, затем quit):
You find yourself in a dusty library filled with ancient books and scrolls.
> A hidden garden with overgrown plants and a small fountain.
> Попробуйте сами
-- 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
endВсе уроки раздела Логика и управление потоком
1Продвинутая итерация таблиц
Итерация с помощью pairs()Итерация с помощью ipairs()pairs() против ipairs()Повторение — Лист персонажа2Дополнительные функции библиотеки table
table.concat()Создание таблиц и unpack()table.sort()Пользовательская сортировка с помощью функцийИтоги — Таблица рекордов5Проект: Движок текстового квеста
Настройка проекта: КомнатаСоединение комнатПотренируйтесь самостоятельно: Онлайн-компилятор Lua