Обработка некорректных ходов
Часть раздела Логика и управление потоком путешествия по Lua на Coddy. Урок 30 из 54.
Задание
ЛегкоДобавь обработку ошибок в систему перемещения, чтобы сообщать игроку, когда он выбирает недопустимое направление.
Тебе предоставлены переменные startingRoom, gardenRoom и player из предыдущего задания.
Измени игровой цикл, чтобы он обрабатывал недопустимые команды перемещения:
- Замени выходы на восток/запад из предыдущего задания выходами на север/юг: задай
startingRoom.exits["north"]значениеgardenRoom, аgardenRoom.exits["south"]— значениеstartingRoom - Выводи описание текущей комнаты игрока
- Выводи приглашение
"> "(знак «больше», за которым следует пробел) без символа новой строки - Считывай команду пользователя с помощью
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.
> A hidden garden with overgrown plants and a small fountain.
> You can't go that way.
A hidden garden with overgrown plants and a small fountain.
> You find yourself in a dusty library filled with ancient books and scrolls.
> Попробуйте сами
-- Определения комнат
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 = {}
}
-- TODO: Соедините комнаты выходами на север и юг
-- Игрок
local player = {
currentRoom = startingRoom
}
-- Игровой цикл
local gameRunning = true
-- TODO: Напишите здесь цикл while
Все уроки раздела Логика и управление потоком
1Продвинутая итерация таблиц
Итерация с помощью pairs()Итерация с помощью ipairs()pairs() против ipairs()Повторение — Лист персонажа2Дополнительные функции библиотеки table
table.concat()Создание таблиц и unpack()table.sort()Пользовательская сортировка с помощью функцийИтоги — Таблица рекордов5Проект: Движок текстового квеста
Настройка проекта: КомнатаСоединение комнатПотренируйтесь самостоятельно: Онлайн-компилятор Lua