home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / elan / demo / therapy.eln < prev   
Text File  |  1987-08-18  |  9KB  |  435 lines

  1.  
  2. LET PERSON = INT;
  3.  
  4. PROC verbpart:
  5.   next random;
  6.   IF drawing < 70
  7.   THEN
  8.     transverb;
  9.     object
  10.   ELSE intransverb
  11.   FI
  12. ENDPROC verbpart;
  13.  
  14. PROC verb ending:
  15.   IF person = 3
  16.   THEN put ("s")
  17.   FI;
  18.   person := 0
  19. ENDPROC verb ending;
  20.  
  21. PROC transverb:
  22.   trans inf;
  23.   verb ending
  24. ENDPROC transverb;
  25.  
  26. PROC trans inf:
  27.   next random;
  28.   IF drawing < 10
  29.   THEN put (" hate")
  30.   ELIF drawing < 20
  31.   THEN put (" love")
  32.   ELIF drawing < 30
  33.   THEN put (" fear")
  34.   ELIF drawing < 40
  35.   THEN put (" like")
  36.   ELIF drawing < 45
  37.   THEN put (" accept")
  38.   ELIF drawing < 50
  39.   THEN put (" respect")
  40.   ELIF drawing < 55
  41.   THEN put (" offend")
  42.   ELIF drawing < 60
  43.   THEN put (" attack")
  44.   ELIF drawing < 65
  45.   THEN put (" reject")
  46.   ELIF drawing < 70
  47.   THEN put (" understand")
  48.   ELIF drawing < 75
  49.   THEN put (" ignore")
  50.   ELIF drawing < 80
  51.   THEN put (" know")
  52.   ELIF drawing < 85
  53.   THEN put (" betray")
  54.   ELIF drawing < 90
  55.   THEN put (" threaten")
  56.   ELIF drawing < 95
  57.   THEN put (" shock")
  58.   ELSE put (" observe")
  59.   FI
  60. ENDPROC trans inf;
  61.  
  62. PROC subst:
  63.   next random;
  64.   IF drawing < 16
  65.   THEN put (" man")
  66.   ELIF drawing < 32
  67.   THEN put (" male")
  68.   ELIF drawing < 48
  69.   THEN put (" woman")
  70.   ELIF drawing < 64
  71.   THEN put (" female")
  72.   ELIF drawing < 80
  73.   THEN put (" child")
  74.   ELIF drawing < 93
  75.   THEN put (" person")
  76.   ELSE put (" subject")
  77.   FI
  78. ENDPROC subst;
  79.  
  80. PROC subject:
  81.   next random;
  82.   IF person = 2
  83.   THEN put (" you")
  84.   ELSE nounphrase
  85.   FI
  86. ENDPROC subject;
  87.  
  88. PROC statement ending:
  89.   next random;
  90.   IF drawing < 10
  91.   THEN put ("!")
  92.   ELSE put (".")
  93.   FI
  94. ENDPROC statement ending;
  95.  
  96. PROC statement:
  97.   next random;
  98.   IF drawing < 25
  99.   THEN relativation
  100.   FI;
  101.   subject;
  102.   verbpart
  103. ENDPROC statement;
  104.  
  105. PROC sentence:
  106.   choose person;
  107.   next random;
  108.   IF drawing > 2 * credits
  109.   THEN
  110.     statement;
  111.     personal address option;
  112.     statement ending
  113.   ELSE
  114.     question;
  115.     personal address option;
  116.     question ending
  117.   FI
  118. ENDPROC sentence;
  119.  
  120. PROC relativation:
  121.   next random;
  122.   IF drawing < 8
  123.   THEN put (" I wonder if")
  124.   ELIF drawing < 16
  125.   THEN put (" I don't want to know if")
  126.   ELIF drawing < 24
  127.   THEN put (" I don't care if")
  128.   ELIF drawing < 32
  129.   THEN put (" I think")
  130.   ELIF drawing < 40
  131.   THEN put (" I conclude")
  132.   ELIF drawing < 48
  133.   THEN put (" I suspect")
  134.   ELIF drawing < 56
  135.   THEN put (" I suppose")
  136.   ELIF drawing < 64
  137.   THEN put (" I guess")
  138.   ELIF drawing < 72
  139.   THEN put (" I'm afraid")
  140.   ELIF drawing < 79
  141.   THEN put (" It looks like")
  142.   ELIF drawing < 86
  143.   THEN put (" so you think")
  144.   ELIF drawing < 93
  145.   THEN put (" you act as if")
  146.   ELSE put (" therefore")
  147.   FI
  148. ENDPROC relativation;
  149.  
  150. PROC question ending:
  151.   put ("? ");
  152.   TEXT VAR dummy;
  153.   get (dummy)
  154. ENDPROC question ending;
  155.  
  156. PROC question:
  157.   next random;
  158.   IF drawing > 75
  159.   THEN modality
  160.   FI;
  161.   auxiliary verb;
  162.   subject;
  163.   person := 0;
  164.   verbpart
  165. ENDPROC question;
  166.  
  167. PROC personal address option:
  168.   next random;
  169.   IF drawing < 3
  170.   THEN put (", " + patient name)
  171.   ELIF drawing < 5
  172.   THEN put (", my dear")
  173.   ELIF drawing < 7
  174.   THEN put (", mon ami")
  175.   ELIF drawing < 8
  176.   THEN put (", mon cher " + patient name)
  177.   FI
  178. ENDPROC personal address option;
  179.  
  180. PROC object:
  181.   IF person = 2
  182.   THEN put (" yourself")
  183.   ELSE nounphrase
  184.   FI
  185. ENDPROC object;
  186.  
  187. PROC nounphrase:
  188.   next random;
  189.   IF drawing < 2
  190.   THEN put (" your IBM representative")
  191.   ELIF drawing < 10
  192.   THEN put (" someone like you")
  193.   ELIF drawing < 17
  194.   THEN put (" your partner")
  195.   ELIF drawing < 25
  196.   THEN put (" your rival")
  197.   ELIF drawing < 32
  198.   THEN put (" everybody")
  199.   ELIF drawing < 40
  200.   THEN put (" your neighbour")
  201.   ELIF drawing < 47
  202.   THEN put (" your mother in law")
  203.   ELIF drawing < 55
  204.   THEN put (" your cousin")
  205.   ELSE
  206.     article;
  207.     adjective option;
  208.     subst
  209.   FI
  210. ENDPROC nounphrase;
  211.  
  212. PROC next random:
  213.   drawing := random (1, 99)
  214. ENDPROC next random;
  215.  
  216. PROC modality:
  217.   next random;
  218.   IF drawing < 10
  219.   THEN put (" in which respect")
  220.   ELIF drawing < 40
  221.   THEN put (" why")
  222.   ELIF drawing < 60
  223.   THEN put (" since when")
  224.   ELIF drawing < 70
  225.   THEN put (" how often")
  226.   ELIF drawing < 80
  227.   THEN put (" for what reason")
  228.   ELIF drawing < 90
  229.   THEN put (" where")
  230.   ELSE put (" when")
  231.   FI
  232. ENDPROC modality;
  233.  
  234. PROC intransverb:
  235.   intrans inf;
  236.   verb ending;
  237.   again option
  238. ENDPROC intransverb;
  239.  
  240. PROC intrans inf:
  241.   next random;
  242.   IF drawing < 15
  243.   THEN put (" sleep")
  244.   ELIF drawing < 30
  245.   THEN put (" yawn")
  246.   ELIF drawing < 45
  247.   THEN put (" think")
  248.   ELIF drawing < 58
  249.   THEN put (" drink")
  250.   ELIF drawing < 65
  251.   THEN put (" dream")
  252.   ELIF drawing < 72
  253.   THEN put (" sweat")
  254.   ELIF drawing < 79
  255.   THEN put (" tremble")
  256.   ELIF drawing < 86
  257.   THEN put (" smile")
  258.   ELSE put (" mumble")
  259.   FI
  260. ENDPROC intrans inf;
  261.  
  262. PROC choose person:
  263.   next random;
  264.   IF drawing < 50
  265.   THEN person := 2
  266.   ELSE person := 3
  267.   FI
  268. ENDPROC choose person;
  269.  
  270. PROC auxiliary verb:
  271.   IF person = 2
  272.   THEN put (" do")
  273.   ELSE put (" does")
  274.   FI
  275. ENDPROC auxiliary verb;
  276.  
  277. PROC article ending:
  278.   IF n wanted
  279.   THEN
  280.     put ("n");
  281.     n wanted := false
  282.   FI
  283. ENDPROC article ending;
  284.  
  285. PROC article:
  286.   next random;
  287.   n wanted := false;
  288.   IF drawing < 30
  289.   THEN put (" the")
  290.   ELIF drawing < 45
  291.   THEN put (" that")
  292.   ELIF drawing < 60
  293.   THEN put (" this")
  294.   ELIF drawing < 65
  295.   THEN put (" every")
  296.   ELIF drawing < 90
  297.   THEN
  298.     n wanted := true;
  299.     put (" a")
  300.   ELSE put (" some")
  301.   FI
  302. ENDPROC article;
  303.  
  304. PROC again option:
  305.   next random;
  306.   IF drawing < 5
  307.   THEN put (" again")
  308.   ELIF drawing < 10
  309.   THEN put (" now")
  310.   FI
  311. ENDPROC again option;
  312.  
  313. PROC adjective option:
  314.   next random;
  315.   IF drawing < 4
  316.   THEN put (" normal")
  317.   ELIF drawing < 8
  318.   THEN put (" healthy")
  319.   ELIF drawing < 12
  320.   THEN put (" usual")
  321.   ELIF drawing < 16
  322.   THEN
  323.     article ending;
  324.     put (" intelligent")
  325.   ELIF drawing < 20
  326.   THEN put (" depressed")
  327.   ELIF drawing < 24
  328.   THEN
  329.     article ending;
  330.     put (" agressive")
  331.   FI
  332. ENDPROC adjective option;
  333.  
  334. program:
  335.   explanation;
  336.   request name;
  337.   initialize random;
  338.   nasty initial remark;
  339.   session;
  340.   nasty final remark.
  341.  
  342.   explanation:
  343.     put ("Your therapist will ask you some questions");
  344.     put (" and make some helpful observations.");
  345.     line (2);
  346.     put ("Please give a short answer to each question.");
  347.     line (3).
  348.   
  349.   request name:
  350.     TEXT VAR patient name;
  351.     REP
  352.       put ("Your name please?");
  353.       get (patient name)
  354.     UNTIL patient name <> ""
  355.     ENDREP.
  356.   
  357.   initialize random:
  358.     TEXT VAR copy :: patient name;
  359.     INT VAR i;
  360.     INT VAR drawing;
  361.     WHILE copy <> ""
  362.     REP
  363.       i := 32;
  364.       WHILE HEAD copy > ascii (i)
  365.       REP
  366.         drawing := choose128;
  367.         i INCR 1
  368.       ENDREP;
  369.       copy := TAIL copy
  370.     ENDREP.
  371.   
  372.   nasty initial remark:
  373.     line (3);
  374.     next random;
  375.     IF drawing < 10
  376.     THEN put ("You needn't shout. just sit down.")
  377.     ELIF drawing < 20
  378.     THEN put ("Oh yes, they told me.")
  379.     ELIF drawing < 30
  380.     THEN put ("Never mind.")
  381.     ELIF drawing < 40
  382.     THEN put ("That's what you think.")
  383.     ELIF drawing < 50
  384.     THEN put ("Hm. We'll see.")
  385.     ELIF drawing < 60
  386.     THEN put ("Take a chair, hee hee.")
  387.     ELIF drawing < 70
  388.     THEN
  389.       put ("Are you sure you're ");
  390.       put (patient name);
  391.       put ("?")
  392.     ELIF drawing < 80
  393.     THEN put ("Better take another chair, because of the dog.")
  394.     ELIF drawing < 90
  395.     THEN put ("Are you comfortable? There we go.")
  396.     ELSE put ("I wonder.")
  397.     FI;
  398.     line (3).
  399.   
  400.   session:
  401.     INT VAR person;
  402.     BOOL VAR n wanted;
  403.     INT VAR credits :: 45;
  404.     REP
  405.       sentence;
  406.       line (1);
  407.       credits := credits - 2
  408.     UNTIL credits <= 0
  409.     ENDREP.
  410.   
  411.   nasty final remark:
  412.     line (2);
  413.     next random;
  414.     IF drawing < 10
  415.     THEN put ("Not that way, that's the window.")
  416.     ELIF drawing < 20
  417.     THEN put ("We won't see that one back.")
  418.     ELIF drawing < 30
  419.     THEN put ("Oops. What have I said.")
  420.     ELIF drawing < 40
  421.     THEN put ("Put that knife away. SISTER! HELP!")
  422.     ELIF drawing < 50
  423.     THEN put ("No personal checques. Cash please!")
  424.     ELIF drawing < 60
  425.     THEN put ("I really enjoyed doing that.")
  426.     ELIF drawing < 70
  427.     THEN put ("I hope we understand one another?")
  428.     ELIF drawing < 80
  429.     THEN put ("You can leave now.")
  430.     ELIF drawing < 90
  431.     THEN put ("You can crawl out from under that chair now.")
  432.     ELSE put ("How's that for an inferiority complex?")
  433.     FI.
  434.   
  435.