ZX81 Listing for ttt.p


ZX81 program listing for *TIC-TAC-TOE**SLR/1983*

*TIC-TAC-TOE**SLR/1983* (ttt.p)

A simple tic-tac-toe game. Just enter the number for where you want to move.


SYSTEM VARIABLES

PROG  : 16509
D-FILE: 20556
VARS  : 21349
E-LINE: 21350
STKBOT: 21350
STKEND: 21350


LEGEND

9999 means line number
PRINT means treat as KEYWORD P


PROGRAM LISTING

   1 REM *TIC-TAC-TOE**SLR/1983*
  10 PRINT "IF YOU WISH INSTRUCT
IONS, ENTER YES WHEN YOU SEE ""L
"" APPEAR."
  20 INPUT A$
  30 IF A$="YES" THEN GOTO 60
  40 CLEAR
  50 GOTO 120
  60 CLS
  70 PRINT "TIC-TAC-TOE"
  80 PRINT ,,"YOU ARE TRYING TO 
GET 3 O""S IN AROW WITHOUT LETTI
NG THE COMPUTERGET 3 OF ITS X""S
 IN A ROW."
  90 PRINT ,,"ENTER IN THE NUMBE
R OF THE      SQUARE IN WHICH YO
U WISH TO GO  INSIDE THE """" WH
EN THEY APPEAR.",,,,"GOOD LUCK."
 100 CLEAR
 110 FOR D=1 TO 1000
 114 REM **WAIT**
 118 NEXT D
 120 CLS
 130 PRINT AT 8,8;"1 2 3";TAB 8;
"     ";TAB 8;"4 5 6";TAB 8;"   
  ";TAB 8;"7 8 9";TAB 8;"BY:S.L.
REID"
 140 SLOW
 150 DIM E(9)
 152 DIM B(9)
 156 DIM C(9)
 157 LET S=0
 158 LET T=0
 160 LET A$="080808101010121212"
 165 LET B$="081012081012081012"
 170 FOR W=1 TO 9
 171 LET S=S+2
 175 LET B(W)=VAL B$(S-1 TO S)
 180 NEXT W
 182 FOR V=1 TO 9
 184 LET T=T+2
 190 LET E(V)=VAL A$(T-1 TO T)
 200 NEXT V
 210 FOR A=1 TO 9
 214 LET C(A)=2
 218 NEXT A
 220 INPUT A$
 230 IF A$>"9" AND A$<"0" THEN
GOTO 220
 240 LET Z=VAL A$
 250 IF C(Z)<>2 THEN GOTO 220
 260 LET C(Z)=0
 270 PRINT AT E(Z),B(Z);"O"
 272 FOR D=1 TO 100
 274 NEXT D
 276 FAST
 280 IF C(1)=0 AND (C(2)=0 AND C
(3)=0) THEN GOTO 370
 290 IF C(4)=0 AND (C(5)=0 AND C
(6)=0) THEN GOTO 370
 300 IF C(7)=0 AND (C(8)=0 AND C
(9)=0) THEN GOTO 370
 310 IF C(1)=0 AND C(4)=0 AND C(
7)=0 THEN GOTO 370
 320 IF C(2)=0 AND C(5)=0 AND C(
8)=0 THEN GOTO 370
 330 IF C(3)=0 AND C(6)=0 AND C(
9)=0 THEN GOTO 370
 340 IF C(1)=0 AND C(5)=0 AND C(
9)=0 THEN GOTO 370
 350 IF C(7)=0 AND C(5)=0 AND C(
3)=0 THEN GOTO 370
 360 GOTO 450
 370 LET P$="<*YOU WIN*>"
 375 PRINT AT 3,3;"TIC-TAC-TOE";
TAB 3;P$;TAB 3;"DO YOU WISH";
TAB 3;"ANOTHER GAME <Y/N>""F"""
 376 SLOW
 380 IF INKEY$="Y" THEN GOTO 420
 390 IF INKEY$<>"N" THEN GOTO 38
0
 400 CLS
 410 STOP
 420 PRINT AT 6,22;"YF"""
 430 IF INKEY$="" THEN GOTO 430
 435 CLS
 440 RUN
 450 FOR A=1 TO 0 STEP -1
 451 IF C(1)=2 AND (((C(2)=A
AND C(3)=A) OR (C(5)=A OR C(9)=
A) OR C(4)=A AND C(7)=A)) THEN
GOTO 680
 460 IF C(2)=2 AND ((C(1)=A AND
C(3)=A) OR (C(5)=A AND C(8)=A))
THEN GOTO 700
 470 IF C(3)=2 AND (((C(1)=A
AND C(2)=A) OR (C(5)=A AND C(7)
=A)) OR (C(6)=A AND C(9)=A))
THEN GOTO 720
 480 IF C(6)=2 AND ((C(3)=A AND
C(9)=A) OR (C(4)=A AND C(5)=A))
THEN GOTO 740
 490 IF C(9)=2 AND (((C(6)=A
AND C(3)=A) OR (C(8)=A AND C(7)
=A)) OR (C(1)=A AND C(5)=A))
THEN GOTO 760
 500 IF C(8)=2 AND ((C(2)=A AND
C(5)=A) OR (C(7)=A AND C(8)=A))
THEN GOTO 780
 510 IF C(7)=2 AND (((C(1)=A
AND C(4)=A) OR (C(3)=A AND C(5)
=A)) OR (C(8)=A AND C(9)=A))
THEN GOTO 800
 520 IF C(4)=2 AND ((C(1)=A AND
C(7)=A) OR (C(5)=A AND C(6)=A))
THEN GOTO 820
 530 NEXT A
 540 LET M=0
 550 FOR D=1 TO 9
 560 IF C(D)<>2 THEN LET M=M+1
 570 NEXT D
 580 IF M=9 THEN GOTO 920
 590 IF C(5)=2 THEN GOTO 660
 600 LET R=INT (9*RND)+1
 610 IF C(R)=2 THEN GOTO 630
 620 GOTO 600
 630 LET C(R)=1
 640 PRINT AT E(R),B(R);"X"
 650 GOTO 840
 660 LET R=5
 670 GOTO 630
 680 LET R=1
 690 GOTO 630
 700 LET R=2
 710 GOTO 630
 720 LET R=3
 730 GOTO 630
 740 LET R=6
 750 GOTO 630
 760 LET R=9
 770 GOTO 630
 780 LET R=8
 790 GOTO 630
 800 LET R=7
 810 GOTO 630
 820 LET R=4
 830 GOTO 630
 840 IF ((C(1)=1 AND C(2)=1)
AND C(3)=1) OR ((C(4)=1 AND C(5
)=1) AND C(6)=1) THEN GOTO 890
 850 IF ((C(7)=1 AND C(8)=1)
AND C(9)=1) OR ((C(1)=1 AND C(4
)=1) AND C(7)=1) THEN GOTO 890
 860 IF ((C(2)=1 AND C(5)=1)
AND C(8)=1) OR ((C(3)=1 AND C(6
)=1) AND C(9)=1) THEN GOTO 890
 870 IF ((C(1)=1 AND C(5)=1)
AND C(9)=1) OR ((C(7)=1 AND C(5
)=1) AND C(3)=1) THEN GOTO 890
 880 GOTO 220
 890 LET P$="<**I WON**>"
 900 PRINT AT 0,0;"HA/HA/**YOU L
OST"
 910 GOTO 375
 920 LET P$="<***TIE***>"
 930 GOTO 375
1000 SAVE "TTT"
1010 RUN