Menu
Coddy logo textTech

Obsługa nieprawidłowych ruchów

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

challenge icon

Wyzwanie

Łatwy

Dodaj obsługę błędów do systemu poruszania się, aby informować gracza o wpisaniu nieprawidłowego kierunku.

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

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

  • Połącz pokoje za pomocą wyjść north/south: ustaw startingRoom.exits["north"] na gardenRoom, a gardenRoom.exits["south"] na startingRoom
  • Wyświetl opis bieżącego pokoju gracza
  • 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 odpowiada kluczowi w tabeli exits bieżącego pokoju
  • Jeśli tak, ustaw player.currentRoom na pokój zapisany w tym wyjściu
  • Jeśli polecenie nie odpowiada żadnemu wyjściu i nie jest równe "quit", wyświetl "You can't go that way."
  • Jeśli polecenie to "quit", ustaw gameRunning na false, aby zakończyć pętlę

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

Oczekiwany format wyjścia:

You find yourself in a dusty library filled with ancient books and scrolls.
> 
A hidden garden with overgrown plants and a small fountain.
> 
You can't go that way.
A hidden garden with overgrown plants and a small fountain.
> 
You find yourself in a dusty library filled with ancient books and scrolls.
> 

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 = {}
}

-- Set exits using east / west
startingRoom.exits = {
  east = gardenRoom
}

gardenRoom.exits = {
  west = 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]
  end
end

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Lua online