home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 September
/
Simtel20_Sept92.cdr
/
msdos
/
pgmutl
/
elan.zoo
/
demo
/
therapy.eln
< prev
Wrap
Text File
|
1987-08-18
|
9KB
|
435 lines
LET PERSON = INT;
PROC verbpart:
next random;
IF drawing < 70
THEN
transverb;
object
ELSE intransverb
FI
ENDPROC verbpart;
PROC verb ending:
IF person = 3
THEN put ("s")
FI;
person := 0
ENDPROC verb ending;
PROC transverb:
trans inf;
verb ending
ENDPROC transverb;
PROC trans inf:
next random;
IF drawing < 10
THEN put (" hate")
ELIF drawing < 20
THEN put (" love")
ELIF drawing < 30
THEN put (" fear")
ELIF drawing < 40
THEN put (" like")
ELIF drawing < 45
THEN put (" accept")
ELIF drawing < 50
THEN put (" respect")
ELIF drawing < 55
THEN put (" offend")
ELIF drawing < 60
THEN put (" attack")
ELIF drawing < 65
THEN put (" reject")
ELIF drawing < 70
THEN put (" understand")
ELIF drawing < 75
THEN put (" ignore")
ELIF drawing < 80
THEN put (" know")
ELIF drawing < 85
THEN put (" betray")
ELIF drawing < 90
THEN put (" threaten")
ELIF drawing < 95
THEN put (" shock")
ELSE put (" observe")
FI
ENDPROC trans inf;
PROC subst:
next random;
IF drawing < 16
THEN put (" man")
ELIF drawing < 32
THEN put (" male")
ELIF drawing < 48
THEN put (" woman")
ELIF drawing < 64
THEN put (" female")
ELIF drawing < 80
THEN put (" child")
ELIF drawing < 93
THEN put (" person")
ELSE put (" subject")
FI
ENDPROC subst;
PROC subject:
next random;
IF person = 2
THEN put (" you")
ELSE nounphrase
FI
ENDPROC subject;
PROC statement ending:
next random;
IF drawing < 10
THEN put ("!")
ELSE put (".")
FI
ENDPROC statement ending;
PROC statement:
next random;
IF drawing < 25
THEN relativation
FI;
subject;
verbpart
ENDPROC statement;
PROC sentence:
choose person;
next random;
IF drawing > 2 * credits
THEN
statement;
personal address option;
statement ending
ELSE
question;
personal address option;
question ending
FI
ENDPROC sentence;
PROC relativation:
next random;
IF drawing < 8
THEN put (" I wonder if")
ELIF drawing < 16
THEN put (" I don't want to know if")
ELIF drawing < 24
THEN put (" I don't care if")
ELIF drawing < 32
THEN put (" I think")
ELIF drawing < 40
THEN put (" I conclude")
ELIF drawing < 48
THEN put (" I suspect")
ELIF drawing < 56
THEN put (" I suppose")
ELIF drawing < 64
THEN put (" I guess")
ELIF drawing < 72
THEN put (" I'm afraid")
ELIF drawing < 79
THEN put (" It looks like")
ELIF drawing < 86
THEN put (" so you think")
ELIF drawing < 93
THEN put (" you act as if")
ELSE put (" therefore")
FI
ENDPROC relativation;
PROC question ending:
put ("? ");
TEXT VAR dummy;
get (dummy)
ENDPROC question ending;
PROC question:
next random;
IF drawing > 75
THEN modality
FI;
auxiliary verb;
subject;
person := 0;
verbpart
ENDPROC question;
PROC personal address option:
next random;
IF drawing < 3
THEN put (", " + patient name)
ELIF drawing < 5
THEN put (", my dear")
ELIF drawing < 7
THEN put (", mon ami")
ELIF drawing < 8
THEN put (", mon cher " + patient name)
FI
ENDPROC personal address option;
PROC object:
IF person = 2
THEN put (" yourself")
ELSE nounphrase
FI
ENDPROC object;
PROC nounphrase:
next random;
IF drawing < 2
THEN put (" your IBM representative")
ELIF drawing < 10
THEN put (" someone like you")
ELIF drawing < 17
THEN put (" your partner")
ELIF drawing < 25
THEN put (" your rival")
ELIF drawing < 32
THEN put (" everybody")
ELIF drawing < 40
THEN put (" your neighbour")
ELIF drawing < 47
THEN put (" your mother in law")
ELIF drawing < 55
THEN put (" your cousin")
ELSE
article;
adjective option;
subst
FI
ENDPROC nounphrase;
PROC next random:
drawing := random (1, 99)
ENDPROC next random;
PROC modality:
next random;
IF drawing < 10
THEN put (" in which respect")
ELIF drawing < 40
THEN put (" why")
ELIF drawing < 60
THEN put (" since when")
ELIF drawing < 70
THEN put (" how often")
ELIF drawing < 80
THEN put (" for what reason")
ELIF drawing < 90
THEN put (" where")
ELSE put (" when")
FI
ENDPROC modality;
PROC intransverb:
intrans inf;
verb ending;
again option
ENDPROC intransverb;
PROC intrans inf:
next random;
IF drawing < 15
THEN put (" sleep")
ELIF drawing < 30
THEN put (" yawn")
ELIF drawing < 45
THEN put (" think")
ELIF drawing < 58
THEN put (" drink")
ELIF drawing < 65
THEN put (" dream")
ELIF drawing < 72
THEN put (" sweat")
ELIF drawing < 79
THEN put (" tremble")
ELIF drawing < 86
THEN put (" smile")
ELSE put (" mumble")
FI
ENDPROC intrans inf;
PROC choose person:
next random;
IF drawing < 50
THEN person := 2
ELSE person := 3
FI
ENDPROC choose person;
PROC auxiliary verb:
IF person = 2
THEN put (" do")
ELSE put (" does")
FI
ENDPROC auxiliary verb;
PROC article ending:
IF n wanted
THEN
put ("n");
n wanted := false
FI
ENDPROC article ending;
PROC article:
next random;
n wanted := false;
IF drawing < 30
THEN put (" the")
ELIF drawing < 45
THEN put (" that")
ELIF drawing < 60
THEN put (" this")
ELIF drawing < 65
THEN put (" every")
ELIF drawing < 90
THEN
n wanted := true;
put (" a")
ELSE put (" some")
FI
ENDPROC article;
PROC again option:
next random;
IF drawing < 5
THEN put (" again")
ELIF drawing < 10
THEN put (" now")
FI
ENDPROC again option;
PROC adjective option:
next random;
IF drawing < 4
THEN put (" normal")
ELIF drawing < 8
THEN put (" healthy")
ELIF drawing < 12
THEN put (" usual")
ELIF drawing < 16
THEN
article ending;
put (" intelligent")
ELIF drawing < 20
THEN put (" depressed")
ELIF drawing < 24
THEN
article ending;
put (" agressive")
FI
ENDPROC adjective option;
program:
explanation;
request name;
initialize random;
nasty initial remark;
session;
nasty final remark.
explanation:
put ("Your therapist will ask you some questions");
put (" and make some helpful observations.");
line (2);
put ("Please give a short answer to each question.");
line (3).
request name:
TEXT VAR patient name;
REP
put ("Your name please?");
get (patient name)
UNTIL patient name <> ""
ENDREP.
initialize random:
TEXT VAR copy :: patient name;
INT VAR i;
INT VAR drawing;
WHILE copy <> ""
REP
i := 32;
WHILE HEAD copy > ascii (i)
REP
drawing := choose128;
i INCR 1
ENDREP;
copy := TAIL copy
ENDREP.
nasty initial remark:
line (3);
next random;
IF drawing < 10
THEN put ("You needn't shout. just sit down.")
ELIF drawing < 20
THEN put ("Oh yes, they told me.")
ELIF drawing < 30
THEN put ("Never mind.")
ELIF drawing < 40
THEN put ("That's what you think.")
ELIF drawing < 50
THEN put ("Hm. We'll see.")
ELIF drawing < 60
THEN put ("Take a chair, hee hee.")
ELIF drawing < 70
THEN
put ("Are you sure you're ");
put (patient name);
put ("?")
ELIF drawing < 80
THEN put ("Better take another chair, because of the dog.")
ELIF drawing < 90
THEN put ("Are you comfortable? There we go.")
ELSE put ("I wonder.")
FI;
line (3).
session:
INT VAR person;
BOOL VAR n wanted;
INT VAR credits :: 45;
REP
sentence;
line (1);
credits := credits - 2
UNTIL credits <= 0
ENDREP.
nasty final remark:
line (2);
next random;
IF drawing < 10
THEN put ("Not that way, that's the window.")
ELIF drawing < 20
THEN put ("We won't see that one back.")
ELIF drawing < 30
THEN put ("Oops. What have I said.")
ELIF drawing < 40
THEN put ("Put that knife away. SISTER! HELP!")
ELIF drawing < 50
THEN put ("No personal checques. Cash please!")
ELIF drawing < 60
THEN put ("I really enjoyed doing that.")
ELIF drawing < 70
THEN put ("I hope we understand one another?")
ELIF drawing < 80
THEN put ("You can leave now.")
ELIF drawing < 90
THEN put ("You can crawl out from under that chair now.")
ELSE put ("How's that for an inferiority complex?")
FI.