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