image of READY prompt

Wang2200.org

Listing of file='TICTAC' on disk='vmedia/games.wvd.zip'

# Sector 381, program filename = 'TICTAC'
0000 GOTO 105
0001 DEFFN'01"DEFFN'"
0002 DEFFN'00"LIST S 100,9999"
0003 DEFFN'02"GOSUB'"
0004 DEFFN'03"MAT"
0005 DEFFN'04"INPUT"
0006 DEFFN'05"REWIND"
0007 DEFFN'06"DATA"
0008 DEFFN'07"LOAD"
0009 DEFFN'08"SAVE"
0010 DEFFN'09"GOTO"
0011 DEFFN'10"SELECT"
0012 DEFFN'11"FOR"
0013 DEFFN'12"TO"
0014 DEFFN'13"STEP"
0015 DEFFN'14"NEXT"
0016 DEFFN'15"CLEAR P100"
0017 DEFFN'16"RENUMBER"
0018 DEFFN'17"RND("
0019 DEFFN'18"ABS("
0020 DEFFN'19"SGN("
0021 DEFFN'20"INT("
0022 DEFFN'21"SKIP"
0023 DEFFN'22"PLOT<"
0024 DEFFN'23"HEX("
0025 DEFFN'24"RETURN"
0026 DEFFN'25"END"
0027 DEFFN'26"STOP"
0028 DEFFN'27"PRINT USING"
0029 DEFFN'28"READ"
0030 DEFFN'29"TRACE"
0031 DEFFN'30
0032 PRINT HEX(03)
   : RETURN
0033 DEFFN'31"CLEAR V"
0100 REM ****** THIS IS THE GAME OF TIC TAC TOE ******
0105 DIM B(3,3),P(8),P1(3,8),I1(9),J1(9),O(9),N$,A$1,P3(8,2)
0110 DIM D$(3,3)3,B$(3,3)3,H$(3)18,H1$(3)32
0115 REM ****** INITIALIZE ARRAYS ******
0120 GOSUB '139
0125 REM ****** TEACH ******
0130 GOSUB '101(N$,F1)
0135 REM ****** BEGIN THE GAME ******
0140 GOSUB '198
0145 REM ****** INPUT OPPONENTS MOVE ******
0150 GOSUB '130(L)
0155 B(I,J)=X2
0160 M=M+1
   : IF M<2 THEN 350
   : GOTO 195
0165 IF M>4 THEN 220
0170 GOSUB '111
   : A$="0"
   : INPUT "IS THAT WHERE YOU MEANT TO PLAY",A$
0175 IF A$="0" THEN 220
   : IF A$="Y" THEN 220
0180 I=I1(L)
   : J=J1(L)
   : B(I,J)=0
   : M=M-1
0185 GOTO 150
0190 REM ****** COMPUTE PATH VALUES ******
0195 GOSUB '140
0200 REM ****** DID HE WIN? ******
0205 GOSUB '150(3*X2,K)
   : IF K=0 THEN 165
0210 GOSUB '199(3)
0215 REM ****** CAN I WIN? ******
0220 GOSUB '150(2*X1,K)
   : IF K=0 THEN 234
0225 GOSUB '206(I,J,K)
   : B(I,J)=X1
   : GOSUB '199(2)
0230 REM ****** CAN HE WIN? ******
0234 IF M>4 THEN 260
0235 GOSUB '150(2*X2,K)
   : IF K=0 THEN 250
0240 GOSUB '206(I,J,K)
   : B(I,J)=X1
   : GOTO 335
0245 REM ****** COUNT ZEROES FOR CAT'S GAME ******
0250 GOSUB '204(N)
0255 IF N<2 THEN 260
   : GOTO 270
0260 GOSUB '199(1)
0265 REM ****** CAN I SCORE-LOCK HIM ******
0270 IF M>4 THEN 306
   : PRINT
   : PRINT "I'M THINKING.  DON'T RUSH ME ";N$
0271 GOSUB '201(I,J,X1,Z)
   : IF I=0 THEN 280
0272 PRINT "I'VE GOT YOU NOW ";N$
   : GOTO 325
