Menu
CoddyTech

Обработка некорректных ходов

Часть раздела Логика и управление потоком путешествия по Lua на Coddy. Урок 30 из 54.

challenge icon

Задание

Легко

Добавь обработку ошибок в систему перемещения, чтобы сообщать игроку, когда он выбирает недопустимое направление.

Тебе предоставлены переменные 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

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор Lua