home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1984-11-10 | 18.1 KB | 501 lines |
- 1 ' TIC TAC GO!
- 2 '
- 3 'CONCEPT: RON DUBREN
- 4 'IMPLEMENTATION: PETER SCHLAIFER
- 5 'PUBLISHER: ZIFF/DAVIS|PC DISK MAGAZINE
- 6 'COPYRIGHT: 1984 ZIFF/DAVIS MAGAZINES
- 7 '
- 29 GOTO 1000
- 30 CLS
- 31 XFLAG%=1
- 50 ESC$=CHR$(27)
- 51 C="CSRLININKEY$ <0xDF!>BEEPUSINGPOINTWHILEWENDLINEOFFVARPTRCOLORCLS'<UNK! {FE22}>
- 52 '
- 70 GOSUB 3600 'OPENERS...
- 71 GOTO 5000
- 1000 KEY OFF:SCREEN 0,0,0:WIDTH 80:COLOR 7:LOCATE ,,0:'NUMLOCK POKE
- 1005 DEF SEG = &H40:POKE &H17,PEEK(&H17) OR 32 'NUMLOCK POKE
- 1010 CLEAR ,,2000
- 1020 GOSUB 1050
- 1030 GOTO 30
- 1040 '
- 1050 DEFINT I-Q:DEFSTR A-H,R-Z:DEFSNG U
- 1060 DEF FNA(X)=X+STRING$(LEN(X),29)+CHR$(31) 'BACK TAB,LF
- 1070 DEF FNB(X)=FNA(LEFT$(X+X+X,PZ+PZ)) 'MAKE ROW OF X
- 1080 DEF FNC(X)=LEFT$(X+X+X+X+X+X,PZ*LEN(X)) 'BLOCK FROM ROW
- 1090 DEF FND(X)=LEFT$(X,LEN(X)-PZ-PZ-1) 'TRIM BLOCK
- 1100 DEF FNE(X)=FND(FNC(FNB(X))) 'BLOCK OF X
- 1110 '
- 1120 PZ=3 'PATTERN SIZE
- 1130 NT=10 'TIMED RESPONSE
- 1140 UF=50 'DELAY FACTOR
- 1150 CP="CSRLINCSRLIN " 'PATTERN CHARS
- 1160 FMT=CHR$(31)+STRING$(2,28)+"&" 'CELL OFFSET
- 1170 '
- 1180 X=FNA(STRING$(4,219)):X=X+X+X+X+X '10 SEC TIMER
- 1190 TMR=X+X:TICK=FNA(STRING$(4,32))
- 1200 '
- 1210 N=20:DIM G(N),LR(N),LC(N),LP(N) 'ROW,COL,& PTR
- 1220 DIM M(N),P(N) 'MATCH & PATTER
- 1230 DIM R(4),T(10) 'ROW & TUNE
- 1240 '
- 1250 G(18)=" "+STRING$(14,196):X=FNA(CHR$(179)) 'GRID MARKS
- 1260 G(19)=FNA(" ")+X+X+X+X+X+X
- 1270 '
- 1280 T(0)="MBMNO3T120" 'TUNE PARAMS
- 1290 T(1)="L16FF+BBFF+B2" 'BEG OF ROUND
- 1300 T(2)="L64BB-AA-GG-FEE-DD-BBD-D-" 'LOSS OF LIFE
- 1310 T(3)="L64FEFEFEFEFEFEFEFEFE" 'NO ANSWER
- 1320 T(4)="L64DGBP8DGBP8GB8" 'CORRECT ANSWER
- 1330 T(5)="L32DGDGDGDG8" 'MADE GOALSCORE
- 1340 T(6)=T(5) 'GET A LIFE
- 1350 T(7)="L16DGDG8" 'BEG OF DEAL
- 1360 '
- 1370 DATA " ROUND",1,3,1
- 1380 DATA " DEAL",1,9,1
- 1390 DATA " GAMESCORE",1,18,0
- 1400 DATA "ROUNDSCORE",1,33,0
- 1410 DATA " GOALSCORE",1,48,50
- 1420 DATA " LIVES",1,63,3
- 1430 DATA " BONUS",1,74,400
- 1440 '
- 1450 FOR J = 11 TO 17:READ G(J),LR(J),LC(J),LP(J):NEXT
- 1460 '
- 1470 N=255*VAL(MID$(TIME$,4,2)) 'RANDOMIZE
- 1480 RANDOMIZE N
- 1490 '
- 1500 FOR J = 0 TO 15:P(J)=J:NEXT 'SHUFFLE PATS
- 1510 N=7:WHILE N>0:FOR I = N TO 15:FOR J = I-N TO 0 STEP -1
- 1520 IF RND>=0.5 THEN SWAP P(J),P(J+N) ELSE J=-1
- 1530 NEXT J,I:N=N\2:WEND
- 1540 '
- 1550 FOR J = 0 TO 9:LP(J)=J:NEXT 'SHUFFLE GRID
- 1560 N=3:WHILE N>0:FOR I = N TO 8:FOR J = I-N TO 0 STEP -1
- 1570 IF RND>=0.5 THEN SWAP LP(J),LP(J+N) ELSE J=-1
- 1580 NEXT J,I:N=N\2:WEND
- 1590 '
- 1600 RETURN
- 1610 '
- 2000 IF PZ=LP(19) THEN RETURN ELSE LP(19)=PZ 'INIT PZ
- 2010 P=4:ON PZ-1 GOTO 2020,2030,2040,2050,2060 'TOP ROW
- 2020 P=P+6:GOTO 2060
- 2030 P=P+4:GOTO 2060
- 2040 P=P+3:GOTO 2060
- 2050 P=P+1
- 2060 LR(6)=P:LR(7)=P:LR(8)=P:P=P+PZ+1
- 2070 LR(3)=P:LR(4)=P:LR(5)=P:P=P+PZ+1
- 2080 LR(0)=P:LR(1)=P:LR(2)=P
- 2090 '
- 2100 P=41-PZ*3 'LEFT COLUMN
- 2110 LC(6)=P:LC(3)=P:LC(0)=P:P=P+PZ+PZ+3
- 2120 LC(7)=P:LC(4)=P:LC(1)=P:P=P+PZ+PZ+3
- 2130 LC(8)=P:LC(5)=P:LC(2)=P
- 2140 '
- 2150 LR(9)=LR(3):LC(9)=8-PZ 'TARGET
- 2160 '
- 2170 X=LEFT$(G(18),PZ+PZ+3):Y=LEFT$(G(19),PZ+PZ+PZ+3) 'GRID OUTLINE
- 2180 TAC=X+X+X:TOE=Y+Y+Y
- 2190 Z=STRING$(PZ+PZ+3,29)+STRING$(PZ+1,30)
- 2200 TIC=X+Y+Z+Y+X
- 2210 '
- 2220 RUBOUT=FNE(" "):SOLID=FNE("CSRLINCSRLINCSRLINCSRLIN")
- 2230 RETURN 'END OF INIT PZ
- 2240 '
- 2250 DATA 10,8,6,4,4,3,3,3,3,2,0
- 2260 READ NT:IF NT=0 THEN RESTORE 2250:GOTO 2260
- 2270 G(10)=LEFT$(TMR,NT*9-5) 'MAKE TIMER
- 2280 LR(10)=(LR(3)+LR(0))\2-NT\2+1:LC(10)=76 '& PLACE IT
- 2290 RETURN
- 2300 '
- 2350 N=INT(RND*16) 'CUT
- 2360 FOR J = 0 TO 15:P(J)=(3*(P(J)+N)) MOD 16:NEXT '& SHUFFLE P()
- 2370 RETURN
- 2380 '
- 2390 N=4^(PZ-2):FOR IG = 0 TO 8:GOSUB 2420:NEXT:RETURN 'FILL G(0...8)
- 2400 '
- 2410 N=4^(PZ-2):IG=9 'MAKE NOMATCH
- 2420 I=P(IG) 'MAKE G(P(IG))
- 2421 IF I=0 AND NB=0 THEN I=P(15) 'TO AVOID
- 2422 I=I*N+INT(RND*N) 'BLANK CELLS
- 2430 X="":FOR J = 1 TO PZ:X=X+R(I MOD 4):I=I\4:NEXT
- 2440 G(IG)=FND(X):RETURN
- 2460 '
- 2470 GOSUB 2350:GOSUB 2390:RETURN 'INIT G(0...8)
- 2480 '
- 3000 LOCATE LR(IG),LC(IG):PRINT USING "&";G(IG);:RETURN 'PRINT DIRECT
- 3010 LOCATE LR(LP(IG)),LC(LP(IG)):PRINT USING FMT;G(IG);:RETURN 'PRINT INDIRECT
- 3020 LOCATE LR(IG),LC(IG):PRINT USING "&";X;:RETURN 'PRINT X
- 3030 LOCATE LR(IG),LC(IG):PRINT USING FMT;RUBOUT;:RETURN 'DIRECT R/O
- 3040 LOCATE LR(LP(IG)),LC(LP(IG)):PRINT USING FMT;RUBOUT;:RETURN'INDIRECT R/O
- 3050 '
- 3060 GOSUB 3170 'PRINT LABELS,
- 3070 X=TIC:IG=9:GOSUB 3020:X=TAC:IG=3:GOSUB 3020:IG=0 'GRID,
- 3080 GOSUB 3020:X=TOE:IG=7:GOSUB 3020:IG=8:GOSUB 3020 '&
- 3090 IG=10:GOSUB 3000:RETURN 'TIMER
- 3100 '
- 3110 GOSUB 3000 'PRINT LABEL
- 3120 X=CHR$(31)+SPACE$(LEN(G(IG))):Y=STR$(LP(IG)) 'FORMAT &
- 3130 MID$(X,LEN(X)\2-LEN(Y)\2+2)=Y:GOSUB 3020:RETURN 'PRINT SCORE
- 3140 '
- 3150 FOR IG = 0 TO 8:GOSUB 3010:NEXT:RETURN 'PRINT G(0...8)
- 3160 FOR IG = 11 TO 17:GOSUB 3120:NEXT:RETURN 'PRINT SCORES
- 3170 FOR IG = 11 TO 17:GOSUB 3000:NEXT:RETURN 'PRINT LABELS
- 3180 '
- 3190 FOR IG = 11 TO 17:GOSUB 3110:NEXT:RETURN 'PRINT L & S
- 3200 '
- 3210 FOR IG = 0 TO 8 'FADE TO
- 3220 N=LP(IG) 'P,Q,& T
- 3230 IF N<>QM AND N<>PM THEN GOSUB 3040
- 3240 NEXT:RETURN
- 3250 '
- 3260 IG=9:GOSUB 3030:IG=PM:GOSUB 3030 'FADE P,T,& Q
- 3270 IF QM<>PM AND QM>-1 AND QM<9 THEN IG=QM:GOSUB 3030
- 3280 RETURN
- 3290 '
- 3300 IG=0:WHILE LP(IG)<>QM:IG=IG+1:WEND 'HILITE Q<>T
- 3310 COLOR 15:GOSUB 3010:COLOR 7
- 3320 RETURN
- 3330 '
- 3340 IG=9:COLOR 31:GOSUB 3010:COLOR 7:RETURN 'HILITE Q=T
- 3350 '
- 3360 USECS=0.15:GOSUB 3440:IG=9:COLOR 15:GOSUB 3010:COLOR 7 'TURN OFF BLINK
- 3370 RETURN
- 3380 '
- 3390 LOCATE LR(10)+NT-NL,LC(10) 'CLEAR TIMER
- 3400 FOR J = 1 TO NL:PRINT USING "&";TICK;:NEXT
- 3410 RETURN
- 3420 '
- 3430 DEF SEG:POKE 106,0:DEF SEG = 0:POKE 1050,PEEK(1052):RETURN 'CLEAR KEYBUF
- 3440 FOR U = 1 TO USECS*1050:NEXT:RETURN 'WAIT USECS
- 3450 '
- 3460 COLOR 15:IG=16:GOSUB 3110:COLOR 7:RETURN 'HILIGHT LIVES
- 3470 '
- 3480 IG=13:GOSUB 3120 'UPDATE GAMESC
- 3490 COLOR 15:IG=14:GOSUB 3120:COLOR 7 'HILITE RNDSC
- 3500 RETURN
- 3510 '
- 3520 RETURN
- 3530 '
- 3540 COLOR 15 'HILIGHT
- 3550 IG=14:GOSUB 3110 'ROUND
- 3560 IG=15:GOSUB 3110 '& GOAL SCORES
- 3570 COLOR 7
- 3580 RETURN
- 3590 '
- 3600 GOSUB 2000:GOSUB 2250 'OPENERS...
- 3610 CLS:GOSUB 3060 'DISPLAY IT
- 3620 I=LR(3)+(PZ+1)\2:J=LC(3)+PZ
- 3630 PLAY T(0):PLAY T(1)
- 3640 COLOR 15:LOCATE I,J:PRINT "TIC";
- 3650 J=J+2*PZ+3:LOCATE I,J:PRINT "TAC";
- 3660 J=J+2*PZ+3:LOCATE I,J:PRINT "GO!"
- 3670 GOSUB 3090 'HILITE TIMER
- 3680 USECS=0.2:X=TICK:LOCATE LR(10),LC(10)
- 3690 FOR J = 1 TO NT:GOSUB 3440:PRINT USING "&";TICK;:NEXT
- 3700 IG=9:G(IG)=SOLID:GOSUB 3010
- 3710 PLAY T(2)
- 3720 USECS=0.8:GOSUB 3440
- 3730 COLOR 7
- 3740 'FOR IG = 0 TO 9:GOSUB 3030:NEXT
- 3745 REM************************************INSERT SOUND OFF OPTION HERE*****
- 3746 REM************ IF SOUND_OFF THEN FOR J = 0 TO 7:T(J)="":NEXT
- 3750 RETURN
- 3760 '
- 4000 GOSUB 3430 'CLEAR BUFFERS
- 4010 COLOR 7:GOSUB 3190 'LOLITE L & S
- 4020 PLAY T(7)
- 4030 COLOR 15:IG=12:GOSUB 3120:COLOR 7 'HILITE DEAL
- 4040 GOSUB 3150 'PRINT G(0...8)
- 4050 'USECS=.5:GOSUB 3400 'READY...
- 4060 IG=9:GOSUB 3010 'PRINT TARGET
- 4070 COLOR 15:IG=10:GOSUB 3090:COLOR 7 'HILITE TIMER
- 4080 NL=NT:QM=-1:LOCATE LR(10),LC(10) 'SET...
- 4090 USECS=0.5:GOSUB 3440:USECS=1
- 4100 WHILE NL>0 AND QM=-1 'GO...
- 4110 '
- 4120 PRINT USING "&";TICK;
- 4130 FOR U = 1 TO UF
- 4140 X=INKEY$
- 4150 IF X<="9" AND X>="1" THEN QM=VAL(X)-1:GOSUB 3300'HILITE Q
- 4160 IF NM AND (X="0") THEN QM=9:GOSUB 3340 'HILITE Q
- 4165 IF X="Q" OR X="q" THEN QM=86
- 4166 IF X=ESC$ THEN QM=101
- 4170 IF QM<>-1 THEN U=UF
- 4180 NEXT
- 4190 '
- 4200 NL=NL-1
- 4210 WEND
- 4220 '
- 4230 IF QM=PM THEN PLAY T(4) ELSE IF QM=-1 THEN PLAY T(3) ELSE PLAY T(2)
- 4240 '
- 4250 GOSUB 3210 'FADE TO Q
- 4260 IF QM=9 THEN GOSUB 3360 'STOP BLINK
- 4270 IF QM<>PM THEN IG=M(LP(12)):GOSUB 3010 'FADE IN P
- 4275 COLOR 15: IG=9: GOSUB 3010: COLOR 7 'HILITE TARGET
- 4280 IF QM=-1 OR QM=PM THEN 4340 'SCORE QM
- 4290 '
- 4300 LP(16)=LP(16)-1 'LOSE A LIFE
- 4310 GOSUB 3460 'RUB IT IN
- 4320 RETURN
- 4330 '
- 4340 N=0:IF QM=PM THEN N=50 'CORRECT ANSWER
- 4350 IF PM<>9 THEN 4360
- 4351 IF PM=QM THEN N=100
- 4352 IF QM=-1 THEN N=-50
- 4360 J=0:IF QM=PM THEN J=NL*LP(17) 'BONUS
- 4370 LP(14)=LP(14)+N+J:LP(13)=LP(13)+N+J 'UPDATE SCORES
- 4380 GOSUB 3480 'HILITE SCORES
- 4390 '
- 4400 IF TR="" OR LP(14)<LP(15) THEN 4450
- 4410 PLAY TR:TR="" 'MADE GOALSCORE
- 4420 COLOR 15:IG=14:GOSUB 3110 'HILITE GOAL
- 4430 IG=15:GOSUB 3110:COLOR 7 '& RNDSCORE
- 4440 '
- 4450 IF LP(13)<LP(18) THEN RETURN
- 4460 '
- 4470 LP(16)=LP(16)+1:LP(18)=LP(18)+2000 'GET A LIFE
- 4480 PLAY "P2":PLAY T(6):GOSUB 3460 'HILITE IT
- 4490 IF LP(18)<25000 THEN RETURN
- 4500 '
- 4510 LP(18)=2000:LP(13)=LP(13) MOD 2000 'OVERFLOW
- 4520 RETURN 'END OF DEAL
- 4530 '
- 4540 '
- 5000 PM=-1:LP(14)=0:LP(15)=0:LP(16)=0
- 5010 WHILE LP(14)>=LP(15) AND LP(16)>=0
- 5020 '
- 5030 GOSUB 5500 'INIT GAME/ROUND
- 5040 WHILE LP(12)<=M(16) AND LP(16)>=0
- 5050 '
- 5060 GOSUB 5860 'INIT DEAL
- 5070 GOSUB 4000 'PLAY & SCORE IT
- 5075 IF QM=86 THEN 5000
- 5076 IF QM=101 THEN 9000 'EXIT GAME
- 5080 USECS=1.3:GOSUB 3440
- 5090 GOSUB 3260 'FADE P & T
- 5100 GOSUB 3390 'CLEAR TIMER
- 5110 GOSUB 3190 'LOLITE SCORES
- 5120 ' USECS=.5:GOSUB 3400 'AND FADE...
- 5130 LP(12)=LP(12)+1
- 5140 WEND
- 5150 WEND
- 5160 '
- 5170 PLAY T(1)
- 5180 COLOR 15:IG=13:GOSUB 3110:COLOR 7 'HILITE GAME SCORE
- 5190 GOTO 5000
- 5200 '
- 5500 IF PM<>-1 THEN 5650 'INIT GAME/ROUND
- 5510 PLAY T(0) 'INIT SOUNDS
- 5514 LOCATE ,,1 'TURN ON CURSOR
- 5515 GOSUB 7000 'INPUT ROUTINE
- 5516 LOCATE ,,0 'TURN CURSOR OFF
- 5520 LOCATE 1,32: COLOR 31
- 5530 PRINT "TIC TAC GO!"
- 5535 COLOR 7
- 5550 GOSUB 2000 'INIT DISPLAY
- 5560 GOSUB 1550 'SHUFFLE DISPLAY
- 5570 LP(11)=0 'ROUND NUMBER
- 5580 LP(13)=0 'GAMESCORE
- 5590 LP(15)=0 'GOAL SCORE
- 5600 LP(16)=3 'LIVES
- 5610 LP(18)=2000 'GET A LIFE INCREMENT
- 5620 RESTORE 2250 'RESET TIMER SEQUENCE
- 5630 '
- 5650 LP(11)=LP(11)+1 'ROUND NUMBER
- 5660 LP(12)=1 'DEAL NUMBER
- 5670 LP(14)=0 'ROUND SCORE
- 5680 LP(15)=LP(15)+50 'GOAL SCORE
- 5690 GOSUB 2260 'SET TIMER (NT)
- 5700 LP(17)=5*((LP(15)\(8*NT))\5) 'SET UNIT BONUS
- 5710 TR=T(5) 'RND>=GOAL TUNE
- 5720 GOSUB 6500 'INIT R()
- 5730 GOSUB 2470 'INIT G(0...8)
- 5740 GOSUB 5970 'INIT M()
- 5750 IF PM<>-1 THEN 5780
- 5760 CLS:GOSUB 3060 'REDRAW BOARD
- 5770 COLOR 15:GOSUB 3090:COLOR 7 'HILITE TIMER
- 5780 PLAY T(1) 'AVANTI...
- 5800 COLOR 7:GOSUB 3190 'LO-LITE SCORES
- 5810 COLOR 15:IG=13:GOSUB 3110 'HILITE GAME &
- 5820 IG=15:GOSUB 3110:COLOR 7 '& GOAL SCORES
- 5830 USECS=1.5:GOSUB 3440 'HOLD...
- 5840 RETURN
- 5850 '
- 5860 IF NW=0 AND LP(12)>1 THEN G(M(LP(12)-1))="" 'INIT DEAL
- 5870 IF NW THEN GOSUB 5930 'SHUFFLE DISPLAY
- 5880 PM=M(LP(12)):G(9)=G(PM) 'SET LOGICAL MATCH
- 5890 IF PM=9 THEN GOSUB 2410 'CONSTRUCT NOMATCH
- 5900 PM=LP(PM) 'BOARD INDEX - 1
- 5910 RETURN
- 5920 '
- 5930 N=INT(RND*9) 'QSHUF LP(0...8)
- 5940 FOR J = 0 TO 8:LP(J)=(2*(LP(J)+N)) MOD 9:NEXT
- 5950 RETURN
- 5960 '
- 5970 P=8 'INIT M() (NM)
- 5980 IF NM THEN P=P+INT(RND*8) 'NOMATCHES
- 5990 FOR J = 0 TO 8:M(J)=J:M(J+7)=9:NEXT
- 6000 N=P\2:WHILE N>0:FOR I = N TO P:FOR J = I-N TO 0 STEP -N
- 6010 IF RND>=0.5 THEN SWAP M(J),M(J+N) ELSE J=-1
- 6020 NEXT J,I:N=N\2:WEND
- 6030 '
- 6040 M(16)=P
- 6050 RETURN
- 6052 '
- 6440 '
- 6500 IF NV=0 AND PM>-1 THEN RETURN 'NO CHANGE
- 6505 X=" ":CP=C
- 6510 IF NB=0 THEN 6550
- 6520 N=176+INT(RND*48) 'SET NO-BLANK
- 6530 X=CHR$(N)
- 6540 '
- 6550 N=0
- 6551 Y=MID$(CP,P(N)+1,1):N=(N+1) MOD 16:IF Y=X THEN 6551
- 6552 Z=MID$(CP,P(N)+1,1):N=(N+1) MOD 16:IF Z=X OR Z=Y THEN 6552
- 6553 '
- 6555 IF LV<3 THEN LV=INT(RND*3)+1
- 6560 ON LV GOTO 6570,6580,6590,6600,6610
- 6570 X=X+X:Y=Y+Y:GOTO 6650 'LV=1
- 6580 Y=Y+X:X=X+X:GOTO 6650 'LV=2
- 6590 Z=X:X=X+Y:Y=Y+Z:GOTO 6650 'LV=3
- 6595 '
- 6600 X=X+Y:Y=Y+Z:GOTO 6650 'LV=4
- 6610 X=Y+X:Y=Z+MID$(CP,P(2)+1,1) 'LV=5
- 6620 '
- 6650 R(0)=FNB(X+X):R(1)=FNB(X+Y)
- 6660 R(2)=FNB(Y+X):R(3)=FNB(Y+Y)
- 6670 RETURN
- 6680 '
- 6700 GOSUB 6060:GOSUB 6500:GOSUB 2470
- 6710 CLS:GOSUB 3150:GOTO 6700
- 6720 '
- 6800 LOCATE 22,4:PRINT "PZ,LV,MD,NV,NB,NM,NW"
- 6810 PRINT " ";PZ-1;LV;MD+1;NV+1;NB+1;NM+1;NW+1
- 6820 RETURN
- 6830 '
- 7000 CLS 'USER INTERFACE
- 7010 LOCATE 1,32
- 7020 COLOR 15
- 7030 PRINT "TIC TAC GO!"
- 7040 COLOR 7
- 7050 LOCATE 4,1
- 7060 PRINT " To set options: press indicated key. Any other key will default"
- 7070 PRINT "option to value it had previously. Typing Q or q will immediately"
- 7080 PRINT "start a new game. <ESC> will exit game and return to BASIC"
- 7090 '
- 7100 GOSUB 7170
- 7110 PRINT " 1=SMALL 2=MEDIUM 3=LARGE 4=JUMBO 5=COLOSSAL ";
- 7120 GOSUB 3430 'CLEAR KEY BUF
- 7130 X=INPUT$(1): N=VAL(X)+1: IF N>1 AND N<7 THEN PZ=N
- 7140 IF X="Q" OR X="q" THEN RETURN
- 7145 IF X=ESC$ THEN 9000
- 7150 GOSUB 7170: GOTO 7260
- 7160 '
- 7170 LOCATE 9,1: PRINT SPACE$(79)
- 7180 LOCATE 9,1: PRINT "Pattern size now: ";
- 7190 X=""
- 7200 IF PZ=2 THEN X="SMALL" ELSE IF PZ=3 THEN X="MEDIUM" ELSE IF PZ=4 THEN X="LARGE"
- 7210 IF PZ=5 THEN X="JUMBO" ELSE IF PZ=6 THEN X="COLOSSAL"
- 7220 IF X="" THEN PZ=3:GOTO 7200
- 7230 COLOR 15: PRINT X;: COLOR 7
- 7240 RETURN
- 7250 '
- 7260 GOSUB 7330
- 7270 GOSUB 3430
- 7280 PRINT " Y/N ";:X=INPUT$(1)
- 7290 IF X="y" OR X="Y" THEN NV=1 ELSE IF X="N" OR X="n" THEN NV=0
- 7300 IF X="Q" OR X="q" THEN RETURN
- 7305 IF X=ESC$ THEN 9000
- 7310 GOSUB 7330: GOTO 7410
- 7320 '
- 7330 LOCATE 11,1: PRINT SPACE$(79)
- 7340 LOCATE 11,1: PRINT "Characters used vary from round to round: ";
- 7350 X=""
- 7360 IF NV=0 THEN X="NO" ELSE IF NV=1 THEN X="YES"
- 7370 IF X="" THEN NV=1: GOTO 7360
- 7380 COLOR 15: PRINT X;: COLOR 7
- 7390 RETURN
- 7400 '
- 7410 GOSUB 7480
- 7420 GOSUB 3430
- 7430 PRINT " 1=BEGINNER 2=ADVANCED ";:X=INPUT$(1): N=VAL(X)-1
- 7440 IF N>=0 AND N<=1 THEN NB=N
- 7450 IF X="Q" OR X="q" THEN RETURN
- 7455 IF X=ESC$ THEN 9000
- 7460 GOSUB 7480: GOTO 7550
- 7470 '
- 7480 LOCATE 13,1: PRINT SPACE$(79)
- 7490 LOCATE 13,1: PRINT "Ability level: ";:X=""
- 7500 IF NB=0 THEN X="BEGINNER" ELSE IF NB=1 THEN X="ADVANCED"
- 7510 IF X="" THEN NB=0: GOTO 7500
- 7520 COLOR 15: PRINT X;: COLOR 7
- 7530 RETURN
- 7540 '
- 7550 GOSUB 7620
- 7560 GOSUB 3430
- 7570 PRINT " 1=EASY 2=MEDIUM 3=HARD ";: X=INPUT$(1): N=VAL(X)
- 7580 IF N=1 THEN LV=1 ELSE IF N=2 THEN LV=4 ELSE IF N=3 THEN LV=5
- 7590 IF X="Q" OR X="q" THEN RETURN
- 7595 IF X=ESC$ THEN 9000
- 7600 GOSUB 7620: GOTO 7690
- 7610 '
- 7620 LOCATE 15,1: PRINT SPACE$(79)
- 7630 LOCATE 15,1: PRINT "Difficulty level: ";: X=""
- 7640 IF LV>0 AND LV<4 THEN X="EASY" ELSE IF LV=4 THEN X="MEDIUM" ELSE IF LV=5 THEN X="HARD"
- 7650 IF X="" THEN LV=1: GOTO 7640
- 7660 COLOR 15: PRINT X;: COLOR 7
- 7670 RETURN
- 7680 '
- 7690 GOSUB 7750
- 7700 PRINT " Y/N ";: X=INPUT$(1)
- 7710 IF X="Y" OR X="y" THEN NW=1 ELSE IF X="N" OR X="n" THEN NW=0
- 7720 IF X="Q" OR X="q" THEN RETURN
- 7725 IF X=ESC$ THEN 9000
- 7730 GOSUB 7750: GOTO 7820
- 7740 '
- 7750 LOCATE 17,1: PRINT SPACE$(79)
- 7760 LOCATE 17,1: PRINT "No-wipe option selected: ";: X=""
- 7770 IF NW=0 THEN X="NO" ELSE IF NW=1 THEN X="YES"
- 7780 IF X="" THEN NW=0: GOT 8020
- 7790 COLOR 15: PRINT X;: COLOR 7
- 7800 RETURN
- 7810 '
- 7820 GOSUB 7890
- 7830 GOSUB 3430
- 7840 PRINT " Y/N ";: X=INPUT$(1)
- 7850 IF X="Y" OR X="y" THEN NM=1 ELSE IF X="N" OR X="n" THEN NM=0
- 7860 IF X="Q" OR X="q" THEN RETURN
- 7865 IF X=ESC$ THEN 9000
- 7870 GOSUB 7890: GOTO 7941
- 7880 '
- 7890 LOCATE 19,1: PRINT SPACE$(79)
- 7900 LOCATE 19,1: PRINT "No-match option selected: ";: X=""
- 7910 IF NM=0 THEN X="NO" ELSE IF NM=1 THEN X="YES"
- 7920 IF X="" THEN NM=0: GOTO 7910
- 7930 COLOR 15: PRINT X;: COLOR 7
- 7940 RETURN
- 7941 IF XFLAG%= 0 THEN GOTO 7960
- 7942 LOCATE 21,1:PRINT SPACE$(79)
- 7943 LOCATE 21,1:PRINT "Turn sound off...(Y/N) ";
- 7944 GOSUB 3430:X$=INPUT$(1)
- 7945 IF X="Q" OR X="q" THEN RETURN
- 7946 IF X=ESC$ THEN 9000
- 7947 IF X$<>"Y" AND X$<>"y" THEN LOCATE 21,1:PRINT SPACE$(77):LOCATE 21,1:PRINT "SOUND";:COLOR 15:PRINT " ON":GOTO 7960
- 7948 LOCATE 21,1:PRINT SPACE$(79)
- 7949 LOCATE 21,1:PRINT "SOUND ";:COLOR 15:PRINT "OFF"
- 7950 '
- 7956 XFLAG%=0:FOR J=0 TO 9:T(J)="":NEXT
- 7960 LOCATE 23,1:PRINT SPACE$(79)
- 7970 LOCATE 23,1: PRINT "Any changes...(Y/N) ";
- 7980 GOSUB 3430
- 7990 X=INPUT$(1)
- 8000 LOCATE 21,1: PRINT SPACE$(79)
- 8010 IF X="Y" OR X="y" THEN 7000
- 8015 IF X=ESC$ THEN 9000
- 8020 RETURN
- 8030 '
- 9000 CLS:PRINT "goodbye...."
- 9010 REM restore function keys, etc
- 9020 END
- 9030 '
-