0275 REM ****** CAN HE SCORE-LOCK ME ******
0280 GOSUB '201(I,J,X2,Z)
   : IF I=0 THEN 305
0285 F=RND(F*10)
   : IF F>F9 THEN 290
0286 PRINT "HERE COMES YOUR CHANCE.  I'LL CLOSE MY EYES ";N$
0287 GOTO 320
0290 IF P(1)+P(2) =0 THEN 295
   : GOTO 325
0295 IF B(1,2)<>0 THEN 325
   : I=1
   : J=2
   : GOTO 325
0300 REM ****** FIND AN OFFENSIVE MOVE ******
0305 PRINT
   : PRINT "HMMMMM"
0306 IF M<3 THEN 320
0310 GOSUB '203(I,J,Z)
   : IF Z=0 THEN 320
   : GOTO 325
0315 REM ****** PRIORITY MOVE LOGIC ******
0320 GOSUB '205(I,J)
0325 B(I,J)=X1
0330 REM ****** COUNT ZEROES FOR CAT'S GAME ******
0335 GOSUB '204(N)
0340 IF N>1 THEN 150
   : GOSUB '199(1)
0345 REM ****** FIRST MOVE LOGIC ******
0350 IF L=5 THEN 320
0355 I,J=2
   : GOTO 325
0360 F=RND(F*30)
   : IF F>F9 THEN 320
0365 I=1
   : J=2
   : GOTO 325
0370 REM ***************************************************
0375 REM ****** MOVE INPUT ROUTINE *******
0380 DEFFN'130(L)
0385 GOSUB '111
0390 INPUT "YOUR MOVE",L
0395 IF L=100 THEN 480
0400 IF L<100 THEN 420
0405 A$="0"
   : INPUT "YOU WANT ANOTHER GAME, RIGHT",A$
0410 IF A$="0"THEN 485
   : IF A$="Y"THEN 485
0415 GOTO 435
0420 IF L<1 THEN 435
0425 IF L>9 THEN 435
0430 GOTO 450
0435 PRINT "ILLEGAL BLOCK NUMBER.  TRY AGAIN."
0440 INPUT L
0445 GOTO 395
0450 I=I1(L)
   : J=J1(L)
0455 IF B(I,J)=0 THEN 475
0460 PRINT "THAT'S CHEATING.  THAT BLOCK IS TAKEN."
0465 INPUT "TRY AGAIN",L
0470 GOTO 395
0475 RETURN
0480 GOSUB '199(0)
0485 GOSUB '198
0490 REM ****** END DEFFN'130 ******
0495 REM ****** NEW GAME ROUTINE ******
0500 DEFFN'198
0505 X1=1
   : X2=-1
   : M=0
0510 MAT B=ZER
0515 F=RND(10*F)
   : IF F<.5 THEN 150
   : M=M+1
0520 F=RND(10*F)
   : IF F <.5 THEN 535
0525 IF F<.8 THEN 530
   : B(1,2)=X1
   : GOTO 150
0530 B(1,1)=X1
   : GOTO 150
0535 B(2,2)=X1
   : GOTO 150
0540 REM ****** END DEFFN'198
0545 REM ****** PATH VALUE ROUTINE ******
0550 DEFFN'140
0555 FOR K=1 TO 8
0560 P(K)=0
0565 FOR K1=1 TO 3
0570 P2=P1(K1,K)
0575 I=I1(P2)
   : J=J1(P2)
0580 P(K)=P(K)+B(I,J)
0585 NEXT K1
0590 NEXT K
0595 RETURN
0600 REM ****** END DEFFN'140
0605 REM ****** WIN OR LOSE TEST ROUTINE ******
0610 DEFFN'150 (X,K)
0615 FOR K=1 TO 8
0620 IF P(K)=X THEN 635
0625 NEXT K
0630 K=0
0635 RETURN
0640 REM ****** END OF DEFFN'150 ******
0645 REM ****** END OF GAME ROUTINE ******
0650 DEFFN'199(H)
   : IF H=0 THEN 675
0655 GOSUB '111
   : PRINT H$(H),N$
0660 PRINT H1$(H);
   : A$="0"
   : INPUT A$
