home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.whtech.com
/
ftp.whtech.com.tar
/
ftp.whtech.com
/
club100
/
gam
/
hidden.ba
< prev
next >
Wrap
Text File
|
2006-10-19
|
4KB
|
137 lines
0 'Club 100 Library - 415/939-1246 BBS 937-5039 NEWSLETTER, 932-8856 VOICE
2 'Hidden word puzzle generator, from Popular Computing Mag; M100 version, print option by Russ Hall. Codes are for 3/4 LF on DMP-105.
3 'Step out and make a sandwich when this one runs!...
5 GOTO2000
10 CLEAR 500
20 DEFINT A-Z
30 MR=12:MC=12:NC=MR*MC
40 SP$="-":MK$="*":DC$="+":NW=0
50 READ WD$
60 IF WD$<>"/"THEN NW=NW+1:GOTO 50
70 DIM M$(MR,MC),WD$(NW),D(8,2),SQ(NC),WU(NW),WQ(NW)
80 RESTORE:FOR I=1 TO NW:READ WD$(I):NEXT I
90 READ WD$
100 DATA EAGLE,OSTRICH,ANTELOPE,BOBCAT,COYOTE,HYHENA
110 DATA SNAKE,ALLIGATOR,PIRAHANA,DEER
115 DATA ELEPHANT,MONKEY,KANGAROO,FISH,SHARK,MAHIMAHI
120 DATA LION,TIGER,BEAR,GIRAFFE,ZEBRA,HORSE,GAZELLE,/
130 FOR I=1 TO 8:READ D(I,1),D(I,2):NEXT I
140 DATA 0,1,1,1,1,0,1,-1,0,-1,-1,-1,-1,0,-1,1
150 PRINT"HIDDEN-WORD PUZZLE GENERATOR"
160 PRINT"GRID SIZE IS"MR"BY"MC
170 PRINT"VOCABULARY CONTAINS"NW"WORDS"
180 PRINT:PRINT"SETTING UP THE GRID. PLEASE WAIT."
190 FOR I=1 TO MR:FOR J=1 TO MC:M$(I,J)=SP$:NEXT J:NEXT I
200 FOR I=1 TO NC:SQ(I)=0:NEXT I
210 FOR I=1 TO NC
220 Q=INT(RND(1)*NC)+1:IF SQ(Q)<>0 THEN 220
230 SQ(Q)=I
240 NEXT I
250 FOR I=1 TO NW:WQ(I)=0:WU(I)=0:NEXT I
260 FOR I=1 TO NW
270 Q=INT(RND(1)*NW)+1: IF WQ(Q)<>0 THEN 270
280 WQ(Q)=I
290 NEXT I
300 MF=0:WA=NW:FU=0:DI=1
310 PRINT"STARTING TO FILL IN THE GRID..."
320 FOR QP=1 TO NC
330 CP=SQ(QP)
340 CR=INT((CP-1)/MC)+1:CC=CP-(CR-1)*MC
350 IF M$(CR,CC)<>SP$ THEN 960
360 IF WA=0 THEN MF=0:GOTO 950
370 M$(CR,CC)=MK$
380 DK=1
390 IR=D(DI,1):IC=D(DI,2)
400 RT=1:IF IR<0 THEN RT=MR
410 IF IR=0 THEN RT=CR
420 CT=1:IF IC<0 THEN CT=MC
430 IF IC=0 THEN CT=CC
440 BR=CR:BC=CC
450 IF(BR=RT AND IR<>0)OR(BC=CT AND IC<>0)THEN 490
460 BR=BR-IR
470 BC=BC-IC
480 GOTO 450
490 RT=1:IF IR>0 THEN RT=MR
500 IF IR=0 THEN RT=CR
510 CT=1:IF IC>0 THEN CT=MC
520 IF IC=0 THEN CT=CC
530 ER=CR:EC=CC
540 IF(ER=RT AND IR<>0)OR(EC=CT AND IC<>0)THEN 580
550 ER=ER+IR
560 EC=EC+IC
570 GOTO 540
580 UR=ER:IF BR>ER THEN UR=BR
590 LR=BR:IF ER<BR THEN LR=ER
600 UC=EC:IF BC>EC THEN UC=BC
610 LC=BC:IF EC<BC THEN LC=EC
620 PR=BR:PC=BC:P$=""
630 P$=P$+M$(PR,PC)
640 PR=PR+IR:PC=PC+IC:IF PR>=LR AND PR<=UR AND PC>=LC AND PC<=UC THEN 630
650 PL=LEN(P$):SP=INSTR(1,P$,MK$)
660 FOR LS=1 TO SP:FOR RS=PL TO SP STEP -1
670 CP$=MID$(P$,LS,RS-LS+1):CL=LEN(CP$)
680 Q=1
690 W=WQ(Q)
700 IF LEN(WD$(W))<>CL THEN MF=0:GOTO 910
710 MF=1
720 FOR C=1 TO CL
730 IF MID$(CP$,C,1)=SP$ OR MID$(CP$,C,1)=MK$ THEN 750
740 IF MID$(CP$,C,1)<>MID$(WD$(W),C,1) THEN C=CL:MF=0
750 NEXT C
760 IF MF=0 THEN 910
770 FW$=WD$(W)
780 IF LS>1 THEN FW$=DC$+FW$:LS=LS-1:GOTO 780
790 IF RS<PL THEN FW$=FW$+DC$:RS=RS+1:GOTO 790
800 PR=1:R=BR:C=BC
810 RC$=MID$(FW$,PR,1):IF RC$=DC$ THEN 830
820 M$(R,C)=RC$
830 IF (R=ER AND IR<>0)OR(C=EC AND IC<>0)THEN 850
840 C=C+IC:R=R+IR:PR=PR+1:GOTO 810
850 IF Q=WA THEN 870
860 FOR I=Q TO WA-1:WQ(I)=WQ(I+1):NEXT I
870 WA=WA-1
880 WU(W)=1
890 RS=SP:LS=SP:DK=8
900 PRINT"USED A WORD.":GOTO 920
910 Q=Q+1:IF Q<=WA THEN 690
920 NEXT RS:NEXT LS
930 DI=DI+1:DK=DK+1:IF DI>8 THEN DI=1
940 IF DK<=8 THEN 390
950 IF MF=0 THEN M$(CR,CC)=CHR$(INT(RND(1)*26)+65):FU=FU+1:PRINT"USED A FILL CHARACTER."
960 PRINT NC-QP"CELLS NOT EXAMINED YET."
970 NEXT QP
980 PRINT"PUZZLE COMPLETED.":PRINT:GOSUB 1045
1000 PRINT:PRINT"THE HIDDEN WORDS ARE:"
1010 FOR I=1 TO NW
1020 IF WU(I)<>0 THEN PRINT #1,WD$(I)
1030 NEXT I
1040 END
1045 OPEN "RAM:WORKS.DO" FOR APPEND AS #1
1050 FOR TR=1 TO MR:FOR TC=1 TO MC:PRINT #1,M$(TR,TC)" ";:NEXT TC:PRINT #1,:NEXT TR
1060 RETURN
2000 CLS:PRINT:PRINT"Press for:"
2010 PRINT:PRINT" <H>idden puzzle generator"
2020 PRINT" <P>uzzle printer"
2025 PRINT" <Q>uit
2030 K$=INKEY$:IFK$=""THEN2030
2040 IFK$="H"ORK$="h"THENGOTO10
2050 IFK$="P"ORK$="p"THENGOTO3000
2055 IFK$="Q"ORK$="q"THENLPRINTCHR$(27);CHR$(54):MENU
2060 GOTO2030
3000 S$=STRING$(15,32)
3005 CLS:PRINT:PRINT"Is the printer turned on?"
3007 PRINT:LINEINPUT"Name of document to print:";F$
3010 LPRINTCHR$(27);CHR$(56):E=0:F=0
3020 OPENF$FORINPUTAS1
3030 IFEOF(1)THEN3200
3040 LINEINPUT#1,A$
3050 IFMID$(A$,2,1)<>" "THEN3150
3060 LPRINTS$;A$:LPRINT
3070 GOTO3030
3150 IFE=0THENLPRINT:LPRINT
3155 B$=B$+A$+" ":E=1:F=F+1
3160 IFF=5THENF=0:LPRINTS$;B$:B$=""
3180 GOTO3030
3200 LPRINTS$;B$:B$="":LPRINT:LPRINT:LPRINT
3210 CLOSE:GOTO2000