IF-Forum

» IF-Forum - Autorencafé - Schreiben! - Beliebiges Objekt/Wort
AntwortenNeues ThemaNeue Umfrage

Beliebiges Objekt/Wort

Geschrieben um 23:12 am 05.01.2004 | Zitat | Editieren | Löschen
Maik
Mitglied
Dr Gumby
Beiträge: 199

Wie realisiere ich folgendes:

schreibe "Hallo" auf Papier?

Funktioniert es auch ohne ""?

Oder muss für jedes Wort ein extra Substantiv definiert werden?

Geschrieben um 14:17 am 07.01.2004 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634

Wie man beliebige Namen (oder Wörter) parst, wurde bereits hier diskutiert:

http://www.ifzentrale.de/forum/viewtopic.php?t=226

In deinem Fall musst du allerdings den objektparser benutzen und ihn auf ein Hilfsobjekt zeigen lassen.

Geschrieben um 22:31 am 07.01.2004 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634

Okay, Leute, anbei ein Beispiel, wie man das Schreiben von Wörtern auf Objekte in T.A.G. realisieren kann. Ja, man kann mit diesem Code immer nur ein Wort schreiben. Und ein Wort kann nur zwölf Buchstaben lang sein. Und es gibt nur Kleinbuchstaben und kleine Umlaute. Und man kann keine Satzzeichen angeben.

T.A.G. ist leider nicht so flexibel, es wurde geschrieben, um Leuten, die nicht gerne programmieren, den Einstieg ins Schreiben von Textadventures zu ermöglichen. Insofern denke ich, dass Maik mit T.A.G. ganz gut bedient ist, auch wenn ich glaube, dass er hier mit seinem Schreiben auf den Zettel etwas sehr Kompliziertes in sein Adventure einbaut, das dem Spiel vielleicht gar nicht zuträglich ist oder gar auf Rate-das-Verb (Was muss man auf den Zettel schreiben?) hinausläuft. Ist nur so'n Gefühl.

Also, voilà:


Feld    tWort (13)

        ! Das Wort, wie es an der Tafel steht

        ! 1 Länge-Bit, zwölf Buchstaben-Bits

Feld    pWort (13)

        ! Das Wort, das im Befehl angegeben wurde

Aktion  Tafelwort

Ausf

    lokal j l m

    wenn (tWort.0 = 0) dann

        Text 'nichts/'

    sonst

        sei l tWort.0

        lösche j

        solange (j<l)

            inkr j

            wenn (j = 2) dann

                ! Erster Buchstabe

                sei m tWort.j

                jenach m

                ("a".."z") dekr m 32

                ("ä")      sei m "Ä"

                ("ö")      sei m "Ö"

                ("ü")      sei m "Ü"

                Ende

                text '[char m]/'

            sonst

                ! weitere Buchstaben

                text '[char tWort.j]/'

            Ende

        ende

    Ende

EndeAusf

ObjAttr beschreibbar

Obj     Tafel

Name    'Wandtafel' f

Adj     'groß'

Subst   'tafel' f

Ort     Klassenzimmer

Besch   Ausf

    wenn (tWort.0) dann

        Text 'An der Tafel steht in Maiks krakeliger

            Handschrift [Tafelwort].'

    sonst

        Text 'An der Tafel steht nichts.'

    Ende

EndeAusf

VorAusf

    (lesen)

    Stop 'An der Tafel steht [Tafelwort].'

EndeAusf

Attr    fest beschreibbar

Obj     Kreide

Name    'weiß^ Kreide' f

Adj     'weiß'

Vor     'tafel'

Subst   'kreide' f

Ort     auf Pult

Besch   'Weiße Kreide. Aus dem Jura.'

Obj     Schwamm

Name    'Schwamm' m

Subst   'schwamm' m

Ort     auf pult

Besch   'Ein weicher Schwamm, triefnass.'

Deko    geschriebenes_Wort

Name    'geschrieben^ Wort' m

Subst   '..' n

Ort     beiMir

