Wyświetlanie wyjść
Część sekcji Logika i przepływ programu ścieżki Lua w Coddy. Lekcja 31 z 54.
Wyzwanie
ŁatwyUlepsz 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ęexitsaktualnego 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
exitsaktualnego 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", ustawgameRunningnafalse, 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
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