home *** CD-ROM | disk | FTP | other *** search
/ PC Plus 36 / ISSUE_36_SEP_1989 / BASIC2 / HAIKU.BAS next >
Encoding:
BASIC Source File  |  1989-01-01  |  4.6 KB  |  142 lines

  1. GOSUB initialize
  2.  
  3. REPEAT
  4.   poem$=STRING$(5,10)
  5.   poemptrn$=ptrn$[RND(ptrns)]
  6.   indent=28
  7.  
  8.   FOR i=1 TO LEN(poemptrn$)
  9.     w$=poemptrn${i}
  10.     REPEAT
  11.       IF w$="J" THEN word$=adjv$[RND(adjvs)]
  12.       IF w$="N" THEN word$=noun$[RND(nouns)]
  13.       IF w$="V" THEN word$=verb$[RND(verbs)]
  14.       IF w$="P" THEN word$=prep$[RND(preps)]
  15.     UNTIL INSTR(poem$,word$)=0
  16.  
  17.     IF w$="A" THEN IF RND(2) >1 THEN word$="a" ELSE word$="the"
  18.     word$=" "+word$
  19.     IF INSTR(".;,-",w$) THEN word$=w$
  20.     IF w$="/" THEN word$=indent${TO indent}: indent=indent+2
  21.     poem$=poem$+word$
  22.     word$=""
  23.   NEXT
  24.  
  25.   REPEAT
  26.     a=INSTR(a+1,poem$," a ")
  27.     IF INSTR("aeiou",poem${a+3}) THEN poem$=poem${TO a+1}+"n"+poem${a+2 TO}
  28.   UNTIL a=0
  29.  
  30.   BOX 1500;1800, XVIRTUAL-2100, 2000 FILL WITH 8 COLOUR 1
  31.   PRINT AT(1;1) COLOUR(0) FONT(3) POINTS(18) MODE(2) poem$
  32.  
  33.   i$=UPPER$(INPUT$(1))
  34.   IF i$="S" THEN PRINT #5 poem$
  35.   IF i$="Q" THEN CLOSE #5: END
  36. UNTIL infinity
  37.  
  38. LABEL initialize
  39.   window_=2
  40.   GOSUB open_
  41.   WINDOW OPEN
  42.   PRINT AT(4;12) COLOUR(4) FONT(3) POINTS(36) "Haiku Composer"
  43.   PRINT AT(28;19) COLOUR(1) FONT(2) POINTS(10) "Press any key to view the next haiku"
  44.   PRINT AT(35) COLOUR(1) FONT(2) POINTS(10) "S to save haiku"
  45.   PRINT AT(37) COLOUR(1) FONT(2) POINTS(10) "Q to quit"
  46.   LINE 0;1800, XVIRTUAL;1800 WIDTH 7 COLOUR 2
  47.   LINE 0;3500, XVIRTUAL;3500 WIDTH 7 COLOUR 2
  48.  
  49.   window_=1
  50.   GOSUB open_
  51.   BOX 0;0, XVIRTUAL, YVIRTUAL FILL WITH 8 COLOUR 1
  52.   BOX 0;0, XVIRTUAL, YVIRTUAL-200 COLOUR 2
  53.   BOX 50;50, XVIRTUAL-100, YVIRTUAL-300 COLOUR 2
  54.   GRAPHICS COLOUR 6 LINE WIDTH 5
  55.   LINE 680;3300, 500;3010 START 2 END 2
  56.   LINE 580;3050, 580;2770 START 2 END 2
  57.   LINE 730;3140, 860;3140 START 2 WIDTH 3
  58.   LINE 700;3010, 860;3010 START 2 WIDTH 3
  59.   LINE 680;2870, 860;2870 START 2 WIDTH 3
  60.   LINE 860;3250, 860;2870, 820;2770 START 2 END 2
  61.   LINE 1010;3250, 1010;2770 START 2 END 2
  62.   LINE 1010;3140, 1140;3140 END 2 WIDTH 3
  63.   LINE 1010;3010, 1140;3010 END 2 WIDTH 3
  64.   LINE 1010;2870, 1140;2870 END 2 WIDTH 3
  65.   LINE 650;2500, 500;2300 START 2 END 2
  66.   LINE 650;2450, 1140;2450 WIDTH 3
  67.   LINE 1140;2450, 1140;1990 START 2
  68.   CIRCLE 1000;1990, 140 PART RAD(245), 0
  69.   BOX 600;2000, 250, 250 WIDTH 3
  70.  
  71.   CLOSE WINDOW 3
  72.   CLOSE WINDOW 4
  73.  
  74.   OPEN #5 APPEND "A:\BASIC2\HAIKU.TXT"
  75.   'Change pathname here as required.
  76.  
  77.   RANDOMIZE
  78.   indent$=CHR$(13)+STRING$(2,10)+STRING$(29," ")
  79.   ptrns=10
  80.   adjvs=82: nouns=80: verbs=21: preps=14
  81.   DIM ptrn$[ptrns], adjv$[adjvs], noun$[nouns], verb$[verbs], prep$[preps]
  82.  
  83.   FOR i=1 TO ptrns
  84.     READ ptrn$[i]
  85.   NEXT
  86.   DATA /NPAN;/AJNPAN/JN, /AJNV;/AJJN/PAJN, "/JN/JJ,/ANV", /AJJN;/PAJN/ANV
  87.   DATA /JN/JNV-/JJN, /JJN/PJN-/JN, /JN/JNPAJN-/ANV, /AJN/AJN-/NV
  88.   DATA /JN/NPN/PAJN, /AJN.../ANVPAN/JJN
  89.  
  90.   FOR i=1 TO adjvs
  91.     READ adjv$[i]
  92.   NEXT
  93.   DATA autumn,hidden,bitter,misty,silent,empty,dry,dark,summer,icy,delicate
  94.   DATA quiet,white,swirling,dusky,cool,spring,winter,withered,twilight,dawn
  95.   DATA wispy,azure,blue,billowing,broken,hazy,cold,damp,falling,frosty,long
  96.   DATA late,lingering,limpid,little,morning,muddy,old,red,rough,still,small
  97.   DATA sparkling,throbbing,vermilion,wandering,wild,black,crimson,young
  98.   DATA silver,golden,drowsy,pearl,emerald,pale,distant,calm,shiny,bright
  99.   DATA dappled,sleeping,awakened,dull,spreading,coloured,midsummer,grey
  100.   DATA night,nearby,lone,torn,faraway,ragged,shadowy,stormy,dusty,thin
  101.   DATA vivid,shady,green
  102.  
  103.   FOR i=1 TO nouns
  104.     READ noun$[i]
  105.   NEXT
  106.   DATA beach,bird,blossom,breeze,brook,butterfly,bush,comet,cloud,cliff
  107.   DATA daffodil,daybreak,dawn,dragonfly,dewdrop,dew,dusk,dust,eagle,field
  108.   DATA fir,frost,flower,firefly,flame,feather,forest,glade,glitter,grass
  109.   DATA haze,hill,image,lake,lily,leaf,meadow,moon,mountain,mist,morning
  110.   DATA night,ocean,pine,pond,rain,raindrop,reflection,rainbow,river,rose
  111.   DATA shadow,stream,sea,snowflake,swan,sunshine,snowfield,storm,star
  112.   DATA sunrise,silence,shape,shade,sound,snow,sky,sunset,surf,sun,tree
  113.   DATA thunder,valley,violet,water,wave,wind,wildflower,waterfall,woodland
  114.  
  115.   FOR i=1 TO verbs
  116.     READ verb$[i]
  117.   NEXT
  118.   DATA has stopped,is trickling,struggles,has fallen,has passed,sleeps
  119.   DATA cascades,flutters,has risen,dances,is falling,murmurs,is floating
  120.   DATA tumbles,creeps,stirs,drifts,swirls,sinks,stoops,shakes
  121.  
  122.   FOR i=1 TO preps
  123.     READ prep$[i]
  124.   NEXT
  125.   DATA on,in,under,below,beneath,over,above,near,beside,close to,by,before
  126.   DATA behind,beyond
  127.  
  128.   i$=INPUT$(1)
  129.   WINDOW OPEN
  130. RETURN
  131.  
  132. LABEL open_
  133.   CLOSE #window_
  134.   OPEN #window_ WINDOW window_
  135.   STREAM #window_
  136.   SCREEN GRAPHICS XUSABLE FIXED, YUSABLE FIXED
  137.   WINDOW PLACE 0;1
  138.   WINDOW TITLE ""
  139.   WINDOW CURSOR OFF
  140. RETURN
  141.  
  142.