10 '__________________ 20 ' TICTACKYTOE 30 'BY DIRK A. TJOSSEM 40 ' COPYRIGHT 1982 50 '__ARTSCI, INC.____ 60 ' 70 WIDTH 40,8,1 80 LOCATE 0,0,0 90 CLS 100 DIM BRD(9) 110 PW=0: CW=PW 120 TRUE=1: FALSE=0: EOG=FALSE 130 CLS 140 LOCATE 11,1,0: PRINT " ";PW;" ";CW; 150 LOCATE 11,2,0: PRINT " -- --"; 160 ' DRAW TIC TAC TOE ON LCD SCREEN 170 LINE (0,0)-(119,0),PSET 180 LINE-(119,30),PSET 190 LINE-(0,30),PSET 200 LINE-(0,0),PSET 210 LINE (2,0)-(2,30),PSET 220 LINE (25,0)-(25,30),PSET 230 LINE (35,0)-(35,30),PSET 240 LINE (58,0)-(58,30),PSET 250 LINE (60,0)-(60,30),PSET 260 LINE (62,0)-(62,30),PSET 270 LINE (117,0)-(117,30),PSET 280 LINE (15,10)-(45,10),PSET 290 LINE (15,20)-(45,20),PSET 300 FOR I=1 TO 9: BRD(I)=0: NEXT 310 RANDOMIZE VAL(RIGHT$(TIME$,2)) 320 TURN=INT(RND*100) MOD 2 330 TURN=ABS(TURN)-1 340 IF TURN THEN GOSUB 440 ELSE GOSUB 560 350 GOSUB 720 360 IF EOG<>TRUE GOTO 330 370 IF ABS(WIN)<>3 GOTO 410 380 LOCATE 11,2,0: PRINT "WINNER "; 390 IF WIN=3 THEN PW=PW+1 ELSE CW=CW+1 400 LOCATE 11,1,0: PRINT " ";PW;" ";CW; 410 IF ABS(WIN)<>3 THEN LOCATE 11,2,0: PRINT "THE CAT "; 420 FOR I=1 TO 1500: NEXT: GOTO 120 430 END 440 YM=0 450 I$=INKEY$ 460 YM=YM+1: IF YM>9 THEN YM=1 470 IF BRD(YM)<>0 GOTO 460 480 X=((YM-1) MOD 3)*10+20: Y=INT((YM-1)/3)*10+5 490 PSET(X,Y) 500 I$=INKEY$: IF I$="" GOTO 500 510 IF I$<>CHR$(13) THEN PRESET(X,Y): GOTO 460 520 PRESET(X,Y) 530 LINE(X-2,Y-2)-(X+2,Y+2),PSET: LINE(X-2,Y+2)-(X+2,Y-2),PSET 540 BRD(YM)=1 550 RETURN 560 GOSUB 600: BRD(MM)=-1 570 X=((MM-1) MOD 3)*10+20: Y=INT((MM-1)/3)*10+5 580 LINE(X-1,Y-2)-(X+1,Y-2),PSET: LINE(X-1,Y+2)-(X+1,Y+2),PSET:LINE(X-2,Y-1)-(X-2,Y+1),PSET:LINE(X+2,Y-1)-(X+2,Y+1),PSET 590 RETURN 600 FOR K=-1 TO 1 STEP 2:FOR I=0 TO 2: WIN=0: FOR J=1 TO 3:WIN=WIN+BRD(3*I+J):NEXT J 610 IF WIN=K*2 THEN FOR J=1 TO 3: IF BRD(3*I+J)=0 THEN MM=3*I+J: RETURN ELSE NEXT J 620 NEXT I 630 FOR I=1 TO 3: WIN=0: FOR J=0 TO 2: WIN=WIN+BRD(3*J+I):NEXT J 640 IF WIN=K*2 THEN FOR J=0 TO 2: IF BRD(3*J+I)=0 THEN MM=3*J+I: RETURN ELSE NEXT J 650 NEXT I 660 WIN=BRD(1)+BRD(5)+BRD(9): IF WIN=K*2 THEN FOR J=1 TO 9 STEP 4: IF BRD(J)=0 THEN MM=J:RETURN ELSE NEXT J 670 WIN=BRD(3)+BRD(5)+BRD(7): IF WIN=K*2 THEN FOR I=3 TO 7 STEP 2: IF BRD(I)=0 THEN MM=I: RETURN ELSE NEXT I 680 NEXT K 690 IF (BRD(1) OR BRD(3) OR BRD (7) OR BRD(9)) AND (BRD(5)=0) THEN MM=5: RETURN 700 MM=INT(RND*9)+1: IF BRD(MM)<>0 GOTO700 710 RETURN 720 GOSUB 740 730 RETURN 740 FOR I=0 TO 2: WIN=0: FOR J=1 TO 3: WIN=WIN+BRD(3*I+J):NEXT J 750 IF ABS(WIN)=3 THEN LINE(20,5+10*I)-(40,5+10*I),PSET: EOG=TRUE: RETURN 760 NEXT I 770 FOR I=1 TO 3: WIN=0: FOR J=0 TO 2: WIN=WIN+BRD(3*J+I):NEXT J 780 IF ABS(WIN)=3 THEN LINE(I*10+10,5)-(I*10+10,25),PSET: EOG=TRUE: RETURN 790 NEXT I 800 WIN=BRD(1)+BRD(5)+BRD(9) 810 IF ABS(WIN)=3 THEN LINE(20,5)-(40,25),PSET: EOG=TRUE: RETURN 820 WIN=BRD(3)+BRD(5)+BRD(7) 830 IF ABS(WIN)=3 THEN LINE(40,5)-(20,25),PSET: EOG=TRUE: RETURN 840 FOR I=1 TO 9: IF BRD(I)=0 THEN WIN=255 850 NEXT I 860 IF WIN<>255 THEN EOG=TRUE 870 RETURN