Menu
Coddy logo textTech

Poruszanie graczem

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

challenge icon

Wyzwanie

Łatwy

Zaimplementuj system poruszania się, który umożliwia graczowi przemieszczanie się między pokojami przez porównywanie wprowadzonych poleceń z dostępnymi wyjściami.

Otrzymujesz zmienne startingRoom, gardenRoom i player z poprzedniego wyzwania.

Zmodyfikuj pętlę gry, aby obsługiwała polecenia ruchu:

  • Wyświetl opis pokoju, w którym aktualnie znajduje się gracz
  • Wyświetl znak zachęty "> " (znak większości, po którym następuje spacja) bez znaku nowej linii
  • Odczytaj polecenie użytkownika za pomocą io.read()
  • Sprawdź, czy polecenie pasuje do klucza w tabeli exits bieżącego pokoju
  • Jeśli pasuje, ustaw player.currentRoom na pokój zapisany przy tym wyjściu
  • Jeśli poleceniem jest "quit", ustaw gameRunning na false, aby zakończyć pętlę

Pętla powinna działać do momentu, gdy użytkownik wpisze "quit".

Uwaga: Ponieważ io.write("> ") nie dodaje znaku nowej linii, następny wiersz wyjścia (opis pokoju) pojawia się bezpośrednio po znaku zachęty, w tym samym wierszu surowego strumienia wyjściowego. Każda iteracja pętli generuje opis pokoju w osobnym wierszu, a następnie > bez znaku nowej linii, więc kolejny opis pojawia się w tym samym wierszu.

Oczekiwany format wyjścia (dane wejściowe: east, a następnie quit):

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

Spróbuj swoich sił

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

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Lua online