Menu
CoddyTech

Перемещение игрока

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

challenge icon

Задание

Легко

Реализуй систему перемещения, которая позволяет игроку перемещаться между комнатами, проверяя введённую команду на соответствие доступным выходам.

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

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

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