Перемещение игрока
Часть раздела Логика и управление потоком путешествия по Lua на Coddy. Урок 29 из 54.
Задание
ЛегкоРеализуй систему перемещения, которая позволяет игроку перемещаться между комнатами, проверяя введённую команду на соответствие доступным выходам.
Тебе предоставлены переменные startingRoom, gardenRoom и player из предыдущего задания.
Измени игровой цикл, чтобы обрабатывать команды перемещения:
- Подключи комнаты: выход
eastиз библиотеки ведёт в сад, а выходwestведёт обратно - Выводи описание текущей комнаты игрока
- Выводи приглашение
"> "(знак «больше» и пробел после него) без символа перевода строки - Считывай команду пользователя с помощью
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.
> Попробуйте сами
-- Определения комнат
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 = {}
}
-- Задайте выходы, используя east / west
startingRoom.exits = {
east = gardenRoom
}
gardenRoom.exits = {
west = startingRoom
}
-- Игрок
local player = {
currentRoom = startingRoom
}
-- Игровой цикл
local gameRunning = true
-- TODO: Напишите здесь цикл while
Все уроки раздела Логика и управление потоком
1Продвинутая итерация таблиц
Итерация с помощью pairs()Итерация с помощью ipairs()pairs() против ipairs()Повторение — Лист персонажа2Дополнительные функции библиотеки table
table.concat()Создание таблиц и unpack()table.sort()Пользовательская сортировка с помощью функцийИтоги — Таблица рекордов5Проект: Движок текстового квеста
Настройка проекта: КомнатаСоединение комнатПотренируйтесь самостоятельно: Онлайн-компилятор Lua