Перемещение игрока
Часть раздела Logic & Flow путешествия по 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Все уроки раздела Logic & Flow
1Продвинутая итерация таблиц
Итерация с помощью pairs()Итерация с помощью ipairs()pairs() против ipairs()Повторение — Лист персонажа2Дополнительные функции библиотеки table
table.concat()Создание таблиц и unpack()table.sort()Пользовательская сортировка с помощью функцийИтоги — Таблица рекордов5Проект: Движок текстового квеста
Настройка проекта: КомнатаСоединение комнат