Menu
Coddy logo textTech

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

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

challenge icon

Задание

Легко

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

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

Измените игровой цикл для обработки команд перемещения:

  • Выведите описание текущей комнаты игрока
  • Выведите приглашение "> " (знак «больше», за которым следует пробел) без перехода на новую строку
  • Прочитайте команду пользователя с помощью 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.
> 

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

-- Game rooms
local startingRoom = {
    description = "You find yourself in a dusty library filled with ancient books and scrolls."
}

local gardenRoom = {
    description = "You step into a beautiful garden with blooming flowers and a gentle breeze."
}

-- Player
local player = {
    currentRoom = startingRoom
}

-- Game loop
local gameRunning = true

while gameRunning do
    print(player.currentRoom.description)
    io.write("> ")
    local command = io.read()
    print("You entered: " .. command)
    
    if command == "quit" then
        gameRunning = false
    end
end

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

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