;*********************************** ;* THREE LETTER GAME * ;* * ;* adapted for ACTION! * ;* by * ;* Gary Lee Evans * ;* San Jose, CA * ;*********************************** BYTE y1,y2,y3,c1,c2,c3,d1,d2,d3, a,h,hits,flag,eflag,guesses, time,time1,x CARD j,l,s,t,a1,numwords BYTE ARRAY words=[00 65 67 69 65 67 84 65 68 69 65 68 79 65 68 83 65 70 84 65 71 69 65 71 79 65 73 68 65 73 76 65 73 77 65 73 82 65 76 69 65 76 80 65 78 68 65 78 84 65 78 89 65 80 69 65 80 84 65 82 67 65 82 69 65 82 75 65 82 77 65 82 84 65 83 72 65 83 75 65 83 80 65 84 69 65 87 69 65 87 76 65 88 69 65 89 69 66 65 68 66 65 71 66 65 78 66 65 82 66 65 84 66 65 89 66 69 68 66 69 71 66 69 84 66 73 68 66 73 71 66 73 78 66 73 84 66 79 65 66 79 71 66 79 87 66 79 88 66 79 89 66 85 68 66 85 71 66 85 77 66 85 78 66 85 83 66 85 84 66 85 89 66 89 69 67 65 66 67 65 68 67 65 77 67 65 78 67 65 80 67 65 82 67 65 84 67 79 66 67 79 68 67 79 71 67 79 78 67 79 80 67 79 84 67 79 87 67 79 89 67 82 89 67 85 66 67 85 68 67 85 69 67 85 80 67 85 82 67 85 84 68 65 66 68 65 77 68 65 89 68 69 78 68 69 87 68 73 69 68 73 71 68 73 77 68 73 78 68 73 80 68 79 69 68 79 71 68 79 78 68 79 84 68 82 89 68 85 66 68 85 69 68 85 71 68 89 69 68 85 79 69 65 82 69 65 84 69 71 79 69 76 75 69 76 77 69 78 68 69 76 70 69 82 65 70 65 68 70 65 71 70 65 78 70 65 82 70 65 84 70 69 68 70 69 87 70 73 71 70 73 78 70 73 82 70 73 84 70 73 88 70 76 89 70 79 69 70 79 71 70 79 82 70 79 88 70 82 89 70 85 78 70 85 82 71 65 80 71 65 83 71 65 89 71 69 77 71 69 84 71 73 78 71 78 85 71 79 66 71 79 68 71 79 84 71 85 77 71 85 78 71 85 84 71 85 89 71 89 80 72 65 68 72 65 71 72 65 77 72 65 83 72 65 84 72 65 89 72 69 78 72 69 88 72 73 68 72 73 77 72 73 80 72 73 83 72 73 84 72 69 82 72 69 77 72 79 69 72 79 71 72 79 80 72 79 84 72 79 87 72 85 66 72 85 69 72 85 71 72 85 77 72 85 84 73 67 69 73 67 89 73 76 75 73 78 75 73 77 80 73 79 78 73 82 69 73 82 75 73 84 83 73 86 89 74 65 66 74 65 82 74 65 87 74 65 89 74 79 66 74 79 71 74 79 84 74 79 89 74 85 71 74 65 71 74 65 77 74 69 84 74 73 66 74 73 71 74 85 84 75 69 71 75 69 89 75 73 68 75 73 78 75 73 84 76 65 66 76 65 68 76 65 71 76 65 80 76 65 87 76 65 89 76 65 88 76 69 68 76 69 71 76 69 84 76 73 68 76 73 69 76 73 80 76 73 84 76 79 66 76 79 71 76 79 80 76 79 84 76 79 87 76 89 69 77 65 68 77 65 78 77 65 80 77 65 82 77 65 84 77 65 89 77 69 78 77 69 84 77 73 68 77 79 66 77 79 80 77 79 87 77 85 68 77 73 88 77 85 71 78 65 66 78 65 71 78 65 80 78 65 89 78 69 84 78 69 87 78 73 76 78 73 80 78 79 68 78 79 84 78 79 82 78 79 87 78 85 84 79 65 70 79 65 75 79 65 82 79 65 84 79 68 69 79 73 76 79 76 68 79 78 69 79 80 84 79 82 69 79 85 82 79 85 84 79 86 65 79 87 69 79 87 76 79 87 78 80 65 68 80 65 76 80 65 78 80 65 82 80 65 84 80 65 87 80 65 89 80 69 65 80 69 71 80 69 78 80 69 84 80 69 87 80 73 69 80 73 71 80 73 84 80 76 89 80 79 68 80 79 84 80 79 88 80 69 82 80 73 78 80 82 79 80 82 89 80 85 66 80 85 78 80 85 83 80 85 84 82 65 71 82 65 77 82 65 78 82 65 80 82 65 84 82 65 87 82 65 89 82 69 68 82 73 66 82 73 68 82 69 86 82 73 71 82 73 77 82 73 80 82 79 66 82 79 68 82 79 69 82 79 84 82 79 87 82 85 66 82 85 69 82 85 71 82 85 77 82 85 78 82 85 84 82 89 69 83 65 68 83 65 71 83 65 80 83 65 84 83 65 87 83 65 89 83 69 84 83 69 87 83 69 88 83 72 89 83 69 65 83 73 78 83 72 69 83 73 80 83 73 82 83 73 84 83 73 88 83 75 73 83 75 89 83 76 89 83 79 66 83 79 68 83 79 78 83 79 87 83 79 89 83 80 65 83 80 89 83 84 89 83 85 69 83 85 77 83 85 78 84 65 66 84 65 68 84 65 71 84 65 78 84 65 80 84 65 88 84 65 82 84 69 65 84 73 78 84 72 69 84 72 89 84 73 67 84 73 69 84 73 78 84 73 80 84 79 69 84 79 78 84 79 80 84 79 87 84 79 89 84 82 89 84 85 66 84 85 71 84 87 79 85 82 78 85 83 69 85 80 83 86 65 78 86 65 84 86 69 88 86 73 65 86 73 69 86 73 77 86 79 87 89 65 75 89 65 77 89 69 78 89 69 83 89 69 84 89 79 85 87 65 68 87 65 71 87 65 78 87 65 82 87 65 83 87 65 88 87 65 89 87 69 66 87 69 68 87 69 84 87 72 79 87 72 89 87 73 71 87 73 78 87 73 84 87 79 69 87 79 78 87 82 89 90 73 80 70 73 66 83 69 69 69 89 69 65 76 76] CARD FUNC Delay(BYTE time) BYTE time2 FOR time1=1 TO time DO FOR time2=1 TO 150 DO OD Sound(0,time1,10,4) OD Sound(0,0,0,0) RETURN (0) BYTE FUNC Getkey() DO a=GetD(7) IF a>64 AND a<91 THEN EXIT FI OD RETURN(a) PROC Guess() ; Allows you to enter a three ; letter word DO Position(x,23) y1=Getkey() Put(y1) y2=Getkey() Put(y2) y3=Getkey() Put(y3) a=GetD(7) IF a=155 THEN EXIT FI OD RETURN BYTE FUNC Checkit() ; Checks your input to make sure ; that you entered a legal word flag=0 FOR a1=0 TO numwords*3 STEP 3 DO IF words(a1+1)=y1 AND words(a1+2)=y2 AND words(a1+3)=y3 THEN flag=1 FI OD RETURN (flag) BYTE FUNC Fighits() ; Checks to see how many letters ; match your word and computers ; word h=0 IF y1=c1 AND y2=c2 AND y3=c3 THEN RETURN (4) FI IF y1=c1 OR y1=c2 OR y1=c3 THEN h==+1 FI IF y2=c1 OR y2=c2 OR y2=c3 THEN h==+1 FI IF y3=c1 OR y3=c2 OR y3=c3 THEN h==+1 FI RETURN (h) PROC Error() eflag=1 FOR a=1 TO 6 DO Position(2,23) Print("SOMETHINGS WRONG !! ") Delay(100) Position(2,23) Print("SOMETHINGS WRONG !! ") Delay(50) OD Position(2,23) Print("What's your secret word: ") x=27 Guess() a=Checkit() IF a=0 THEN Position(2,23) Print("Illegal word - I had no chance") Delay(250) Delay(250) FI IF a=1 THEN Position(2,23) Print("You gave a bad answer somewhere?") Delay(250) Delay(250) FI RETURN CARD FUNC Moveword(CARD s,CARD t) BYTE c4,c5,c6 c1=words((t)*3+1) c2=words((t)*3+2) c3=words((t)*3+3) c4=words((s-1)*3+1) c5=words((s-1)*3+2) c6=words((s-1)*3+3) words((s-1)*3+1)=c1 words((s-1)*3+2)=c2 words((s-1)*3+3)=c3 words((t)*3+1)=c4 words((t)*3+2)=c5 words((t)*3+3)=c6 RETURN (0) PROC Think() j=0 l==-1 IF l<1 THEN Error() FI DO IF eflag=1 THEN EXIT FI DO j==+1 IF j-1=l THEN RETURN FI c1=words((j-1)*3+1) c2=words((j-1)*3+2) c3=words((j-1)*3+3) h=Fighits() IF hits<>h THEN EXIT FI OD s=j t=l-1 Moveword(s,t) l==-1 IF l<1 THEN Error() FI IF eflag=1 THEN EXIT FI flag=0 IF l>j-1 THEN flag=1 j==-1 FI UNTIL flag=0 OD RETURN PROC Getword() s=numwords WHILE s>2 DO t=Rand(s)+1 Moveword(s,t) s==-2 OD t=Rand(numwords)+1 d1=words(t*3+1) d2=words(t*3+2) d3=words(t*3+3) RETURN BYTE FUNC Main() l=numwords Getword() guesses=0 DO guesses==+1 DO Position(2,23) Print("Enter your guess: ") x=20 Guess() c1=d1 c2=d2 c3=d3 a=Checkit() IF a=1 THEN EXIT FI FOR a=1 TO 5 DO Position(2,23) Put(y1) Put(y2) Put(y3) Print(" isn't a legal word") Delay(100) Position(2,23) Put(y1+128) Put(y2+128) Put(y3+128) Delay(50) OD OD Position(4,guesses+5) Put(y1) Put(y2) Put(y3) Print(" ") hits=Fighits() PrintB(hits) IF hits=4 THEN RETURN(2) FI Position(2,23) Print("Okay.. ") Delay(250) y1=words((l-1)*3+1) y2=words((l-1)*3+2) y3=words((l-1)*3+3) Position(2,23) Print("My guess is: ") Put(y1) Put(y2) Put(y3) Position(26,guesses+5) Put(y1) Put(y2) Put(y3) Delay(250) Position(2,23) Print("How did I do (0-3 or R)?") DO hits=Getd(7) Position(32,guesses+5) Put(hits) IF hits='R THEN RETURN (1) FI hits==-48 IF hits>=0 and hits<4 THEN EXIT FI OD Think() IF eflag THEN EXIT FI OD RETURN (0) PROC Initialize() Poke(752,1) numwords=409 eflag=0 Print("} ") PutE() Print(" ") PrintE("THREE LETTER GAME ") Print("| ") PrintE(" |") Print("| Yours ") PrintE(" Mine |") Print("|word hit GUES") PrintE("S word hit|") Print("") PrintE("") FOR a=6 TO 21 DO Position(18,a) PrintB(a-5) OD RETURN PROC Newgame() Position(2,23) Print("Want to play another?") Print(" ") Position(23,23) a=GetD(7) IF a='N THEN Position(2,23) Print("Okay, come back soon.") Delay(250) Break() FI RETURN PROC Game() DO Initialize() a=Main() IF eflag=1 THEN Newgame() FI IF eflag=1 THEN Game() FI IF a=1 THEN Position(26,guesses+7) Print(" I WIN ") Position(2,23) Position(4,guesses+6) Put(d1) Put(d2) Put(d3) FOR a=1 TO 10 DO Position(7,guesses+6) Print(" mine") Delay(30) Position(7,guesses+6) Print(" mine") Delay(20) OD FI IF a=2 THEN Position(3,guesses+6) Print(" YOU WIN ") FI Newgame() OD RETURN