Menu
Coddy logo textTech

Wyświetlanie wyjść

Część sekcji Logika i przepływ programu ścieżki Lua w Coddy. Lekcja 31 z 54.

challenge icon

Wyzwanie

Łatwy

Ulepsz obsługę gry, wyświetlając graczowi wszystkie dostępne wyjścia po pokazaniu opisu pomieszczenia.

Otrzymujesz zmienne startingRoom, gardenRoom i player z poprzedniego wyzwania.

Zmodyfikuj pętlę gry, aby wyświetlała dostępne wyjścia:

  • Wyświetl opis aktualnego pomieszczenia gracza
  • Wyświetl "Exits:" w nowym wierszu
  • Użyj pairs(), aby przejść przez tabelę exits aktualnego pomieszczenia
  • Dla każdego wyjścia wyświetl " - " (dwie spacje, myślnik i spacja), a następnie nazwę kierunku
  • Wyświetl znak zachęty "> " (znak większości, po którym następuje spacja) bez znaku nowego wiersza
  • Odczytaj polecenie użytkownika za pomocą io.read()
  • Sprawdź, czy polecenie pasuje do klucza w tabeli exits aktualnego pomieszczenia
  • Jeśli pasuje, zaktualizuj player.currentRoom, przypisując mu pomieszczenie zapisane w tym wyjściu
  • Jeśli polecenie nie pasuje do żadnego wyjścia i nie jest równe "quit", wyświetl "You can't go that way."
  • Jeśli polecenie jest równe "quit", ustaw gameRunning na false, aby wyjść z pętli

Pętla powinna działać, dopóki użytkownik nie wpisze "quit".

Oczekiwany format wyjścia:

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
> 

Spróbuj swoich sił

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

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Lua online