Menu
Coddy logo textTech

Ungültige Spielzüge verarbeiten

Teil des Abschnitts Logic & Flow der Lua-Journey von Coddy — Lektion 30 von 54.

challenge icon

Aufgabe

Einfach

Fügen Sie dem Bewegungssystem eine Fehlerbehandlung hinzu, um Feedback zu geben, wenn der Spieler eine ungültige Richtung eingibt.

Ihnen werden die Variablen startingRoom, gardenRoom und player aus der vorherigen Herausforderung zur Verfügung gestellt.

Ändern Sie die Spielschleife, um ungültige Bewegungsbefehle zu verarbeiten:

  • Verbinden Sie die Räume über north/south Ausgänge: Setzen Sie startingRoom.exits["north"] auf gardenRoom und gardenRoom.exits["south"] auf startingRoom
  • Geben Sie die Beschreibung des aktuellen Raums des Spielers aus
  • Geben Sie die Eingabeaufforderung "> " (Größer-als-Zeichen gefolgt von einem Leerzeichen) ohne Zeilenumbruch aus
  • Lesen Sie den Befehl des Benutzers mit io.read() ein
  • Prüfen Sie, ob der Befehl mit einem Schlüssel in der Tabelle exits des aktuellen Raums übereinstimmt
  • Wenn er übereinstimmt, aktualisieren Sie player.currentRoom auf den in diesem Ausgang gespeicherten Raum
  • Wenn der Befehl mit keinem Ausgang übereinstimmt und nicht "quit" ist, geben Sie "You can't go that way." aus
  • Wenn der Befehl "quit" lautet, setzen Sie gameRunning auf false, um die Schleife zu beenden

Die Schleife sollte so lange fortgesetzt werden, bis der Benutzer "quit" eingibt.

Erwartetes Ausgabeformat:

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.
> 

Probier es selbst

-- 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

Alle Lektionen in Logic & Flow