Moving the Player
Part of the Logic & Flow section of Coddy's Lua journey — lesson 29 of 54.
Challenge
EasyImplement the movement system that allows the player to navigate between rooms by checking their input against available exits.
You are provided with the startingRoom, gardenRoom, and player variables from the previous challenge.
Modify the game loop to handle movement commands:
- Print the description of the player's current room
- Print the prompt
"> "(greater-than sign followed by a space) without a newline - Read the user's command using
io.read() - Check if the command matches a key in the current room's
exitstable - If it matches, update
player.currentRoomto the room stored in that exit - If the command is
"quit", setgameRunningtofalseto exit the loop
The loop should continue until the user types "quit".
Note: Because io.write("> ") does not add a newline, the next line of output (the room description) appears immediately after the prompt on the same line in the raw output stream. Each loop iteration produces: the room description on its own line, then > with no newline, so the following description continues on that same line.
Expected Output Format (inputs: east, then quit):
You find yourself in a dusty library filled with ancient books and scrolls.
> A hidden garden with overgrown plants and a small fountain.
> Try it yourself
-- 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
endAll lessons in Logic & Flow
1Advanced Table Iteration
Iterating with pairs()Iterating with ipairs()pairs() vs. ipairs()Recap - Character Sheet2More Table Library Functions
table.concat()table construction & unpack()table.sort()Custom Sorting with FunctionsRecap - High Score Board5Project: Text Adventure Engine
Project Setup: The RoomLinking Rooms