Movendo o Jogador
Parte da seção Lógica e fluxo do Journey de Lua da Coddy. Lição 29 de 54.
Desafio
FácilImplemente 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:
eastleva da biblioteca ao jardim ewestleva 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
exitsda sala atual - Se corresponder, atualize
player.currentRoompara a sala armazenada nessa saída - Se o comando for
"quit", definagameRunningcomofalsepara 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
1Iteração avançada de tabelas
Iterando com pairs()Iterando com ipairs()pairs() vs. ipairs()Revisão - Ficha de personagem2Mais funções da biblioteca table
table.concat()Construção de tabelas e unpack()table.sort()Ordenação personalizada com funçõesRevisão - Placar de pontuações máximas5Projeto: Motor de Aventura Textual
Configuração do Projeto: A SalaConectando SalasPratique por conta própria: Compilador de Lua online