10 REM WORDSQUARE
20 MODE 1 30 BORDER 13 40 GOSUB 500 50 DIM P(10),X(10),Y(10) 60 DIM S$(255),T$(255) 70 DIM W(10) 80 GOSUB 680 90 GOSUB 1030 100 FOR L=1 TO 10:W(L)=0 110 NEXT L 120 SC=0 130 GOTO 160 140 LOCATE 1,22:PRINT "BE SENSIBLE" 150 FOR L=1 TO 1500:NEXT L 160 LOCATE 1,23:PRINT "Your Guess " 170 LOCATE 12,23 180 INPUT A$ 190 IF LEN(A$)=0 OR LEN(A$)>10 THEN GOTO 140 195 a$=UPPER$(a$) 200 LOCATE 1,22 210 PRINT " " 220 GOSUB 1180 230 IF F=0 THEN LOCATE 1,22:PRINT "Not there":GOTO 400 240 SC=SC+1 250 REM HIGHLIGHT THE WORD WHICH HAS BEE N FOUND 260 IF W(F)=1 THEN LOCATE 1,22:PRINT "You've already had that word":GOTO 400 270 W(F)=1 280 B=INT(P(F)/15) 290 A=P(F)-15*B 300 FOR L=1 TO O 310 LOCATE A+6,B+3 320 GOSUB 640:D$=CHR$(DD) 330 LOCATE A+6,B+3:PEN 2 340 PRINT D$ 350 PEN 1 360 A=A+X(F):B=B+Y(F) 370 NEXT L 380 IF SC=10 THEN GOTO 430 390 LOCATE 1,23:PRINT "Well done ";SC;" correct so far" 400 FOR L=1 TO 2000:NEXT L 410 LOCATE 1,23:PRINT " " 420 GOTO 160 430 REM Here when all ten are found 440 CLS 450 LOCATE 1,11 460 PRINT "Well done...you found them all" 470 IF INKEY$<>"" THEN GOTO 470 480 IF INKEY$="" THEN GOTO 480 490 END 500 REM PUT MACHINE CODE JUST ABOVE RE-ADJUSTED HIMEM 510 MEMORY 39000 520 MC=HIMEM+1 530 TA=HIMEM+&7F 540 TH=INT(TA/256) 550 TL=TA-256*TH 560 POKE MC,&CD 570 POKE MC+1,&60 580 POKE MC+2,&BB 590 POKE MC+3,&32 600 POKE MC+4,TL 610 POKE MC+5,TH 620 POKE MC+6,&C9 630 RETURN 640 CALL MC 660 DD=PEEK(TA) 670 RETURN 680 REM READ IN DATA AND STORE IN SQUARE 690 LOCATE 11,11: PRINT "ONE MOMENT" 700 S$="" 710 FOR L=1 TO 15 720 S$=S$+" " 730 NEXT L 740 RESTORE 1270 750 FOR I=1 TO 10 760 READ N$ 770 N=LEN(N$) 780 N$=RIGHT$(N$,N) 790 ON INT(RND(1)*8) GOSUB 1100,1110,1120,1130,1140,1150,1160,1170 800 A=INT(RND(1)*15):B=INT(RND(1)*15) 810 C=A+X(I)*N 820 D=B+Y(I)*N 830 IF C<0 OR D<0 OR C>14 OR D>14 THEN GOTO 790 840 L=-1 850 L=L+1 860 Q=1+(B+Y(I)*L)*15+A+X(I)*L 870 Q$=MID$(S$,Q,1) 880 IF Q$=" " THEN GOTO 900 890 IF Q$<>MID$(N$,L+1,1) THEN GOTO 790 900 IF L<>N-1 THEN GOTO 850 910 FOR L=0 TO N-1 920 Q=1+(B+Y(I)*L)*15+A+X(I)*L 930 S$=LEFT$(S$,Q-1)+MID$(N$,L+1,1)+MID$(S$,Q+1) 940 NEXT L 950 P(I)=A+B*15 960 NEXT I 970 T$="" 980 FOR L=1 TO 255 990 IF MID$(S$,L,1)=" " THEN T$=T$+CHR$(INT(RND(1)*26+65)) ELSE T$=T$+MID$(S$,L,1) 1000 NEXT L 1010 S$=T$:T$="" 1020 RETURN 1030 REM DISPLAY SQUARE CLS 1040 CLS 1050 FOR L=0 TO 14 1060 LOCATE 6,L+3 1070 PRINT MID$(S$,L*15+1,15) 1080 NEXT L 1090 RETURN 1100 X(I)=-1:Y(I)=-1:RETURN 1110 X(I)=1:Y(I)=1:RETURN 1120 X(I)=-1:Y(I)=1:RETURN 1130 X(I)=1:Y(I)=-1:RETURN 1140 X(I)=1:Y(I)=0:RETURN 1150 X(I)=0:Y(I)=1:RETURN 1160 X(I)=-1:Y(I)=0:RETURN 1170 X(I)=0:Y(I)=-1:RETURN 1180 REM CHECK IF RESPONSE IS VALID 1190 RESTORE 1270 1200 F=0 1210 FOR L=1 TO 10 1220 READ N$ 1230 IF N$=A$ THEN F=L:O=LEN(N$) 1240 NEXT L 1250 RETURN 1260 REM WORD LISTS 1270 DATA AMSTRAD,VIDEO,COLOUR 1280 DATA SOUND,GRAPHICS,GAMES 1290 DATA MONITOR,PLAY,COMPUTER 1300 DATA WATER |