if-de :: Forum Foren-Übersicht
Autor Nachricht
<  Beliebiges Objekt/Wort
Maik
BeitragVerfasst am: Mo, 5 Jan 2004 - 22:12  Antworten mit Zitat
Kompassleser
Kompassleser


Anmeldungsdatum: 19.09.2002
Beiträge: 217

Wie realisiere ich folgendes:
> schreibe "Hallo" auf Papier?
Funktioniert es auch ohne ""?
Oder muss für jedes Wort ein extra Substantiv definiert werden?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Martin
BeitragVerfasst am: Mi, 7 Jan 2004 - 13:17  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 25.08.2002
Beiträge: 677
Wohnort: München

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.
_________________
Every silver lining has a cloud.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Martin
BeitragVerfasst am: Mi, 7 Jan 2004 - 21:31  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 25.08.2002
Beiträge: 677
Wohnort: München

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à:
Code:

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...
_________________
Every silver lining has a cloud.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Alle Zeiten sind GMT + 1 Stunde (MEZ)

Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Seite 1 von 1
if-de :: Forum Foren-Übersicht  >  T.A.G.

Neues Thema eröffnen   Neue Antwort erstellen


 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.



Kontakt: Administrator

Powered by phpBB and NoseBleed v1.05