0665 IF A$="0" THEN 670
   : IF A$="Y" THEN 670
   : GOTO 675
0670 GOSUB '198
0675 PRINT
   : PRINT
   : PRINT "TO PLAY TIC TAC TOE, KEY IN  RUN & RETURN"
0680 STOP
0685 REM ****** END OF DEFFN'199 ******
0690 REM ****** DISPLAY ROUTINE *******
0695 DEFFN'111
0700 GOSUB '30
   : PRINT
   : MAT PRINT B$
   : PRINT
0705 FOR I=1 TO 3
   : FOR J=1 TO 3
   : B=B(I,J)
   : IF B=-1 THEN 710
   : IF B=1 THEN 715
   : D$(I,J)=" - "
   : GOTO 720
0710 D$(I,J)=" X "
   : GOTO 720
0715 D$(I,J)=" O "
0720 NEXT J
   : NEXT I
0725 MAT PRINT D$
0730 RETURN
0735 REM ****** END DEFFN'111 ******
0740 REM ***** FINDS INTERSECTING PATHS = X ******
0745 DEFFN'201 (I,J,X,Z)
0750 FOR K=1 TO 8
0755 IF P(K)=X THEN 760
   : GOTO 800
0760 FOR K1=1 TO 8
   : IF K1=K THEN 795
0765 I=0
0770 IF P3(K,1)=K1 THEN 795
   : IF P3(K,2)=K1 THEN 795
0775 IF P(K1)=X THEN 780
   : GOTO 795
0780 GOSUB '202(K,K1,I,J)
0785 IF B(I,J)=0 THEN 805
0790 I=0
0795 NEXT K1
0800 NEXT K
0805 RETURN
0810 REM ***** END DEFFN'201 ******
0815 REM ***** FINDS COMMON POINT OF PATHS K & K1 ******
0820 DEFFN'202(K,K1,I,J)
0825 IF K=K1 THEN 855
0830 FOR L1=1 TO 3
0835 P=P1(L1,K)
0840 FOR L2=1 TO 3
0845 IF P1(L2,K1)=P THEN 860
0850 NEXT L2
   : NEXT L1
0855 PRINT "ERROR IN DEFFN'202.  K=K1 OR NO INTERSECTION."
   : STOP
0860 I=I1(P)
   : J=J1(P)
0865 RETURN
0870 REM ***** END DEFFN'202
0875 REM ***** FINDS OFFENSIVE MOVE ******
0880 DEFFN'203(I,J,Z)
0885 Z=0
   : FOR K= 1 TO 8
   : IF P(K)=X1 THEN 890
   : GOTO 900
0890 FOR K1 = 1 TO 3
   : P1=P1(K1,K)
   : I=I1(P1)
   : J=J1(P1)
0895 IF B(I,J)=0 THEN 905
   : NEXT K1
0900 NEXT K
   : GOTO 910
0905 Z=1
0910 RETURN
0915 REM ***** END DEFFN'203
0920 REM ****** COUNT ZEROES ROUTINE ******
0925 DEFFN'204 (N)
0930 N=0
   : FOR I=1 TO 3
   : FOR J=1 TO 3
0935 IF B(I,J)=0 THEN 940
   : GOTO 945
0940 N=N+1
0945 NEXT J
   : NEXT I
0950 RETURN
0955 REM ****** END DEFFN'204 ******
0960 REM ****** PRIORITY MOVE ROUTINE ******
0965 DEFFN'205 (I,J)
0970 IF F9=0 THEN 990
0975 F=RND(F*30)
   : G=INT(10*F)
0980 IF G<1 THEN 975
   : IF G>9 THEN 975
0985 I=I1(G)
   : J=J1(G)
   : IF B(I,J)=0 THEN 1010
   : GOTO 975
0990 FOR K=1 TO 9
   : O1=O(K)
0995 I=I1(O1)
   : J=J1(O1)
1000 IF B(I,J)=0 THEN 1010
   : NEXT K
1005 PRINT "ERROR IN DEFFN'205"
   : GOSUB '199(0)
