Menu
Coddy logo textTech

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

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

challenge icon

Задание

Легко

Улучшите игровой опыт, отображая игроку все доступные выходы после вывода описания комнаты.

Вам предоставлены переменные startingRoom, gardenRoom и player из предыдущего испытания.

Измените игровой цикл для отображения доступных выходов:

  • Выведите описание текущей комнаты игрока
  • Выведите "Exits:" на новой строке
  • Используйте pairs() для итерации по таблице exits текущей комнаты
  • Для каждого выхода выведите " - " (два пробела, тире и пробел), за которым следует название направления
  • Выведите приглашение к вводу "> " (знак «больше», за которым следует пробел) без перехода на новую строку
  • Прочитайте команду пользователя с помощью 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.
Exits:
  - east
> 
A hidden garden with overgrown plants and a small fountain.
Exits:
  - west
> 
You can't go that way.
A hidden garden with overgrown plants and a small fountain.
Exits:
  - west
> 
You find yourself in a dusty library filled with ancient books and scrolls.
Exits:
  - east
> 

Попробуйте сами

-- Room definitions
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 = {}
}

-- Connect rooms
startingRoom.exits["north"] = gardenRoom
gardenRoom.exits["south"] = startingRoom

-- Player
local player = {
    currentRoom = startingRoom
}

-- Game loop
local gameRunning = true

while gameRunning do
    print(player.currentRoom.description)
    io.write("> ")
    local command = io.read()
    
    if command == "quit" then
        gameRunning = false
    elseif player.currentRoom.exits[command] then
        player.currentRoom = player.currentRoom.exits[command]
    else
        print("You can't go that way.")
    end
end

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

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