Menu
CoddyTech

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 sprawdzanie wpisanych poleceń względem dostępnych wyjść.

Masz do dyspozycji zmienne startingRoom, gardenRoom i player z poprzedniego wyzwania.

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

  • W kodzie początkowym pokoje są połączone: east z biblioteki prowadzi do ogrodu, a west prowadzi z powrotem
  • Wypisz opis pokoju, w którym aktualnie znajduje się gracz
  • Wypisz zachętę "> " (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 odpowiada kluczowi w tabeli exits bieżącego pokoju
  • Jeśli odpowiada, zaktualizuj player.currentRoom, przypisując mu 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ępna linia wyjścia (opis pokoju) pojawia się w surowym strumieniu wyjściowym bezpośrednio po zachęcie, w tym samym wierszu. Każda iteracja pętli wypisuje 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ł

-- Definicje pomieszczeń
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 = {}
}

-- Ustaw wyjścia za pomocą east / west
startingRoom.exits = {
  east = gardenRoom
}

gardenRoom.exits = {
  west = startingRoom
}

-- Gracz
local player = {
  currentRoom = startingRoom
}

-- Pętla gry
local gameRunning = true

-- TODO: Napisz tutaj pętlę while

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Lua online