1010 RETURN
1015 REM ****** END DEFFN'205 ******
1020 REM ****** OPEN BLOCK ON GIVEN PATH ROUTINE ******
1025 DEFFN'206(I,J,K)
1030 FOR K1=1 TO 3
   : P2=P1(K1,K)
   : I=I1(P2)
   : J=J1(P2)
1035 IF B(I,J)=0 THEN 1045
   : NEXT K1
1040 PRINT "ERROR IN DEFFN' 206"
   : GOSUB '199(0)
1045 RETURN
1050 REM ****** END DEFFN'206 ******
1055 REM ****** INITIALIZATION ROUTINE *******
1060 DEFFN'139
1065 H$(1)="CAT'S GAME "
   : H$(2)="HA!  I WIN "
1070 H$(3)="I LET YOU WIN "
   : H1$(1)="WANT TO PLAY AGAIN"
1075 H1$(2)="I'LL GIVE YOU ANOTHER CHANCE, OK"
1080 H1$(3)="WANT TO GO DOUBLE OR NOTHING"
1085 B$(1,1)=" 1 "
   : B$(2,1)=" 4 "
   : B$(3,1)=" 7 "
1090 B$(1,2)=" 2 "
   : B$(2,2)=" 5 "
   : B$(3,2)=" 8 "
1095 B$(1,3)=" 3 "
   : B$(2,3)=" 6 "
   : B$(3,3)=" 9 "
1100 I1(1),I1(2),I1(3)=1
   : I1(4),I1(5),I1(6)=2
   : I1(7),I1(8),I1(9)=3
1105 J1(1),J1(4),J1(7)=1
   : J1(2),J1(5),J1(8)=2
   : J1(3),J1(6),J1(9)=3
1110 MAT P3=ZER
1115 P3(7,1)=8
   : P3(7,2)=3
   : P3(8,1)=7
   : P3(8,2)=3
   : P3(3,1)=7
   : P3(3,2)=8
1120 P3(4,1)=5
   : P3(4,2)=6
   : P3(5,1)=4
   : P3(5,2)=6
   : P3(6,1)=4
   : P3(6,2)=5
1125 O(1)=5
   : O(2)=1
   : O(3)=9
   : O(4)=7
   : O(5)=3
   : O(6)=2
   : O(7)=8
   : O(8)=6
   : O(9)    =4
1130 P1(1,7)=1
   : P1(2,7)=2
   : P1(3,7)=3
   : P1(1,8)=4
   : P1(2,8)=5
   : P1(3,8)=6
1135 P1(1,3)=7
   : P1(2,3)=8
   : P1(3,3)=9
   : P1(1,4)=1
   : P1(2,4)=4
   : P1(3,4)=7
1140 P1(1,5)=2
   : P1(2,5)=5
   : P1(3,5)=8
   : P1(1,6)=3
   : P1(2,6)=6
   : P1(3,6)=9
1145 P1(1,1)=1
   : P1(2,1)=5
   : P1(3,1)=9
   : P1(1,2)=3
   : P1(2,2)=5
   : P1(3,2)=7
1150 RETURN
1155 REM ******* END DEFFN'139 **********
1160 REM ****** TEACHER ROUTINE ******
1165 DEFFN'101(N$,F1)
1170 DIM A$1
1175 PRINT HEX(03)
   : SELECT P3
1180 A$="0"
   : INPUT "HELLO.  MY NAME IS WALLY WANG.  WHAT'S YOUR NAME",N$
1185 PRINT "HELLO ";N$;
1190 INPUT ". DO YOU WANT TO PLAY TIC TAC TOE",A$
1195 IF A$="0" THEN 1205
1200 IF A$="Y" THEN 1205
   : PRINT "THEN GET LOST.  THAT'S THE ONLY GAME I KNOW."
   : GOTO 1375
1205 A$="0"
   : INPUT "ME TOO. DO YOU KNOW HOW TO PLAY",A$
1210 IF A$="Y" THEN 1330
   : IF A$="0" THEN 1330
1215 IF A$="N" THEN 1220
   : PRINT "NO YOU DON'T.  I'LL EXPLAIN."
   : GOTO 1225
1220 PRINT "THEN I'LL EXPLAIN IT TO YOU, ";N$
   : PRINT "I'LL GO SLOW SINCE YOU'RE OBVIOUSLY NOT TOO BRIGHT."
