Exibindo as Saídas
Parte da seção Logic & Flow do Journey de Lua da Coddy — lição 31 de 54.
Desafio
FácilMelhore a experiência do usuário no jogo exibindo todas as saídas disponíveis para o jogador após mostrar a descrição da sala.
Você recebeu as variáveis startingRoom, gardenRoom e player do desafio anterior.
Modifique o loop do jogo para exibir as saídas disponíveis:
- Imprima a descrição da sala atual do jogador
- Imprima
"Exits:"em uma nova linha - Use
pairs()para iterar pela tabelaexitsda sala atual - Para cada saída, imprima
" - "(dois espaços, um traço e um espaço) seguido pelo nome da direção - 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
exitsda sala atual - Se corresponder, atualize
player.currentRoompara a sala armazenada nessa saída - Se o comando não corresponder a nenhuma saída e não for
"quit", imprima"You can't go that way." - Se o comando for
"quit", definagameRunningcomofalsepara sair do loop
O loop deve continuar até que o usuário digite "quit".
Formato de Saída Esperado:
You find yourself in a dusty library filled with ancient books and scrolls.
Exits:
- east
>
A hidden garden with overgrown plants and a small fountain.
Exits:
- west
>
You can't go that way.
A hidden garden with overgrown plants and a small fountain.
Exits:
- west
>
You find yourself in a dusty library filled with ancient books and scrolls.
Exits:
- east
> Experimente você mesmo
-- Room definitions
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 = {}
}
-- Connect rooms
startingRoom.exits["north"] = gardenRoom
gardenRoom.exits["south"] = startingRoom
-- Player
local player = {
currentRoom = startingRoom
}
-- Game loop
local gameRunning = true
while gameRunning do
print(player.currentRoom.description)
io.write("> ")
local command = io.read()
if command == "quit" then
gameRunning = false
elseif player.currentRoom.exits[command] then
player.currentRoom = player.currentRoom.exits[command]
else
print("You can't go that way.")
end
endTodas as lições de Logic & Flow
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çõesRecapitulação - Placar de recordes5Projeto: Engine de Aventura de Texto
Configuração do Projeto: A SalaConectando as Salas