Poruszanie graczem
Część sekcji Logika i przepływ programu ścieżki Lua w Coddy. Lekcja 29 z 54.
Wyzwanie
ŁatwyZaimplementuj 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:
eastz biblioteki prowadzi do ogrodu, awestprowadzi 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
exitsbieżącego pokoju - Jeśli odpowiada, zaktualizuj
player.currentRoom, przypisując mu pokój zapisany przy tym wyjściu - Jeśli poleceniem jest
"quit", ustawgameRunningnafalse, 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
1Zaawansowane iterowanie po tabelach
Iterowanie za pomocą pairs()Iterowanie za pomocą ipairs()pairs() a ipairs()Powtórka — karta postaci2Więcej funkcji biblioteki table
table.concat()Tworzenie tabel i unpack()table.sort()Sortowanie niestandardowe za pomocą funkcjiPodsumowanie — tablica najlepszych wyników5Projekt: silnik tekstowej gry przygodowej
Konfiguracja projektu: pokójŁączenie pokoiPoćwicz samodzielnie: Kompilator Lua online