1 'Word Finder
2 'By JASON BIRKETT 3 'Amstrad Action 10 MODE 1:INK 0,3:INK 1,24:GOSUB 390:LOCATE 15,2:PRINT"WORD FINDER":LOCATE 12,4 20 PRINT"BY JASON BIRKETT":PRINT:INPUT"Title";t$:INPUT"How many words";w 30 t$=UPPER$(t$):DIM d$(w):DIM w$(w):DIM k(w):FOR q=1 TO w:PRINT"Word";q; 40 INPUT w$(q):w$(q)=UPPER$(w$(q)):k(q)=LEN(w$(q)):IF k(q)>12 THEN PRINT"WORD TO LONG!":GOTO 40 ELSE NEXT q:DIM a(w):IF w<15 THEN DIM a$(15) ELSE DIM a$(w) 50 DIM k$(144):MODE 2 60 'PLACE INFO IN ORDER 70 FOR y=1 TO w:t=0:FOR j=1 TO w:IF k(y)<k(j) THEN t=t+1 80 NEXT j 90 IF a$(t+1)<>"" THEN t=t+1:GOTO 90 100 a$(t+1)=w$(y):a(t+1)=k(y):NEXT y:FOR i=1 TO w:w$(i)=a$(i):k(i)=a(i):NEXT i 110 LOCATE 22,3:PRINT"WHEN PROGRAM HAS FINISHED PRESS:-":LOCATE 24,5:PRINT"éSHIFT+Pè TO PRINT SCREEN":LOCATE 24,6:PRINT"éSHIFT+Fè TO RERUN PROGRAM":LOCATE 24,7:PRINT"éSHIFT+Aè TO REFORM THE GRID":LOCATE 34,15:PRINT"NOW WORKING":DIM b$(15):t=1 120 LOCATE 35,19:PRINT SPACE$(17):LOCATE 35,19:PRINT"WORD "w$(t):x=INT(RND(1)*12)+1:c=0:y=INT(RND(1)*12)+1:IF t=1 THEN IF y>3 AND y<9 THEN 120 130 'WORK OUT POSITION AND DIRECTION 140 p=(y-1)*12+x:IF t=1 THEN d=5 ELSE d=INT(RND(1)*8)+1 145 r=0:GOTO 190 150 IF d=1 THEN c=p+b-1:a=13-x:as=k(t) ELSE IF d=2 THEN c=p+1-b:a=x:as=k(t) 160 IF d=3 THEN c=p+((b-1)*12):a=13-y:as=k(t) ELSE IF d=4 THEN c=p-((b-1)*12):a=y:as=k(t) ELSE IF d=5 THEN c=p+((b-1)*13):a=13-x:as=13-y 170 IF d=6 THEN c=p-((b-1)*11):a=13-x:as=y ELSE IF d=7 THEN c=p+((b-1)*11):a=x:as=13-y ELSE IF d=8 THEN c=p-((b-1)*13):a=x:as=y 180 RETURN 190 GOSUB 150:IF k(t)>a OR k(t)>as THEN 240 200 FOR b=1 TO k(t):GOSUB 150:a$=LEFT$(w$(t),b):b$(b)=RIGHT$(a$,1) 210 IF k$(c)="" OR k$(c)=b$(b) THEN 220 ELSE 240 220 NEXT b:FOR b=1 TO k(t):GOSUB 150:k$(c)=b$(b):NEXT b:d$(t)=w$(t) 230 t=t+1:IF t>w THEN 310 ELSE 120 240 d=d+1:r=r+1:IF d=9 THEN d=1 250 IF r=8 THEN 260 ELSE 190 260 cb=cb+1:IF cb=144 THEN 290 ELSE 270 270 x=x+1:IF x=13 THEN x=1:y=y+2 273 IF y=14 THEN y=1 275 IF y=13 THEN y=2 280 GOTO 140 290 d$(t)="sh":cb=0:IF t=w THEN 310 ELSE t=t+1:GOTO 120 300 'PRINT SCREEN 310 MODE 1:INK 1,2:INK 0,24:FOR y=1 TO 12:FOR x=1 TO 12:y(1)=y*2:x(1)=x*2 320 s=INT(RND(1)*90)+1:IF s<65 THEN 320 ELSE qw=(y-1)*12+x:IF k$(qw)<>"" THEN 330 ELSE k$(qw)=CHR$(s) 330 LOCATE 13+x(1),y(1):PRINT k$(qw):NEXT x:NEXT y:wt=0:FOR i=1 TO w 340 IF d$(i)="sh" THEN i=i+1:wt=wt+1:IF i>w THEN 360 ELSE GOTO 340 350 LOCATE 1,1+i-wt:PRINTd$(i):NEXT i 360 LOCATE 10,1:PRINT t$ 370 a$=INKEY$:IF a$="P" THEN 430 ELSE IF a$="A" THEN ERASE k$:DIM k$(144):GOTO 450 380 IF a$="F" THEN RUN ELSE 370 390 e=0:FOR i=&4E20 TO &4E33:READ a$:d=VAL("&"+a$):e=e+d:POKE i,d:NEXT i:READ b$:f=VAL("&"+b$):IF f<>e THEN PRINT"CHECK LINE WITH MACHINE CODE!!!":END 400 DATA dd,6e,02,dd,66,04,cd,75,bb,cd,60,bb,dd,6e,00,dd,66,01,77,c9,a48 410 RETURN 420 'PRINT SCREEN TO PRINTER 430 FOR y=1 TO 25:FOR x=1 TO 40:s%=0:CALL &4E20,x,y,às%:IF x=40 THEN PRINT#8,CHR$(s%) ELSE PRINT#8,CHR$(s%)" "; 440 NEXT x:NEXT y:GOTO 370 450 ERASE b$:MODE 2:GOTO 110 |