Files
tranZPUter/software/BAS/WORD-PZL.bas

221 lines
4.9 KiB
QBasic
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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$