221 lines
4.9 KiB
QBasic
221 lines
4.9 KiB
QBasic
100 CLEAR 1200
|
||
110 B$="."
|
||
120 INPUT"INPUT X AND Y DIMENSIONS ";X,Y
|
||
130 IF X>30 OR Y>30 THEN 120
|
||
140 IF X>Y THEN U0=X:GOTO 180
|
||
150 U0=Y
|
||
160 INPUT"NUMBER OF WORDS ";N
|
||
170 C1=100*INT(N/10):IF C1<100 THEN C1=100
|
||
180 DIM W$(50),A$(X,Y),N$(N),L(N,4)
|
||
190 W$(1)="DUMMEY ARGUMENT"
|
||
200 GOTO2150
|
||
210 GOSUB 1960
|
||
220 GOTO2020
|
||
230 INPUT"PUNCH LIST ON TAPE";T$:IF LEFT$(T$,1)="Y" THEN GOTO 2220
|
||
240 Q8=1
|
||
250 GOSUB 1940
|
||
260 PRINT:PRINT Q8
|
||
270 FOR I1=1 TO N
|
||
280 GOTO 360
|
||
290 PRINT:PRINT"FIRST CHAR. CHANGED ON PASS";C0;" OF THE";I1;"TH WORD"
|
||
300 A$(L(1,1),L(1,2))=LEFT$(N$(1),1)
|
||
310 GOTO430
|
||
320 REM
|
||
330 L(I1,1)=A:L(I1,2)=B:L(I1,3)=D
|
||
340 L(I1,4)=C0
|
||
350 GOTO 1580
|
||
360 C0=0
|
||
370 S$=N$(I1)
|
||
380 Z=LEN(S$)-1
|
||
390 GOSUB 1540
|
||
400 C0=C0+1
|
||
410 IF I1=1 THEN GOTO 430
|
||
420 IF A$(L(1,1),L(1,2))<>LEFT$(N$(1),1) THEN GOTO 290
|
||
430 IF C0/C1<>INT(C0/C1) THEN 450
|
||
440 PRINT S$;" TRY#";C0
|
||
450 IF C0<C1*10 THEN490
|
||
460 Q8=Q8+1:IF Q8=100 THEN STOP
|
||
470 GOTO 250
|
||
480 PRINT Q8: GOTO250
|
||
490 ON D GOTO 500,630,760,890,1020,1150,1280,1410
|
||
500 IF B+Z>Y THEN 390
|
||
510 FOR I=1 TO LEN(S$)
|
||
520 A1=A:B1=B+I-1
|
||
530 GOSUB 1910
|
||
540 GOSUB 1930
|
||
550 IF L$=B$ OR L$=N1$ THEN 570
|
||
560 GOTO 390
|
||
570 NEXT I
|
||
580 FOR I=1 TO LEN(S$)
|
||
590 GOSUB 1910
|
||
600 A$(A,B+I-1)=N1$
|
||
610 NEXT I
|
||
620 GOTO 320
|
||
630 IF B+Z>Y OR A-Z<1 THEN390
|
||
640 FOR I=1 TO LEN(S$)
|
||
650 A1=A-(I-1):B1=B+I-1
|
||
660 GOSUB 1910
|
||
670 GOSUB 1930
|
||
680 IF L$=B$ OR L$=N1$ THEN 700
|
||
690 GOTO 390
|
||
700 NEXT I
|
||
710 FOR I=1 TO LEN(S$)
|
||
720 GOSUB 1910
|
||
730 A$(A-(I-1),B+I-1)=N1$
|
||
740 NEXT I
|
||
750 GOTO 320
|
||
760 IF A-Z<1 THEN 390
|
||
770 FOR I=1 TO LEN(S$)
|
||
780 A1=A-(I-1):B1=B
|
||
790 GOSUB 1910
|
||
800 GOSUB 1930
|
||
810 IF L$=B$ OR L$=N1$ THEN 830
|
||
820 GOTO 390
|
||
830 NEXT I
|
||
840 FOR I=1 TO LEN(S$)
|
||
850 GOSUB 1910
|
||
860 A$(A-(I-1),B)=N1$
|
||
870 NEXT I
|
||
880 GOTO320
|
||
890 IF A-Z<1 OR B-Z<1 THEN390
|
||
900 FOR I=1 TO LEN(S$)
|
||
910 A1=A-(I-1):B1=B-(I-1)
|
||
920 GOSUB 1910
|
||
930 GOSUB 1930
|
||
940 IF L$=B$ OR L$=N1$ THEN960
|
||
950 GOTO 390
|
||
960 NEXT I
|
||
970 FOR I=1 TO LEN(S$)
|
||
980 GOSUB 1910
|
||
990 A$(A-(I-1),B-(I-1))=N1$
|
||
1000 NEXT I
|
||
1010 GOTO 320
|
||
1020 IF B-Z<1 THEN 390
|
||
1030 FOR I=1 TO LEN(S$)
|
||
1040 A1=A:B1=B-(I-1)
|
||
1050 GOSUB 1910
|
||
1060 GOSUB 1930
|
||
1070 IF L$=B$ OR L$=N1$ THEN 1090
|
||
1080 GOTO 390
|
||
1090 NEXT I
|
||
1100 FOR I=1 TO LEN(S$)
|
||
1110 GOSUB 1910
|
||
1120 A$(A,B-(I-1))=N1$
|
||
1130 NEXT I
|
||
1140 GOTO 320
|
||
1150 IF A+Z>X OR B-Z<1 THEN390
|
||
1160 FOR I=1 TO LEN(S$)
|
||
1170 A1=A+I-1:B1=B-(I-1)
|
||
1180 GOSUB 1910
|
||
1190 GOSUB 1930
|
||
1200 IF L$=N1$ OR L$=B$ THEN1220
|
||
1210 GOTO390
|
||
1220 NEXT I
|
||
1230 FOR I=1 TO LEN(S$)
|
||
1240 GOSUB 1910
|
||
1250 A$(A+I-1,B-(I-1))=N1$
|
||
1260 NEXT I
|
||
1270 GOTO320
|
||
1280 IF A+Z>X THEN 390
|
||
1290 FOR I=1 TO LEN(S$)
|
||
1300 A1=A+I-1:B1=B
|
||
1310 GOSUB 1910
|
||
1320 GOSUB 1930
|
||
1330 IF L$=N1$ OR L$=B$ THEN1350
|
||
1340 GOTO 390
|
||
1350 NEXT I
|
||
1360 FOR I=1 TO LEN(S$)
|
||
1370 GOSUB 1910
|
||
1380 A$(A+I-1,B)=N1$
|
||
1390 NEXT I
|
||
1400 GOTO 320
|
||
1410 IF A+Z>X OR B+Z>Y THEN390
|
||
1420 FOR I=1 TO LEN(S$)
|
||
1430 A1=A+I-1:B1=B+I-1
|
||
1440 GOSUB 1910
|
||
1450 GOSUB 1930
|
||
1460 IF L$=B$ OR L$=N1$ THEN 1480
|
||
1470 GOTO 390
|
||
1480 NEXT I
|
||
1490 FOR I=1 TO LEN(S$)
|
||
1500 GOSUB 1910
|
||
1510 A$(A+I-1,B+I-1)=N1$
|
||
1520 NEXT I
|
||
1530 GOTO320
|
||
1540 A=INT(X*RND(8)+1)
|
||
1550 B=INT(Y*RND(8)+1)
|
||
1560 D=INT(8*RND(5)+1)
|
||
1570 RETURN
|
||
1580 NEXT I1
|
||
1590 GOTO 1610
|
||
1600 FOR I=1TOX:FORJ=1TOY:PRINTA$(I,J);" ";:NEXTJ:PRINT:NEXTI
|
||
1610 FOR I=1 TO 5:PRINT:NEXT I
|
||
1620 PRINT"THE";N;"HIDDEN WORDS ARE":PRINT
|
||
1630 Z=2:FORI=1TON:PRINTTAB(Z);N$(I);:Z=Z+18:IFZ>60 THENZ=2:PRINT
|
||
1640 NEXT I:PRINT:PRINT:PRINT
|
||
1650 FOR I=1 TO X
|
||
1660 FOR J=1 TO Y
|
||
1670 IF A$(I,J)=B$ THEN 1770
|
||
1680 PRINT A$(I,J);" ";
|
||
1690 NEXT J
|
||
1700 PRINT
|
||
1710 NEXT I
|
||
1720 PRINT
|
||
1730 GOSUB 1800
|
||
1740 PRINT
|
||
1750 GOTO 240
|
||
1760 END
|
||
1770 A$(I,J)=CHR$(INT(26*RND(1)+65))
|
||
1780 GOTO 1680
|
||
1790 PRINT
|
||
1800 REM
|
||
1810 AN=1
|
||
1820 PRINT "THE HIDDEN WORDS ARE LOCATED AT"
|
||
1830 FOR K=1 TO N
|
||
1840 PRINT N$(K);
|
||
1850 IF AN=0 THEN PRINT: GOTO 1880
|
||
1860 PRINT TAB(30);L(K,1);",";L(K,2);",";L(K,3);
|
||
1870 PRINT ",";L(K,4)
|
||
1880 NEXT K
|
||
1890 RETURN
|
||
1900 END
|
||
1910 N1$=MID$(S$,I,1)
|
||
1920 RETURN
|
||
1930 L$=A$(A1,B1):RETURN
|
||
1940 FORI=1TOX:FORJ=1TOY:A$(I,J)=B$:NEXT J,I
|
||
1950 RETURN
|
||
1960 FOR I=1 TO N
|
||
1970 PRINT"WORD #";I;
|
||
1980 INPUT N$(I)
|
||
1990 IF LEN(N$(I))>U0 THEN1970
|
||
2000 NEXT I
|
||
2010 RETURN
|
||
2020 IF N<3 THEN GOTO240
|
||
2030 FOR J=2 TO (N-1)
|
||
2040 L=0:M=0
|
||
2050 FOR I=J TO N
|
||
2060 IF LEN(N$(I))>L THEN L=LEN(N$(I)):M=I
|
||
2070 NEXT I
|
||
2080 T$=N$(M)
|
||
2090 FOR I=(M-1)TO J STEP -1
|
||
2100 N$(I+1)=N$(I)
|
||
2110 NEXT I
|
||
2120 N$(J)=T$
|
||
2130 NEXT J
|
||
2140 GOTO 230
|
||
2150 INPUT"INPUT FROM TAPE";T$:IF LEFT$(T$,1)="N" THEN GOTO210
|
||
2160 PRINT CHR$(17):REM TAPE READER ON
|
||
2170 FOR I=1 TO N
|
||
2180 INPUT N$(I)
|
||
2190 NEXT I
|
||
2200 PRINT CHR$(19):REM TAPE READER OFF
|
||
2210 GOTO 2020
|
||
2220 NULL6
|
||
2230 PRINT CHR$(18);:REM TAPE PUNCH ON
|
||
2240 FOR I=1TO75:PRINT CHR$(0);:NEXT I:REM LEADER
|
||
2250 FOR I=1TON:PRINTN$(I):NEXT I
|
||
2260 FOR I=1TO75:PRINT CHR$(0);:NEXT I:PRINT CHR$(20)
|
||
2270 NULL0:GOTO240
|
||
XT I:REM LEADER
|
||
2250 FOR I=1TON:PRINTN$(I):NEXT I
|
||
2260 FOR I=1TO75:PRINT CHR$ |