BASIC2\HAIKU.BAS ·
BAS ·
4.6 KB ·
1989-07-06 ·
from PCPlus_Issue-36_Sep_1989-FluxEngine-360kB
GOSUB initialize
REPEAT
poem$=STRING$(5,10)
poemptrn$=ptrn$[RND(ptrns)]
indent=28
FOR i=1 TO LEN(poemptrn$)
w$=poemptrn${i}
REPEAT
IF w$="J" THEN word$=adjv$[RND(adjvs)]
IF w$="N" THEN word$=noun$[RND(nouns)]
IF w$="V" THEN word$=verb$[RND(verbs)]
IF w$="P" THEN word$=prep$[RND(preps)]
UNTIL INSTR(poem$,word$)=0
IF w$="A" THEN IF RND(2) >1 THEN word$="a" ELSE word$="the"
word$=" "+word$
IF INSTR(".;,-",w$) THEN word$=w$
IF w$="/" THEN word$=indent${TO indent}: indent=indent+2
poem$=poem$+word$
word$=""
NEXT
REPEAT
a=INSTR(a+1,poem$," a ")
IF INSTR("aeiou",poem${a+3}) THEN poem$=poem${TO a+1}+"n"+poem${a+2 TO}
UNTIL a=0
BOX 1500;1800, XVIRTUAL-2100, 2000 FILL WITH 8 COLOUR 1
PRINT AT(1;1) COLOUR(0) FONT(3) POINTS(18) MODE(2) poem$
i$=UPPER$(INPUT$(1))
IF i$="S" THEN PRINT #5 poem$
IF i$="Q" THEN CLOSE #5: END
UNTIL infinity
LABEL initialize
window_=2
GOSUB open_
WINDOW OPEN
PRINT AT(4;12) COLOUR(4) FONT(3) POINTS(36) "Haiku Composer"
PRINT AT(28;19) COLOUR(1) FONT(2) POINTS(10) "Press any key to view the next haiku"
PRINT AT(35) COLOUR(1) FONT(2) POINTS(10) "S to save haiku"
PRINT AT(37) COLOUR(1) FONT(2) POINTS(10) "Q to quit"
LINE 0;1800, XVIRTUAL;1800 WIDTH 7 COLOUR 2
LINE 0;3500, XVIRTUAL;3500 WIDTH 7 COLOUR 2
window_=1
GOSUB open_
BOX 0;0, XVIRTUAL, YVIRTUAL FILL WITH 8 COLOUR 1
BOX 0;0, XVIRTUAL, YVIRTUAL-200 COLOUR 2
BOX 50;50, XVIRTUAL-100, YVIRTUAL-300 COLOUR 2
GRAPHICS COLOUR 6 LINE WIDTH 5
LINE 680;3300, 500;3010 START 2 END 2
LINE 580;3050, 580;2770 START 2 END 2
LINE 730;3140, 860;3140 START 2 WIDTH 3
LINE 700;3010, 860;3010 START 2 WIDTH 3
LINE 680;2870, 860;2870 START 2 WIDTH 3
LINE 860;3250, 860;2870, 820;2770 START 2 END 2
LINE 1010;3250, 1010;2770 START 2 END 2
LINE 1010;3140, 1140;3140 END 2 WIDTH 3
LINE 1010;3010, 1140;3010 END 2 WIDTH 3
LINE 1010;2870, 1140;2870 END 2 WIDTH 3
LINE 650;2500, 500;2300 START 2 END 2
LINE 650;2450, 1140;2450 WIDTH 3
LINE 1140;2450, 1140;1990 START 2
CIRCLE 1000;1990, 140 PART RAD(245), 0
BOX 600;2000, 250, 250 WIDTH 3
CLOSE WINDOW 3
CLOSE WINDOW 4
OPEN #5 APPEND "A:\BASIC2\HAIKU.TXT"
'Change pathname here as required.
RANDOMIZE
indent$=CHR$(13)+STRING$(2,10)+STRING$(29," ")
ptrns=10
adjvs=82: nouns=80: verbs=21: preps=14
DIM ptrn$[ptrns], adjv$[adjvs], noun$[nouns], verb$[verbs], prep$[preps]
FOR i=1 TO ptrns
READ ptrn$[i]
NEXT
DATA /NPAN;/AJNPAN/JN, /AJNV;/AJJN/PAJN, "/JN/JJ,/ANV", /AJJN;/PAJN/ANV
DATA /JN/JNV-/JJN, /JJN/PJN-/JN, /JN/JNPAJN-/ANV, /AJN/AJN-/NV
DATA /JN/NPN/PAJN, /AJN.../ANVPAN/JJN
FOR i=1 TO adjvs
READ adjv$[i]
NEXT
DATA autumn,hidden,bitter,misty,silent,empty,dry,dark,summer,icy,delicate
DATA quiet,white,swirling,dusky,cool,spring,winter,withered,twilight,dawn
DATA wispy,azure,blue,billowing,broken,hazy,cold,damp,falling,frosty,long
DATA late,lingering,limpid,little,morning,muddy,old,red,rough,still,small
DATA sparkling,throbbing,vermilion,wandering,wild,black,crimson,young
DATA silver,golden,drowsy,pearl,emerald,pale,distant,calm,shiny,bright
DATA dappled,sleeping,awakened,dull,spreading,coloured,midsummer,grey
DATA night,nearby,lone,torn,faraway,ragged,shadowy,stormy,dusty,thin
DATA vivid,shady,green
FOR i=1 TO nouns
READ noun$[i]
NEXT
DATA beach,bird,blossom,breeze,brook,butterfly,bush,comet,cloud,cliff
DATA daffodil,daybreak,dawn,dragonfly,dewdrop,dew,dusk,dust,eagle,field
DATA fir,frost,flower,firefly,flame,feather,forest,glade,glitter,grass
DATA haze,hill,image,lake,lily,leaf,meadow,moon,mountain,mist,morning
DATA night,ocean,pine,pond,rain,raindrop,reflection,rainbow,river,rose
DATA shadow,stream,sea,snowflake,swan,sunshine,snowfield,storm,star
DATA sunrise,silence,shape,shade,sound,snow,sky,sunset,surf,sun,tree
DATA thunder,valley,violet,water,wave,wind,wildflower,waterfall,woodland
FOR i=1 TO verbs
READ verb$[i]
NEXT
DATA has stopped,is trickling,struggles,has fallen,has passed,sleeps
DATA cascades,flutters,has risen,dances,is falling,murmurs,is floating
DATA tumbles,creeps,stirs,drifts,swirls,sinks,stoops,shakes
FOR i=1 TO preps
READ prep$[i]
NEXT
DATA on,in,under,below,beneath,over,above,near,beside,close to,by,before
DATA behind,beyond
i$=INPUT$(1)
WINDOW OPEN
RETURN
LABEL open_
CLOSE #window_
OPEN #window_ WINDOW window_
STREAM #window_
SCREEN GRAPHICS XUSABLE FIXED, YUSABLE FIXED
WINDOW PLACE 0;1
WINDOW TITLE ""
WINDOW CURSOR OFF
RETURN