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 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
exitsbieżącego pokoju - Jeśli pasuje, ustaw
player.currentRoomna 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ę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
endWszystkie 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