Menu
Coddy logo textTech

Movendo o Jogador

Parte da seção Logic & Flow do Journey de Lua da Coddy — lição 29 de 54.

challenge icon

Desafio

Fácil

Implemente o sistema de movimento que permite ao jogador navegar entre as salas, verificando a entrada do usuário em relação às saídas disponíveis.

Você recebeu as variáveis startingRoom, gardenRoom e player do desafio anterior.

Modifique o loop do jogo para lidar com comandos de movimento:

  • Imprima a descrição da sala atual do jogador
  • Imprima o prompt "> " (sinal de maior que seguido por um espaço) sem uma nova linha
  • Leia o comando do usuário usando io.read()
  • Verifique se o comando corresponde a uma chave na tabela exits da sala atual
  • Se corresponder, atualize player.currentRoom para a sala armazenada nessa saída
  • Se o comando for "quit", defina gameRunning como false para sair do loop

O loop deve continuar até que o usuário digite "quit".

Nota: Como io.write("> ") não adiciona uma nova linha, a próxima linha de saída (a descrição da sala) aparece imediatamente após o prompt na mesma linha no fluxo de saída bruto. Cada iteração do loop produz: a descrição da sala em sua própria linha, depois > sem nova linha, de modo que a descrição seguinte continua nessa mesma linha.

Formato de Saída Esperado (entradas: east, depois quit):

You find yourself in a dusty library filled with ancient books and scrolls.
> A hidden garden with overgrown plants and a small fountain.
> 

Experimente você mesmo

-- 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

Todas as lições de Logic & Flow