VorAusf

    lokal  i  j  k

    (schreiben)

        Bed (pWort.0 > 2)

            'Du willst nichts schreiben? Eigenartig.'

        Bed (tWort.0 = 0)

            'An der Tafel kann immer nur ein Wort stehen.

            Hat die Lehrerin gesagt. Und dass das

            Leerzeichen erst in der zweiten Klasse

            dran kommt.'

        Wenn (aObj2 = Tafel)  dann

            Bed (Kreide beiMir)

                'Du benötigst Kreide, um etwas auf

                [den aObj2] schreiben zu können.'

            loesche i

            wiederhole

                sei tWort.k pWort.i

                inkr i

                inkr k

            bis (i > pWort.0)

            stop 'OK.'

        sonst

            text  'Narrenhände...'

        Ende

    (sonst) stop 'Bisschen  philosophisch  heute,

        gell?'

EndeAusf

Bef     schreiben

Name    'schreiben'

Verb    'schreibe' 'kritzle' 'mockele'

Syntax  dasObj (Allg) auf dasObj (beschreibbar)

Präp    'an'

Ausf

    Text 'Bitte gebe das Wort, das du schreiben willst,

        zwischen Hochkommas an.'

EndeAusf

Bef     wischen

Name    'wische'

Verb    'wische' 'lösche'

Syntax  dasObj

Ausf

    Bed (Schwamm beimir)

        'Du hast nichts zum Wischen.'

    Bed (aObj = Tafel)

        'Du würdest [den aObj] nur nass machen.'

    Bed /(tWort.0 = 0)

        'Die Tafel ist bereits gewischt. (Schließlich

        bist du es, der Klassendienst hat.)'

    lösche tWort.0

    Text 'Du wischst das Gekritzel von der Tafel.'

EndeAusf

Aktion  ObjParser

Ausf

    lokal i

    ! Das geschriebene Wort

    Wenn (wort.1 = 39) und (wort.wortLänge = 39) dann

        sei pWort.0 wortLänge

        schleife i 1 wortLänge

            sei pWort.i wort.i

        Ende

        sei aObj geschriebenes_Wort

        Stop

    Ende

EndeAusf

/*

===========================================================

    Ein bisschen was zum Spielen

*/

Raum    Klassenzimmer

Name    'Klassenzimmer'

Besch   Ausf

    Text 'Das wird die Stätte deines Wirkens für das

    nächste Jahr, vielleicht etwas länger, sein.

    Trostlose Bankreihen und ein Pult. Und eine Tafel

    natürlich.'

    Wenn (tWort.0)

        Text '[#]An der Tafel steht [Tafelwort].'

EndeAusf

Obj     Pult

Name    'Lehrerpult' n

Vor     'lehrer'

Subst   'pult' n

Ort     Klassenzimmer

Attr    Ablage fest

Obj     Stundenplan

Name    'Stundelnplan' m

Vor     'stunden'

Subst   'plan' m

Ort     auf Pult

Text    'Der Stundenplan für das erste Jahr:

        [#]     Zeit  Mo    Di    Mi    Do    Fr    Sa

        [x]     7.45  TAG   TAG   TAG   TAG   ALAN  TAG

        [x]     8.30  TAG   TAG   TAG   TAG   ALAN  TAG

        [x]     9.15  ---   ---   ---   ---   ---   ---

        [x]     9.30  TAG   TAG   TAG   Fld.  TAG   TAG

        [x]    10.15  TAG   TAG   TAG   Fld.  TAG   TAG

        [x]    11.00  ---   ---   ---   ---   ---

        [x]    11.15  TAG   Inf.  QB*   TAG   TAG   frei!

        [x]    12.00  TAG   Inf.  QB*   TAG   TAG

        [#]    *) ersetzt durch TAG'

Aktion  Anfang

Ausf

  lokale raumVar i

  Text '

    [x]Erster Schultag, und schon hast du Klassendienst...

    [#]

    [f]M A I K   L E R N T   S C H R E I B E N[n]

    [x]Ein interaktiver Schönschreibunterricht

    (Mit ENDE kannst du das deutsche Schulsystem

    verlassen.)[#]'

  geheZu Klassenzimmer

EndeAusf

Man könnte den Code auf mehrere Wörter ausweiten, siehe hierzu den oben bereits verlinkten Namens-, nein, jetzt wissen wir's ja, Fliegen-Thread. :-)

Und, Zoltan, gesehen? Hier wird mit Präp eine alternative Präposition zur Syntax-Definition angegeben.

Wie man die 'featureless cubes' aus Spellbreaker implementiert, ist Hausaufgabe...

AntwortenNeues ThemaNeue Umfrage
Powered by Spam Board SVN © 2007 - 2021
Impressum / Datenschutz