1225 PRINT "FROM NOW ON, JUST HIT RETURN FOR YES."
   : A$="0"
1230 INPUT "DO YOU UNDERSTAND",A$
1235 IF A$="0"THEN 1245
   : A$="0"
   : INPUT "YOU DON'T UNDERSTAND.  HIT RETURN FOR YES.",A$
1240 IF A$="0" THEN 1245
   : GOSUB '30
   : PRINT "IF YOU CAN'T WORK MY BUTTONS, YOU'RE TOO DUMB TO PLAY WITH ME,";N$
     ;
   : GOTO 1375
1245 A$="0"
   : PRINT "FOR NO, KEY IN ANYTHING EXCEPT 0 OR A WORD BEGINNING WITH Y AND PU
     SH RETURN."
1250 INPUT "IS YOUR NAME RICHARD NIXON",A$
   : IF A$="0"THEN 1255
   : IF A$="Y"THEN 1255
   : GOTO 1260
1255 PRINT "YES?  THEN YOU'RE A DONCE OR A LIAR, OR BOTH."
   : GOTO 1245
1260 PRINT "ACTUALLY, FOR A YES OR NO RESPONSE, ONLY THE FIRST CHARACTER IS EX
     AMINED.  I WILL EXCEPT A Y OR 0 FOR YES.  ANYTHING ELSE IS NO."
1265 A$="0"
   : INPUT "DO YOU KNOW HOW TO INPUT YOUR CHOICE",A$
1270 IF A$="0"THEN 1330
   : IF A$="Y"THEN 1330
   : PRINT "OK."
1275 L=0
   : FOR I=1TO 3
   : FOR J=1TO 3
   : L=L+1
   : B(I,J)=L
   : NEXT J
   : NEXT I
1280 MAT PRINT B;
   : A$="0"
1285 INPUT "THE BLOCKS ARE NUMBERED AS ABOVE.  OK",A$
1290 IF A$="0" THEN 1300
1295 IF A$="Y" THEN 1300
   : PRINT "ARE YOU THAT DUMB, ";N$;"?"
1300 A$="0"
   : INPUT "YOURS ARE X, MINE ARE O. OK",A$
1305 MAT B=ZER
   : GOSUB '111
1310 INPUT "NOW, PUT AN X IN THE CENTER BY KEYING IN THE BLOCK NO. & RETURN",L
1315 IF L=5 THEN 1320
   : PRINT "YOU ARE REALLY DUMB, ";N$;
   : GOTO 1310
1320 PRINT "GOOD FOR YOU.  YOU CAN END A GAME IN THE MIDDLE BY INPUTING A   BL
     OCK NO. > 100.  A 100 WILL STOP THE PROGRAM."
1325 A$="0"
1330 INPUT "ARE YOU READY TO PLAY",A$
1335 IF A$="0" THEN 1360
   : IF A$="Y" THEN 1360
1340 A$="0"
   : INPUT "DO YOU WANT ME TO REPEAT THE INSTRUCTIONS ",A$
1345 IF A$="0" THEN 1260
   : IF A$="Y" THEN 1260
   : A$="0"
1350 INPUT "DO YOU STILL WANT TO PLAY ",A$
1355 IF A$="0" THEN 1325
   : IF A$="Y" THEN 1325
   : GOTO 1375
1360 A$="0"
   : INPUT "ARE YOU A POOR LOSER",A$
   : IF A$="0" THEN 1365
   : IF A$="Y" THEN 1365
   : F9=0
   : GOTO 1370
1365 F9=.5
   : PRINT "OK, ";N$;", I'LL LET YOU WIN SOME"
   : INPUT A$
1370 SELECT P0
   : GOTO 1385
1375 SELECT P0
   : GOSUB '199(0)
1380 SELECT P0
1385 RETURN
1390 REM ****** END DEFFN'101 *******
1395 SELECT P2
1400 FOR I=1 TO 25
1405 F=RND(F*10)
1410 G=INT(F*10)
1415 PRINT I,F,G
1420 NEXT I
1425 SELECT P0