Lua Textadventure Engine 1.3 – Übungen

Leeres Adventure

Aufgaben

1. Objekte positionieren und benutzen

Aufgabe 1.1

Füge dem Spieler ein Objekt hinzu, das „Troete“ heisst.


In der Datei uebung/_spieler:

spieler = {

   lebendig = true,

   ort = start_ort,

   objekte = {

     Troete = { }

   }

}


Aufgabe 1.2

Sorge dafür, dass die Troete bei Benutzen die Nachricht „Trööööööt“ ausgeben.


In der Datei uebung/_spieler:

spieler = {

  lebendig = true,

  ort = start_ort,

  objekte = {

    Troete = {
      benutzen = function(selbst)
        nachricht("Tröööööt!")
      end
    }

  }

}

Anmerkung: Auch wenn wir für die Benutzung der Troete den Bezug auf selbst nicht brauchen, schreiben wir ihn immer rein.


Aufgabe 1.3

Programmiere ein Buch, das bei Benutzung die Nachricht „Du schnappst Dir das Buch und liest eine Runde.“ ausgibt.


In der Datei spiele/uebung/_spieler:

objekte = {
  Troete = {
    benutzen = function(selbst)
      nachricht("Tröööööt!")
    end
  },

  Buch = {
    benutzen = function(selbst)
      nachricht("Du schnappst Dir das Buch und liest eine Runde.")
    end
  }

}

Beachte: Troete und Buch sind Tabelleneinträge, die durch ein Komma getrennt werden müssen!


Aufgabe 1.4

Programmiere ein Objekt Xylophon, das bei Benutzung die Nachricht „Kling Klang Klong“ ausgibt. Positioniere das Xylophon im Kinderzimmer.


In der Datei spiele/uebung/kinderzimmer:

kinderzimmer = {

  name = "Kinderzimmer",

  objekte = {

    Xylophon = {
      benutzen = function(selbst)
        nachricht("kling klang klong")
      end
    }
    
  }

}


2. Objekte anschauen

Aufgabe 2.1

Bei Anschauen soll die Troete folgende Nachricht ausgeben: „Die Tröte ist ganz schön alt und verbeult.“


In der Datei spiele/uebung/_spieler:

objekte = {
  Troete = {
    benutzen = function(selbst)
      nachricht("Tröööööt!")
    end,

    anschauen = function(selbst)
      nachricht("Die Tröte ist ganz schön alt und verbeult.")
    end
  }, ...

Beachte auch hier: Die Tröte ist – wie alle Objekte – eine Tabelle. Die Funktionen benutzen und anschauen sind Tabelleneinträge, und müssen mit einem Komma getrennt werden!


Aufgabe 2.2

Das Buch soll bei Anschauen folgende Nachricht ausgeben: „Das Buch trägt den Titel: Textadventures heil und gesund überstehen – 1000 Tipps für Anfänger und Profis.“


In der Datei spiele/uebung/_spieler:

Buch = {
  benutzen = function(selbst)
    nachricht("Du schnappst Dir das Buch und liest eine Runde.")
  end,

  anschauen = function(selbst)
    nachricht("Das Buch trägt den Titel: Textadventures heil und gesund 
               überstehen - 1000 Tipps für Anfänger und Profis.")
  end
}


3. Eigenschaften von Objekten

Aufgabe 3.1

Füge der Troete eine Eigenschaft troetzaehler hinzu. Sie soll am Anfang den Wert 0 haben und bei jedem Tröten um 1 erhöht werden. Dazu soll nach jedem tröten eine Nachricht wie „Du hast 2 mal getrötet“ erscheinen.


– Die Troete ist (wie alle Objekte!!!) eine Tabelle. Also ist troetenzaehler ein Tabelleneintrag.

– Innerhalb der Funktion benutzen(selbst) kriegst Du den Wert des Zählers über selbst.troetenzaehler

– Die Erhöhung um 1 sieht so aus: selbst.troetzaehler = selbst.troetzaehler + 1

nachricht("Du hast " .. selbst.troetzaehler .. " mal getrötet") liefert die gewünschte Ausgabe.



In der Datei spiele/uebung/_spieler:

Troete = {
  troetzaehler = 0,

  benutzen = function(selbst)
    nachricht("Tröööööt!")
    selbst.troetzaehler = selbst.troetzaehler + 1
    nachricht("Du hast " .. selbst.troetzaehler .. " mal getrötet")
  end,

  anschauen = function(selbst)
    nachricht("Die Tröte ist ganz schön alt und verbeult.")
  end
},


Aufgabe 3.2

Sorge dafür, dass die Spielerin oder der Spieler maximal dreimal tröten darf. Bei einem erneuten Versuch soll die Nachricht „Jetzt ist aber mal gut mit dem Getröte!“ erscheinen.


Du musst den Wert des Zählers mit if abfragen: if selbst.troetenzaehler < 3 then ...



In der Datei spiele/uebung/_spieler:

Troete = {
  troetzaehler = 0,

  benutzen = function(selbst)
    if selbst.troetzaehler < 3 then
      nachricht("Tröööööt!")
      selbst.troetzaehler = selbst.troetzaehler + 1
      nachricht("Du hast " .. selbst.troetzaehler .. " mal getrötet")
      else
        nachricht("Jetzt ist aber mal gut mit dem Getröte!")
      end
   end, ...


4. Objekte gemeinsam benutzen

Aufgabe 4.1

Erzeuge ein Objekt Erfrischer, das, gemeinsam mit der Troete benutzt, den Troetenzaehler auf 0 setzt.


In der Datei spiele/uebung/_spieler:

Erfrischer = {
  benutzen_mit = function(selbst, partner)
    partner.troetzaehler = 0
  end
},