Menu
CoddyTech

Movendo o Jogador

Parte da seção Lógica e fluxo do Journey de Lua da Coddy. Lição 29 de 54.

challenge icon

Desafio

Fácil

Implemente o sistema de movimentação que permite ao jogador navegar entre salas verificando sua entrada 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 movimentação:

  • O código inicial conecta as salas: east leva da biblioteca ao jardim e west leva de volta
  • Imprima a descrição da sala atual do jogador
  • Imprima o prompt "> " (sinal de maior seguido de um espaço) sem uma quebra de 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".

Observação: Como io.write("> ") não adiciona uma quebra de linha, a próxima linha de saída (a descrição da sala) aparece imediatamente após o prompt, na mesma linha do fluxo de saída bruto. Cada iteração do loop produz: a descrição da sala em sua própria linha e, em seguida, > sem quebra de linha, então 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

-- Definições das salas
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 = {}
}

-- Defina as saídas usando east / west
startingRoom.exits = {
  east = gardenRoom
}

gardenRoom.exits = {
  west = startingRoom
}

-- Jogador
local player = {
  currentRoom = startingRoom
}

-- Loop do jogo
local gameRunning = true

-- TODO: Escreva o loop while aqui

Todas as lições de Lógica e fluxo

Pratique por conta própria: Compilador de Lua online