Menu
Coddy logo textTech

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

Часть раздела Logic & Flow путешествия по 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

Все уроки раздела Logic & Flow