Menu
Coddy logo textTech

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

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

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