Random game
Random game
Random software
Word Hunt Word Hunt Word Hunt Word Hunt Word Hunt Word Hunt Word Hunt Word Hunt Word Hunt
Listing 1
10 REM ***** WORD HUNT ***** KEN MURPHY
20 CLR:​C0=0:​C1=1:​C2=2:​C3=3:​C4=4:​C5=5:​C6=6:​C7=7:​C8=8:​C9=9:​C10=10
70 GOSUB 2000:​OPEN #C1,​C4,​C0,​"K:​"
80 S=C10:​W=C10:​DIM M(S,​S),​W$(W*C10),​LN(W),​P(S,​S),​L(W,​C3),​F(C8),​R$(C10),​T$(C10):​HSCORE=C0
85 T$=" ":​FOR I=C0 TO C9:​W$(I*C10+C1,​I*C10+C10)=T$:​NEXT I
90 POKE 752,​C0:​PRINT "WHAT SKILL LEVEL"
100 PRINT:​PRINT "1 (EASY) - TO - 5 - (HARD)?3";
110 INPUT X:​IF X<C1 OR X>C5 THEN 100
120 SL=C6-X
130 PRINT "ENTER ";W;" WORDS,​"
140 PRINT "EACH 3 TO 7 CHARACTERS LONG"
150 REM GET WORDS AND PUT IN ORDER
160 REM LONGEST TO SHORTEST
170 FOR X=C1 TO W:​L(X,​C1)=C0:​L(X,​C2)=C0:​L(X,​C3)=C0
180 PRINT "WORD ";X;:​INPUT R$
190 Q=LEN(R$)
200 IF Q<C3 THEN PRINT "* TOO SHORT *":​GOTO 180
210 IF Q>C7 THEN PRINT "* TOO LONG *":​GOTO 180
220 X9=C0:​T$="*":​T$(C2)=R$:​T$(LEN(T$)+C1)="*":​FOR Y=C1 TO Q:​A=ASC(T$(Y+C1,​Y+C1))
230 IF A<65 OR A>90 THEN X9=C1:​Y=Q
240 NEXT Y:​IF X9=C1 THEN PRINT " * BAD WORD *":​GOTO 180
250 IF X=C1 THEN T$=R$:​T$(Q+C1)="*":​W$(X*C10-C9,​X*C10)=T$:​LN(X)=Q+C1:​GOTO 290
260 X9=C0:​FOR Y=C1 TO X-C1:​IF Q<=LN(Y)-C1 THEN 280
270 FOR B=X TO Y+C1 STEP -C1:​T$=W$((B-C1)*C10-C9,​(B-C1)*C10):​W$(B*C10-C9,​B*C10)=T$:​LN(B)=LN(B-C1):​NEXT B
275 T$=R$:​T$(Q+C1)="*":​W$(Y*C10-C9,​Y*C10)=T$:​LN(Y)=LEN(T$):​Y=X-C1
280 NEXT Y:​IF X9=C0 THEN T$=R$:​T$(Q+C1)="*":​W$(X*C10-C9,​X*C10)=T$:​LN(X)=LEN(T$)
290 NEXT X
300 POKE 752,​C1:​PRINT "That's enough words!"
310 PRINT "Please be patient....."
320 PRINT " I'm now making the puzzle! "
330 REM INITIALIZE LETTER MATRIX
340 FOR X=C1 TO S:​FOR Y=C1 TO S:​M(Y,​X)=42:​NEXT Y:​NEXT X:​Q=C0
350 REM INIT POINT MATRIX & GET NEXT WORD
360 FOR X=C1 TO S:​FOR Y=C1 TO S:​P(Y,​X)=C0:​NEXT Y:​GOSUB 1720
370 NEXT X:​Q=Q+C1:​IF Q>W THEN 760
375 GOSUB 1720
380 G=LN(Q)-C2
390 REM TRY ALL POINTS FOR EACH WORD
400 X9=C0:​FOR X=C1 TO S:​FOR Y=C1 TO S:​IF P(Y,​X)=C0 THEN X9=C1:​X=S:​Y=S
405 GOSUB 1720
410 NEXT Y:​NEXT X:​IF X9=C1 THEN 450
420 REM WORD WILL NOT FIT,​ TRY AGAIN
430 PRINT "This list of words will not all fit."
440 PRINT:​PRINT "Please enter another list of words!":​GOTO 130
450 A=INT(S*RND(C1)+C1):​B=INT(S*RND(C1)+C1):​IF P(B,​A)<>C0 THEN GOSUB 1720:​GOTO 450
455 GOSUB 1720
460 P(B,​A)=C1:​IF M(B,​A)=42 THEN 490
470 IF M(B,​A)<>ASC(W$(Q*C10-C9)) THEN 400
480 REM TRY ALL DIRECTIONS FROM THIS POINT
490 FOR X=C1 TO C8:​F(X)=C0:​NEXT X
500 X9=C0:​FOR X=C1 TO C8:​IF F(X)=C0 THEN X9=C1:​X=C8
510 NEXT X:​IF X9=C0 THEN 400
520 D=INT(C8*RND(C1)+C1):​IF F(D)=C1 THEN 520
530 F(D)=C1:​ON D GOTO 550,​590,​580,​620,​610,​650,​640,​560
540 REM CHECK WORD WILL FIT
550 IF (A+G)>S THEN 500
560 IF (B-G)<C1 THEN 500
570 GOTO 670
580 IF (B+G)>S THEN 500
590 IF (A+G)>S THEN 500
600 GOTO 670
610 IF (A-G)<C1 THEN 500
620 IF (B+G)>S THEN 500
630 GOTO 670
640 IF (B-G)<C1 THEN 500
650 IF (A-G)<C1 THEN 500
660 REM CHECK WORD MATCHES INTO MATRIX
670 X=A:​Y=B:​X9=C0:​FOR N=C2 TO G+C1:​GOSUB 1550:​IF M(Y,​X)=42 THEN 690
680 IF M(Y,​X)<>ASC(W$((Q-C1)*C10+N)) THEN X9=C1:​N=G+C1
690 NEXT N:​X=A:​Y=B:​IF X9=C1 THEN 500
700 REM ENTER WORD
710 FOR N=C1 TO G+C1:​IF M(Y,​X)=42 THEN M(Y,​X)=ASC(W$((Q-C1)*C10+N))
720 GOSUB 1550:​NEXT N
730 REM SAVE START & DIRECTION INFO
740 L(Q,​C1)=A-C1:​L(Q,​C2)=B-C1:​L(Q,​C3)=D:​IF D<W THEN 360
750 REM FILL IN SPACES
760 FOR Y=C1 TO S:​FOR X=C1 TO S:​IF M(Y,​X)=42 THEN M(Y,​X)=INT(25*RND(C1)+65)
770 NEXT X:​NEXT Y:​WP=C0:​TS=C0
775 SOUND C0,​C0,​C0,​C0:​SOUND C1,​C0,​C0,​C0
780 PRINT " "
790 PRINT "Depress any key when ready to play!"
800 IF PEEK(764)=255 THEN 800
805 POKE 764,​255
810 REM SET UP DISPLAY
820 PRINT " ";:​POKE 85,​27:​PRINT ""
830 REM PRINT 'ROW' DOWN LEFT COLUMN
840 REM START OUT DOWN 4
850 REM LATER DO 5 UP AND 3 RIGHT
860 PRINT "";
870 FOR X=C0 TO S-C1:​PRINT X;:​NEXT X:​PRINT:​Y=C1:​GOSUB 1650
880 FOR Y=C1 TO S:​PRINT "";Y-C1;"|";
890 FOR X=C1 TO S:​PRINT CHR$(M(Y,​X));:​NEXT X
900 PRINT "|":​NEXT Y:​Y=C0:​GOSUB 1650
910 PRINT:​PRINT "":​PRINT " 7 8 1"
920 PRINT " |":​PRINT " 62":​PRINT " |":​PRINT " 5 4 3"
930 G=16:​GOSUB 1700:​PRINT " "
940 POKE 85,​25:​PRINT " "
950 POKE 85,​25:​PRINT " 0 "
955 POKE 85,​25:​PRINT " "
956 POKE 85,​20:​PRINT "HIGH  "
957 G=20:​GOSUB 1700:​PRINT "";HSCORE
960 G=C0:​GOSUB 1700:​PRINT " "
970 WP=WP+C1:​IF WP>W THEN 1450
980 Q=LN(WP)-C1
990 REM NEXT WORD
1000 GOSUB 1700:​POKE 85,​29-(Q/C2):​PRINT W$((WP-C1)*C10+C1,​(WP-C1)*C10+Q)
1005 POKE 20,​C0:​POKE 19,​C0:​REM KILL RTCLK
1010 REM GET START LOC
1020 G=C3:​GOSUB 1700:​PRINT "STARTING LOCATION":​POKE 85,​20:​PRINT "(ROW,​COLUMN):​"
1030 FOR G=C6 TO 14:​GOSUB 1700
1040 PRINT " ":​NEXT G:​G=C6:​GOSUB 1700
1050 GOSUB 1760:​B=KEY:​IF B=155 THEN 1050
1070 PRINT CHR$(B);",​";:​IF B=48 THEN B=C0:​GOTO 1090
1080 B=B-48:​IF B<C1 OR B>C9 THEN PRINT " ";:​GOTO 1050
1090 GOSUB 1760:​A=KEY
1100 IF A=155 THEN 1090
1110 PRINT CHR$(A);:​IF A=48 THEN A=C0:​GOTO 1140
1120 A=A-48:​IF A<C1 OR A>C9 THEN 1030
1140 G=C8:​GOSUB 1700:​PRINT "DIRECTION:​":​PRINT:​POKE 85,​20:​PRINT " ";
1150 GOSUB 1760:​D=KEY
1160 IF D=155 THEN 1150
1170 PRINT CHR$(D);:​D=D-48:​IF D<C1 OR D>C8 THEN 1140
1180 REM CHK IF GOOD INPUT
1190 WT=PEEK(20)+256*PEEK(19):​IF B<>L(WP,​C2) THEN 1230
1210 IF D=L(WP,​C3) THEN 1360
1220 REM CHK IF A DOUBLE MAY EXIST
1230 X=A+C1:​Y=B+C1:​G=LN(WP)-C1:​IF M(Y,​X)<>ASC(W$(WP*C10-C9)) THEN 1300
1240 X9=C0:​FOR N=C2 TO G:​GOSUB 1550:​IF X<C1 OR X>C10 THEN 1270
1250 IF Y<C1 OR Y>C10 THEN 1270
1260 IF M(Y,​X)=ASC(W$((WP-C1)*C10+N)) THEN 1280
1270 X9=C1:​N=G
1280 NEXT N:​IF X9=C0 THEN 1360
1290 REM BAD START/DIR - NO SCORE
1300 G=C6:​GOSUB 1700:​PRINT " ";:​B=L(WP,​C2):​A=L(WP,​C1)
1310 PRINT B;",​";A
1320 G=C10:​GOSUB 1700:​PRINT " ";L(WP,​C3)
1330 G=12:​GOSUB 1700:​PRINT " "
1340 G=13:​GOSUB 1700:​PRINT " ,​ CORRECT ":​GOTO 1420
1350 REM GOOD ANSWER - GET SCORE
1360 IF WT<(SL*60) THEN WS=100:​GOTO 1390
1370 IF WT>(SL*1200) THEN WS=C10:​GOTO 1390
1380 WS=C5+INT(((SL*1200)-WT)/60)
1390 G=12:​GOSUB 1700:​PRINT ""
1400 G=13:​GOSUB 1700:​PRINT " ,​ ";WS;" POINTS":​TS=TS+WS
1410 REM UPDATE TOTAL SCORE
1420 G=18:​GOSUB 1700:​PRINT "";TS
1430 FOR X=C1 TO 500:​NEXT X:​GOTO 960
1440 REM END GAME
1450 POSITION C2,​15
1460 FOR X=C1 TO C8:​PRINT " ":​NEXT X
1461 IF TS>HSCORE THEN HSCORE=TS
1462 G=20:​GOSUB 1700:​PRINT "";HSCORE
1470 FOR G=-C2 TO 14:​GOSUB 1700
1480 PRINT " ":​NEXT G
1490 POSITION C2,​15:​PRINT "PLAY AGAIN (Y OR N) ?"
1500 GET #C1,​R
1510 IF R=ASC("Y") THEN 90
1520 IF R<>ASC("N") THEN 1500
1530 END
1540 REM SUB TO INC COORDINATES IN DIR
1550 ON D GOTO 1560,​1570,​1580,​1590,​1600,​1610,​1620,​1630
1560 Y=Y-C1
1570 X=X+C1:​RETURN
1580 X=X+C1
1590 Y=Y+C1:​RETURN
1600 Y=Y+C1
1610 X=X-C1:​RETURN
1620 X=X-C1
1630 Y=Y-C1:​RETURN
1640 REM SUB FOR BOT TOP/BOTTOM
1650 PRINT "";:​IF Y=C1 THEN PRINT "";:​GOTO 1670
1660 PRINT "";
1670 FOR X=C0 TO S-C1:​PRINT "";:​NEXT X:​IF Y=C1 THEN PRINT "":​RETURN
1680 PRINT "":​RETURN
1690 REM SUB TO POSITION
1700 POSITION 20,​G+C2:​RETURN
1710 REM SOUND GENERATOR
1720 SOUND C0,​INT(RND(C0)*255),​C10,​C8:​SOUND C1,​INT(RND(C0)*255),​C10,​C8:​RETURN
1730 REM CLOCK TICK
1740 SOUND C0,​C0,​C4,​14:​I=I+C1:​SOUND C0,​C0,​C0,​C0:​RETURN
1750 REM TICK THE CLOCK WHILE WAITING FOR A KEY
1760 POKE 764,​255:​I=PEEK(20)+256*PEEK(19)
1780 IF PEEK(764)<>255 THEN GET #C1,​KEY:​RETURN
1790 IF PEEK(20)+256*PEEK(19)-I>=60 THEN GOSUB 1740:​GOTO 1760
1800 GOTO 1780
2000 GRAPHICS C2+16:​SETCOLOR 4,​4,​4
2010 POSITION C2,​C3:​? #C6;"W O R D":​GOSUB 2100
2015 POSITION C6,​C7:​? #C6;"W O R D":​GOSUB 2100
2020 POSITION C10+C1,​C3:​? #C6;"H U N T":​GOSUB 2100
2025 POSITION C6,​C10:​? #C6;"H U N T":​GOSUB 2100
2030 FOR I=C2 TO C10+C7:​FOR J=C1 TO C10+C1:​POSITION I,​J:​? #C6;CHR$(INT(RND(0)*26)+65)
2035 SOUND C0,​RND(C0)*150,​C10,​C6:​SOUND C1,​RND(C0)*150,​C10,​C6:​NEXT J:​NEXT I
2040 SOUND C0,​C0,​C0,​C0:​SOUND C1,​C0,​C0,​C0:​GOSUB 2110:​RETURN
2100 SOUND C0,​RND(C0)*150,​C10,​C6:​SOUND C1,​RND(C0)*150,​C10,​C6
2110 FOR I=C0 TO 150:​NEXT I:​RETURN	

This is non-commercial site, its content is based on Atari 8-bit home computer contents and references.
If you feel your rights are violated by showing/using any part of contents of your product represented on this page, please contact me immediatelly so I can remove it!